Skip to content

Commit

Permalink
Merge pull request #109 from jvasileff/faster-visitor
Browse files Browse the repository at this point in the history
make Visitor not satisfy WideningTransformer

Commit rebased onto master (redoing the bulk of the patch as described
in the commit message). Also added a commit to update source-gen.
  • Loading branch information
lucaswerkmeister committed Feb 4, 2016
2 parents 8c7506d + eac8359 commit 3fc1045
Show file tree
Hide file tree
Showing 237 changed files with 1,031 additions and 630 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ class ConcreteClassGenerator(
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transform``type``(this);
shared actual void visit(Visitor visitor)
=> visitor.visit``type``(this);
shared actual Boolean equals(Object that) {");
if (nonempty params) {
value optionalParams = params.select((String->String elem) => elem.key.endsWith("?"));
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AddAssignmentOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ shared class AddAssignmentOperation(target, summand)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAddAssignmentOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAddAssignmentOperation(this);

shared actual Boolean equals(Object that) {
if (is AddAssignmentOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AliasDec.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ shared class AliasDec(name, qualifier = DecQualifier())
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAliasDec(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAliasDec(this);

shared actual Boolean equals(Object that) {
if (is AliasDec that) {
return name == that.name && qualifier == that.qualifier;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AndAssignmentOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ shared class AndAssignmentOperation(target, other)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAndAssignmentOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAndAssignmentOperation(this);

shared actual Boolean equals(Object that) {
if (is AndAssignmentOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AndOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ shared class AndOperation(leftOperand, rightOperand)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAndOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAndOperation(this);

shared actual Boolean equals(Object that) {
if (is AndOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Annotation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ shared class Annotation(name, arguments = null)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAnnotation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAnnotation(this);

shared actual Boolean equals(Object that) {
if (is Annotation that) {
if (exists arguments) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Annotations.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ shared class Annotations(anonymousAnnotation = null, annotations = [])
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAnnotations(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAnnotations(this);

shared actual Boolean equals(Object that) {
if (is Annotations that) {
if (exists anonymousAnnotation) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AnonymousArgument.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ shared class AnonymousArgument(expression)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAnonymousArgument(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAnonymousArgument(this);

shared actual Boolean equals(Object that) {
if (is AnonymousArgument that) {
return expression == that.expression;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ArgumentList.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ shared class ArgumentList(listedArguments = [], sequenceArgument = null)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformArgumentList(this);

shared actual void visit(Visitor visitor)
=> visitor.visitArgumentList(this);

shared actual Boolean equals(Object that) {
if (is ArgumentList that) {
if (exists sequenceArgument) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Assertion.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ shared class Assertion(conditions, annotations = Annotations())
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAssertion(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAssertion(this);

shared actual Boolean equals(Object that) {
if (is Assertion that) {
return conditions == that.conditions && annotations == that.annotations;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AssignOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ shared class AssignOperation(target, expression)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAssignOperation(this);
shared actual void visit(Visitor visitor)
=> visitor.visitAssignOperation(this);
shared actual Boolean equals(Object that) {
if (is AssignOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/AssignmentStatement.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ shared class AssignmentStatement(expression)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformAssignmentStatement(this);

shared actual void visit(Visitor visitor)
=> visitor.visitAssignmentStatement(this);

shared actual Boolean equals(Object that) {
if (is AssignmentStatement that) {
return expression == that.expression;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/BaseExpression.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ shared class BaseExpression(nameAndArgs)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBaseExpression(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBaseExpression(this);

shared actual Boolean equals(Object that) {
if (is BaseExpression that) {
return nameAndArgs == that.nameAndArgs;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/BaseMeta.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ shared class BaseMeta(nameAndArgs, packageQualifier = null)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBaseMeta(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBaseMeta(this);

shared actual Boolean equals(Object that) {
if (is BaseMeta that) {
if (exists packageQualifier) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/BaseType.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ shared class BaseType(nameAndArgs, qualifier = null)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBaseType(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBaseType(this);

shared actual Boolean equals(Object that) {
if (is BaseType that) {
if (exists qualifier) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Block.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ shared class Block(content)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBlock(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBlock(this);

shared actual Boolean equals(Object that) {
if (is Block that) {
return content == that.content;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/BooleanCondition.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ shared class BooleanCondition(condition)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBooleanCondition(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBooleanCondition(this);

shared actual Boolean equals(Object that) {
if (is BooleanCondition that) {
return condition == that.condition;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Break.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ shared class Break()
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformBreak(this);

shared actual void visit(Visitor visitor)
=> visitor.visitBreak(this);

shared actual Boolean equals(Object that) {
return that is Break;
}
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CallableConstructorDefinition.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ shared class CallableConstructorDefinition(name, parameters, block, extendedType
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCallableConstructorDefinition(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCallableConstructorDefinition(this);

shared actual Boolean equals(Object that) {
if (is CallableConstructorDefinition that) {
if (exists extendedType) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CallableParameter.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ shared class CallableParameter(type, name, parameterLists, annotations = Annotat
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCallableParameter(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCallableParameter(this);

shared actual Boolean equals(Object that) {
if (is CallableParameter that) {
return annotations == that.annotations && type == that.type && name == that.name && parameterLists == that.parameterLists;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CallableType.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ shared class CallableType(returnType, argumentTypes)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCallableType(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCallableType(this);

shared actual Boolean equals(Object that) {
if (is CallableType that) {
return returnType == that.returnType && argumentTypes == that.argumentTypes;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CaseClause.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ shared class CaseClause(caseItem, block)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCaseClause(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCaseClause(this);

shared actual Boolean equals(Object that) {
if (is CaseClause that) {
return caseItem == that.caseItem && block == that.block;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CaseExpression.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ shared class CaseExpression(caseItem, expression)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCaseExpression(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCaseExpression(this);

shared actual Boolean equals(Object that) {
if (is CaseExpression that) {
return caseItem == that.caseItem && expression == that.expression;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CaseTypes.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ shared class CaseTypes(caseTypes)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCaseTypes(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCaseTypes(this);

shared actual Boolean equals(Object that) {
if (is CaseTypes that) {
return caseTypes == that.caseTypes;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CatchClause.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ shared class CatchClause(variable, block)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCatchClause(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCatchClause(this);

shared actual Boolean equals(Object that) {
if (is CatchClause that) {
return variable == that.variable && block == that.block;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CharacterLiteral.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ shared class CharacterLiteral(text) extends Literal(text) {
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCharacterLiteral(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCharacterLiteral(this);

shared actual Boolean equals(Object that) {
if (is CharacterLiteral that) {
return text == that.text;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClassAliasDefinition.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ shared class ClassAliasDefinition(name, parameters, specifier, caseTypes = null,
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClassAliasDefinition(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClassAliasDefinition(this);

shared actual Boolean equals(Object that) {
if (is ClassAliasDefinition that) {
if (exists caseTypes) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClassBody.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ shared class ClassBody(content)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClassBody(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClassBody(this);

shared actual Boolean equals(Object that) {
if (is ClassBody that) {
return content == that.content;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClassDec.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ shared class ClassDec(name, qualifier = DecQualifier())
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClassDec(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClassDec(this);

shared actual Boolean equals(Object that) {
if (is ClassDec that) {
if (exists qualifier) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClassDefinition.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ shared class ClassDefinition(name, parameters, body, caseTypes = null, extendedT
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClassDefinition(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClassDefinition(this);

shared actual Boolean equals(Object that) {
if (is ClassDefinition that) {
if (exists caseTypes) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClassSpecifier.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ shared class ClassSpecifier(target)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClassSpecifier(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClassSpecifier(this);

shared actual Boolean equals(Object that) {
if (is ClassSpecifier that) {
return target == that.target;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ClosedBound.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ shared class ClosedBound(endpoint)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformClosedBound(this);

shared actual void visit(Visitor visitor)
=> visitor.visitClosedBound(this);

shared actual Boolean equals(Object that) {
if (is ClosedBound that) {
return endpoint == that.endpoint;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CompareOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ shared class CompareOperation(leftOperand, rightOperand)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCompareOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCompareOperation(this);

shared actual Boolean equals(Object that) {
if (is CompareOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/CompilationUnit.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ shared class CompilationUnit(declarations, imports = []) // we *could* provide a
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformCompilationUnit(this);

shared actual void visit(Visitor visitor)
=> visitor.visitCompilationUnit(this);

shared actual Boolean equals(Object that) {
if (is CompilationUnit that) {
return imports == that.imports && declarations == that.declarations;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ComplementAssignmentOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ shared class ComplementAssignmentOperation(target, other)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformComplementAssignmentOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitComplementAssignmentOperation(this);

shared actual Boolean equals(Object that) {
if (is ComplementAssignmentOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ComplementOperation.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ shared class ComplementOperation(leftOperand, rightOperand)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformComplementOperation(this);

shared actual void visit(Visitor visitor)
=> visitor.visitComplementOperation(this);

shared actual Boolean equals(Object that) {
if (is ComplementOperation that) {
return leftOperand == that.leftOperand && rightOperand == that.rightOperand;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Comprehension.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ shared class Comprehension(clause)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformComprehension(this);

shared actual void visit(Visitor visitor)
=> visitor.visitComprehension(this);

shared actual Boolean equals(Object that) {
if (is Comprehension that) {
return clause == that.clause;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Conditions.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ shared class Conditions(conditions)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformConditions(this);

shared actual void visit(Visitor visitor)
=> visitor.visitConditions(this);

shared actual Boolean equals(Object that) {
if (is Conditions that) {
return conditions == that.conditions;
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/Construction.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ shared class Construction(nameAndArgs, arguments, qualifier = null)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformConstruction(this);

shared actual void visit(Visitor visitor)
=> visitor.visitConstruction(this);

shared actual Boolean equals(Object that) {
if (is Construction that) {
if (exists qualifier) {
Expand Down
3 changes: 3 additions & 0 deletions source/ceylon/ast/core/ConstructorDec.ceylon
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ shared class ConstructorDec(name, qualifier)
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformConstructorDec(this);

shared actual void visit(Visitor visitor)
=> visitor.visitConstructorDec(this);

shared actual Boolean equals(Object that) {
if (is ConstructorDec that) {
return name == that.name && qualifier == that.qualifier;
Expand Down
Loading

0 comments on commit 3fc1045

Please sign in to comment.