aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaarten Coene <maartenc@apache.org>2020-08-14 10:59:00 +0200
committerMaarten Coene <maartenc@apache.org>2020-08-14 10:59:00 +0200
commit4a390db80527fd6323ec220dc0bb34304adde0e5 (patch)
tree1799850e7da48e34a2a6bead2107b9bfc38d92dd
parentae72e2afaf32ec9011b47aa595268d3cb5fd77ed (diff)
parenta8fc25b939c7c55d881d126bbf29443dc76e43ae (diff)
downloadplatform_external_javaparser-4a390db80527fd6323ec220dc0bb34304adde0e5.tar.gz
platform_external_javaparser-4a390db80527fd6323ec220dc0bb34304adde0e5.tar.bz2
platform_external_javaparser-4a390db80527fd6323ec220dc0bb34304adde0e5.zip
Merge remote-tracking branch 'origin/issue_2595_functional_interface_resolution' into issue_2595_functional_interface_resolution
-rw-r--r--javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/contexts/ForStatementContext.java3
-rwxr-xr-xjavaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue2764Test.java59
2 files changed, 61 insertions, 1 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/contexts/ForStatementContext.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/contexts/ForStatementContext.java
index 3a757b60c..c23cd2b01 100644
--- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/contexts/ForStatementContext.java
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/contexts/ForStatementContext.java
@@ -26,6 +26,7 @@ import com.github.javaparser.ast.body.VariableDeclarator;
import com.github.javaparser.ast.expr.AssignExpr;
import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.MethodCallExpr;
+import com.github.javaparser.ast.expr.UnaryExpr;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithStatements;
import com.github.javaparser.ast.stmt.ForStmt;
@@ -57,7 +58,7 @@ public class ForStatementContext extends AbstractJavaParserContext<ForStmt> {
return SymbolReference.solved(JavaParserSymbolDeclaration.localVar(variableDeclarator, typeSolver));
}
}
- } else if (!(expression instanceof AssignExpr || expression instanceof MethodCallExpr)) {
+ } else if (!(expression instanceof AssignExpr || expression instanceof MethodCallExpr || expression instanceof UnaryExpr)) {
throw new UnsupportedOperationException(expression.getClass().getCanonicalName());
}
}
diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue2764Test.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue2764Test.java
new file mode 100755
index 000000000..c2c4c44d1
--- /dev/null
+++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue2764Test.java
@@ -0,0 +1,59 @@
+package com.github.javaparser.symbolsolver;
+
+import com.github.javaparser.JavaParser;
+import com.github.javaparser.ParseResult;
+import com.github.javaparser.ParseStart;
+import com.github.javaparser.ParserConfiguration;
+import com.github.javaparser.Providers;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.expr.NameExpr;
+import com.github.javaparser.ast.expr.UnaryExpr;
+import com.github.javaparser.ast.stmt.Statement;
+import com.github.javaparser.printer.PrettyPrinter;
+import com.github.javaparser.printer.PrettyPrinterConfiguration;
+import com.github.javaparser.resolution.declarations.ResolvedValueDeclaration;
+import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
+import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
+
+import org.junit.jupiter.api.Test;
+
+import static com.github.javaparser.StaticJavaParser.parseStatement;
+import static com.github.javaparser.utils.Utils.EOL;
+import static com.github.javaparser.utils.Utils.normalizeEolInTextBlock;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.BeforeEach;
+
+public class Issue2764Test {
+ private JavaParser javaParser;
+
+ @BeforeEach
+ void setUp() {
+ TypeSolver typeSolver = new ReflectionTypeSolver();
+ ParserConfiguration config = new ParserConfiguration();
+ config.setSymbolResolver(new JavaSymbolSolver(typeSolver));
+ javaParser = new JavaParser(config);
+ }
+
+ @Test
+ void resolveUnaryExpr() {
+ String code =
+ "class A {" +
+ " void a() {" +
+ " int e;" +
+ " for(e++;;){}" +
+ " }" +
+ "}";
+
+ ParseResult<CompilationUnit> parseResult = javaParser.parse(ParseStart.COMPILATION_UNIT, Providers.provider(code));
+ assertTrue(parseResult.isSuccessful());
+ assertTrue(parseResult.getResult().isPresent());
+
+ CompilationUnit cu = parseResult.getResult().get();
+ NameExpr name = (NameExpr) cu.findFirst(UnaryExpr.class).get().getExpression();
+ ResolvedValueDeclaration resolve = name.resolve();
+
+ assertTrue("int".contentEquals(resolve.getType().describe()));
+ }
+}