diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-09 18:11:17 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-09 18:11:17 +0000 |
| commit | 20dc1e124d606cf4298d5112b6d3c4f6c74e9b68 (patch) | |
| tree | 47914e8b0356b2f40e3723eae650d3bb6f100dd4 /src/main/java/org/zwobble/couscous/ast/visitors | |
| parent | 8ac6cb16b727b5e3d28ab89fee1d169a4f74d9a1 (diff) | |
Introduce Type interface
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/visitors')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java | 18 |
1 files changed, 12 insertions, 6 deletions
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 5d0539a..38c5709 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -5,6 +5,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.ast.types.ScalarType; +import org.zwobble.couscous.ast.types.Type; import java.util.List; import java.util.Map; @@ -154,7 +156,7 @@ public class NodeTransformer { public static class Builder { private Function<ExpressionNode, Optional<ExpressionNode>> transformExpression = expression -> Optional.empty(); - private Function<TypeName, TypeName> transformType = type -> type; + private Function<Type, Type> transformType = type -> type; private Function<MethodSignature, String> transformMethodName = MethodSignature::getName; public Builder transformExpression( @@ -165,7 +167,7 @@ public class NodeTransformer { } public Builder transformType( - Function<TypeName, TypeName> transformType) + Function<Type, Type> transformType) { this.transformType = transformType; return this; @@ -182,12 +184,12 @@ public class NodeTransformer { } private final Function<ExpressionNode, Optional<ExpressionNode>> transformExpression; - private final Function<TypeName, TypeName> transformType; + private final Function<Type, Type> transformType; private final Function<MethodSignature, String> transformMethodName; private NodeTransformer( Function<ExpressionNode, Optional<ExpressionNode>> transformExpression, - Function<TypeName, TypeName> transformType, + Function<Type, Type> transformType, Function<MethodSignature, String> transformMethodName) { this.transformExpression = transformExpression; @@ -195,10 +197,14 @@ public class NodeTransformer { this.transformMethodName = transformMethodName; } - public TypeName transform(TypeName type) { + public Type transform(Type type) { return transformType.apply(type); } + public ScalarType transform(ScalarType type) { + return (ScalarType)transformType.apply(type); + } + public String transformMethodName(MethodSignature signature) { return transformMethodName.apply(signature); } @@ -256,7 +262,7 @@ public class NodeTransformer { return transformList(annotations, this::transformAnnotation); } - public Set<TypeName> transformTypes(Set<TypeName> superTypes) { + public Set<Type> transformTypes(Set<Type> superTypes) { return transformSet(superTypes, this::transform); } |
