diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-07-14 22:50:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-07-14 22:50:55 +0100 |
| commit | 0970f5a5074da34fffaea70f3b42d012edb501c5 (patch) | |
| tree | 27ab840b4de91e790abd2606307cba47e2e4d053 /src/main/java/org/zwobble/couscous/frontends | |
| parent | dc601f2d7cdec8cc9c366f70be59fc0666f132cb (diff) | |
Simplify dynamic visitor creation
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java index 623179d..b904f0d 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/FreeVariables.java @@ -1,7 +1,6 @@ package org.zwobble.couscous.frontends.java; import com.google.common.collect.ImmutableSet; -import net.bytebuddy.description.type.TypeDescription; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.visitors.DynamicNodeMapper; import org.zwobble.couscous.types.*; @@ -20,14 +19,10 @@ import static org.zwobble.couscous.util.ExtraLists.list; import static org.zwobble.couscous.util.ExtraStreams.toStream; public class FreeVariables { - private static final Function<Node, Stream<Type>> findFreeTypeParameters = - DynamicNodeMapper.<FindReferencedTypes, Stream<Type>>build( - FindReferencedTypes.class, - new TypeDescription.ForLoadedType(Stream.class), - "visit" - ).instantiate(new FindReferencedTypes()); - public static class FindReferencedTypes { + private static final Function<Node, Stream<Type>> VISITOR = + DynamicNodeMapper.instantiate(new FindReferencedTypes(), "visit"); + public Stream<Type> visit(Node node) { return Stream.empty(); } @@ -58,7 +53,7 @@ public class FreeVariables { public static Set<TypeParameter> findFreeTypeParameters(Node root) { // TODO: this assumes that *all* type parameters are free, which is often but not always true in inner types Iterable<Type> types = iterable(() -> descendantNodesAndSelf(root) - .flatMap(findFreeTypeParameters)); + .flatMap(FindReferencedTypes.VISITOR)); return ImmutableSet.copyOf(lazyFlatMap(types, type -> type.accept(new Type.Visitor<Iterable<TypeParameter>>() { @Override |
