From e687d9cf6246bc0d1b3a407a87599039080b7b9e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 9 Apr 2016 18:01:11 +0100 Subject: Read implicit type parameters in method calls --- .../org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 3 ++- .../zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java index 4a86fc0..0fa3c30 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -12,6 +12,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; +import static java.util.Arrays.asList; import static org.zwobble.couscous.ast.ArrayNode.array; import static org.zwobble.couscous.ast.CastNode.cast; import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; @@ -206,7 +207,7 @@ public class JavaExpressionReader { private ExpressionNode readMethodInvocation(MethodInvocation expression) { String methodName = expression.getName().getIdentifier(); @SuppressWarnings("unchecked") - List typeArguments = expression.typeArguments(); + List typeArguments = asList(expression.resolveMethodBinding().getTypeArguments()); List typeParameters = eagerMap(typeArguments, JavaTypes::typeOf); @SuppressWarnings("unchecked") List arguments = readArguments( diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java index f99f129..43d20b7 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java @@ -1,6 +1,5 @@ package org.zwobble.couscous.tests.frontends.java; -import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.identifiers.Identifiers; @@ -224,6 +223,7 @@ public class ExpressionReadingTests { methodCall( staticReceiver("java.util.Arrays"), "asList", + list(Types.STRING), list(array(Types.STRING, list())), parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING)), signature( @@ -241,6 +241,7 @@ public class ExpressionReadingTests { methodCall( staticReceiver("java.util.Arrays"), "asList", + list(Types.STRING), list(array(Types.STRING, list(literal("one"), literal("two")))), parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING)), signature( @@ -270,7 +271,6 @@ public class ExpressionReadingTests { } @Test - @Ignore("WIP") public void canReadGenericStaticMethodCallsWithImplicitTypeParameters() { TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Collections"), "emptyList"), "T"); assertEquals( -- cgit v1.2.3