aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNode.java3
-rw-r--r--src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java11
-rw-r--r--src/main/java/org/zwobble/couscous/ast/InterfaceNode.java3
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java8
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java2
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) {