diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:14:15 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-08 11:15:20 +0000 |
| commit | f276accc32db02896cffc324f55130560df3c282 (patch) | |
| tree | 7e642384f185388f4ee7ea22fa7cf2b0e0faeec9 /src/main/java/org | |
| parent | 95669601271985c89a10d673571dd89133f1e2e8 (diff) | |
Use TypeName in FormalTypeParameterNode
Diffstat (limited to 'src/main/java/org')
5 files changed, 19 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index 745fb64..2342315 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -97,8 +97,7 @@ public class ClassNode implements TypeNode { public ClassNode transform(NodeTransformer transformer) { return new ClassNode( transformer.transform(name), - // TODO: transform - typeParameters, + transformer.transformFormalTypeParameters(typeParameters), transformer.transformTypes(superTypes), transformer.transformFields(fields), // TODO: transform diff --git a/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java b/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java index 4056548..9de6e5d 100644 --- a/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java @@ -1,18 +1,23 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.NodeMapper; +import org.zwobble.couscous.ast.visitors.NodeTransformer; public class FormalTypeParameterNode implements Node { - public static FormalTypeParameterNode formalTypeParameter(String name) { + public static FormalTypeParameterNode formalTypeParameter(TypeName name) { return new FormalTypeParameterNode(name); } - private final String name; + private final TypeName name; - public FormalTypeParameterNode(String name) { + public FormalTypeParameterNode(TypeName name) { this.name = name; } + public FormalTypeParameterNode transform(NodeTransformer transformer) { + return new FormalTypeParameterNode(transformer.transform(name)); + } + @Override public <T> T accept(NodeMapper<T> visitor) { throw new UnsupportedOperationException(); diff --git a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java index 6353a45..e5b876d 100644 --- a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java @@ -72,8 +72,7 @@ public class InterfaceNode implements TypeNode { public InterfaceNode transform(NodeTransformer transformer) { return new InterfaceNode( transformer.transform(name), - // TODO: transform - typeParameters, + transformer.transformFormalTypeParameters(typeParameters), transformer.transformTypes(superTypes), transformer.transformMethods(methods)); } diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java index 5e4d90d..5d0539a 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -220,6 +220,10 @@ public class NodeTransformer { return statement.transform(this); } + public FormalTypeParameterNode transformFormalTypeParameter(FormalTypeParameterNode typeParameter) { + return typeParameter.transform(this); + } + public FormalArgumentNode transformFormalArgument(FormalArgumentNode formalArgumentNode) { return formalArgumentNode.transform(this); } @@ -272,6 +276,10 @@ public class NodeTransformer { return transformList(expressions, this::transformExpression); } + public List<FormalTypeParameterNode> transformFormalTypeParameters(List<FormalTypeParameterNode> typeParameters) { + return transformList(typeParameters, this::transformFormalTypeParameter); + } + public List<FormalArgumentNode> transformFormalArguments(List<FormalArgumentNode> arguments) { return transformList(arguments, this::transformFormalArgument); } diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index 73cf749..7f9d528 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -104,7 +104,7 @@ public class JavaReader { private List<FormalTypeParameterNode> readTypeParameters(TypeDeclaration typeDeclaration) { return eagerMap( asList(typeDeclaration.resolveBinding().getTypeParameters()), - parameter -> formalTypeParameter(parameter.getName())); + parameter -> formalTypeParameter(TypeName.of(parameter.getName()))); } GeneratedClosure readExpressionMethodReference(Scope outerScope, ExpressionMethodReference expression) { |
