aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Howell <MysterAitch@users.noreply.github.com>2020-08-13 16:42:50 +0000
committerGitHub <noreply@github.com>2020-08-13 16:42:50 +0000
commita2dd1ea304948183f653a7c9b1c9064a003e07d1 (patch)
tree564e2e86c1d8e874cc5db63e7f25b1ba8226ae22
parent69a2e0ed4e0f260ccd61cbb2594b2c3069e47990 (diff)
parente94aac75dbdf8b7551529f46aa2459706fdf20d8 (diff)
downloadplatform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.tar.gz
platform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.tar.bz2
platform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.zip
Merge pull request #2782 from jlerbsc/master
-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()));
+ }
+}