aboutsummaryrefslogtreecommitdiff
path: root/javaparser-symbol-solver-core/src/main
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2018-02-14 19:49:56 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2018-02-14 19:49:56 +0100
commit427dd53b9ebedcb0bdb687007eb0faf2de734df4 (patch)
treeb609769170ad7c8b97a5b876dcc9e6c5b7632cd5 /javaparser-symbol-solver-core/src/main
parent6d59e3083ed82de3490c2f5ca35a07bb73806fea (diff)
downloadjavaparser-427dd53b9ebedcb0bdb687007eb0faf2de734df4.tar.gz
Better error handling for "var" inferrer.
Diffstat (limited to 'javaparser-symbol-solver-core/src/main')
-rw-r--r--javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/JavaParserFacade.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/JavaParserFacade.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/JavaParserFacade.java
index efe4e9b56..f73dd986c 100644
--- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/JavaParserFacade.java
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/JavaParserFacade.java
@@ -474,8 +474,14 @@ public class JavaParserFacade {
UnionType unionType = (UnionType) type;
return new ResolvedUnionType(unionType.getElements().stream().map(el -> convertToUsage(el, context)).collect(Collectors.toList()));
} else if (type instanceof VarType) {
- final VariableDeclarator variableDeclarator = (VariableDeclarator)type.getParentNode().get();
- return variableDeclarator.getInitializer().get().calculateResolvedType();
+ Node parent = type.getParentNode().get();
+ if (!(parent instanceof VariableDeclarator)) {
+ throw new IllegalStateException("Trying to resolve a `var` which is not in a variable declaration.");
+ }
+ final VariableDeclarator variableDeclarator = (VariableDeclarator) parent;
+ return variableDeclarator.getInitializer()
+ .map(Expression::calculateResolvedType)
+ .orElseThrow(() -> new IllegalStateException("Cannot resolve `var` which has no initializer."));
} else {
throw new UnsupportedOperationException(type.getClass().getCanonicalName());
}