diff options
author | Roger Howell <MysterAitch@users.noreply.github.com> | 2020-08-13 16:42:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-13 16:42:50 +0000 |
commit | a2dd1ea304948183f653a7c9b1c9064a003e07d1 (patch) | |
tree | 564e2e86c1d8e874cc5db63e7f25b1ba8226ae22 | |
parent | 69a2e0ed4e0f260ccd61cbb2594b2c3069e47990 (diff) | |
parent | e94aac75dbdf8b7551529f46aa2459706fdf20d8 (diff) | |
download | platform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.tar.gz platform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.tar.bz2 platform_external_javaparser-a2dd1ea304948183f653a7c9b1c9064a003e07d1.zip |
Merge pull request #2782 from jlerbsc/master
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()));
+ }
+}
|