aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-09 18:01:11 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-09 18:01:11 +0100
commite687d9cf6246bc0d1b3a407a87599039080b7b9e (patch)
tree18e58d9076432155831c9c92e24d461cc47be705
parentaa24b84f01e7d9fa047658bca03ef516e2b69f37 (diff)
Read implicit type parameters in method calls
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java3
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java4
2 files changed, 4 insertions, 3 deletions
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<org.eclipse.jdt.core.dom.Type> typeArguments = expression.typeArguments();
+ List<ITypeBinding> typeArguments = asList(expression.resolveMethodBinding().getTypeArguments());
List<Type> typeParameters = eagerMap(typeArguments, JavaTypes::typeOf);
@SuppressWarnings("unchecked")
List<ExpressionNode> 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(