diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2018-02-14 19:49:56 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2018-02-14 19:49:56 +0100 |
commit | 427dd53b9ebedcb0bdb687007eb0faf2de734df4 (patch) | |
tree | b609769170ad7c8b97a5b876dcc9e6c5b7632cd5 /javaparser-symbol-solver-core/src/main | |
parent | 6d59e3083ed82de3490c2f5ca35a07bb73806fea (diff) | |
download | javaparser-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.java | 10 |
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()); } |