Skip to content

Commit

Permalink
adapt to alpha.10
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Nov 21, 2016
1 parent 07c91d2 commit 6e1380f
Show file tree
Hide file tree
Showing 20 changed files with 76 additions and 75 deletions.
Expand Up @@ -40,7 +40,7 @@ private Navigator() {
}

public static Node getParentNode(Node node) {
Node parent = node.getParentNode();
Node parent = node.getParentNode().orElse(null);
return parent;
}

Expand Down Expand Up @@ -217,12 +217,12 @@ public static ReturnStmt findReturnStmt(MethodDeclaration method) {
}

public static <N extends Node> Optional<N> findAncestor(Node node, Class<N> clazz) {
if (node.getParentNode() == null) {
if (!node.getParentNode().isPresent()) {
return Optional.empty();
} else if (clazz.isInstance(node.getParentNode())) {
return Optional.of(clazz.cast(node.getParentNode()));
} else {
return findAncestor(node.getParentNode(), clazz);
return findAncestor(node.getParentNode().get(), clazz);
}
}

Expand Down
Expand Up @@ -119,7 +119,7 @@ private static Type solveGenericTypes(Type type, Context context, TypeSolver typ
}

public SymbolReference<? extends ValueDeclaration> solve(NameExpr nameExpr) {
return symbolSolver.solveSymbol(nameExpr.getName(), nameExpr);
return symbolSolver.solveSymbol(nameExpr.getName().getId(), nameExpr);
}

public SymbolReference solve(Expression expr) {
Expand Down Expand Up @@ -158,7 +158,7 @@ public SymbolReference<MethodDeclaration> solve(MethodCallExpr methodCallExpr, b
}
i++;
}
SymbolReference<MethodDeclaration> res = JavaParserFactory.getContext(methodCallExpr, typeSolver).solveMethod(methodCallExpr.getName(), argumentTypes, typeSolver);
SymbolReference<MethodDeclaration> res = JavaParserFactory.getContext(methodCallExpr, typeSolver).solveMethod(methodCallExpr.getName().getId(), argumentTypes, typeSolver);
for (LambdaArgumentTypePlaceholder placeholder : placeholders) {
placeholder.setMethod(res);
}
Expand Down Expand Up @@ -247,7 +247,7 @@ private MethodUsage toMethodUsage(MethodReferenceExpr methodReferenceExpr) {
throw new UnsupportedOperationException(typeExpr.getType().getClass().getCanonicalName());
}
ClassOrInterfaceType classOrInterfaceType = (ClassOrInterfaceType) typeExpr.getType();
SymbolReference<TypeDeclaration> typeDeclarationSymbolReference = JavaParserFactory.getContext(classOrInterfaceType, typeSolver).solveType(classOrInterfaceType.getName(), typeSolver);
SymbolReference<TypeDeclaration> typeDeclarationSymbolReference = JavaParserFactory.getContext(classOrInterfaceType, typeSolver).solveType(classOrInterfaceType.getName().getId(), typeSolver);
if (!typeDeclarationSymbolReference.isSolved()) {
throw new UnsupportedOperationException();
}
Expand All @@ -273,9 +273,9 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
if (node instanceof NameExpr) {
NameExpr nameExpr = (NameExpr) node;
logger.finest("getType on name expr " + node);
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(nameExpr.getName(), nameExpr);
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(nameExpr.getName().getId(), nameExpr);
if (!value.isPresent()) {
throw new UnsolvedSymbolException("Solving " + node, nameExpr.getName());
throw new UnsolvedSymbolException("Solving " + node, nameExpr.getName().getId());
} else {
return value.get().getType();
}
Expand All @@ -293,7 +293,7 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
int pos = JavaParserSymbolDeclaration.getParamPos(node);
SymbolReference<MethodDeclaration> refMethod = JavaParserFacade.get(typeSolver).solve(callExpr);
if (!refMethod.isSolved()) {
throw new UnsolvedSymbolException(getParentNode(node).toString(), callExpr.getName());
throw new UnsolvedSymbolException(getParentNode(node).toString(), callExpr.getName().getId());
}
logger.finest("getType on lambda expr " + refMethod.getCorrespondingDeclaration().getName());
//logger.finest("Method param " + refMethod.getCorrespondingDeclaration().getParam(pos));
Expand All @@ -314,7 +314,7 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
if (callExpr.getScope() instanceof NameExpr) {
NameExpr nameExpr = (NameExpr) callExpr.getScope();
try {
JavaParserFactory.getContext(nameExpr, typeSolver).solveType(nameExpr.getName(), typeSolver);
JavaParserFactory.getContext(nameExpr, typeSolver).solveType(nameExpr.getName().getId(), typeSolver);
staticCall = true;
} catch (Exception e) {

Expand Down Expand Up @@ -372,7 +372,7 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
int pos = JavaParserSymbolDeclaration.getParamPos(node);
SymbolReference<MethodDeclaration> refMethod = JavaParserFacade.get(typeSolver).solve(callExpr, false);
if (!refMethod.isSolved()) {
throw new UnsolvedSymbolException(getParentNode(node).toString(), callExpr.getName());
throw new UnsolvedSymbolException(getParentNode(node).toString(), callExpr.getName().getId());
}
logger.finest("getType on method reference expr " + refMethod.getCorrespondingDeclaration().getName());
//logger.finest("Method param " + refMethod.getCorrespondingDeclaration().getParam(pos));
Expand Down Expand Up @@ -439,19 +439,19 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
} else if (node instanceof FieldAccessExpr) {
FieldAccessExpr fieldAccessExpr = (FieldAccessExpr) node;
// We should understand if this is a static access
if (fieldAccessExpr.getScope() instanceof NameExpr) {
NameExpr staticValue = (NameExpr) fieldAccessExpr.getScope();
if (fieldAccessExpr.getScope().isPresent() && fieldAccessExpr.getScope().get() instanceof NameExpr) {
NameExpr staticValue = (NameExpr) fieldAccessExpr.getScope().get();
SymbolReference<TypeDeclaration> typeAccessedStatically = JavaParserFactory.getContext(fieldAccessExpr, typeSolver).solveType(staticValue.toString(), typeSolver);
if (typeAccessedStatically.isSolved()) {
// TODO here maybe we have to substitute type typeParametersValues
return ((ReferenceTypeDeclaration)typeAccessedStatically.getCorrespondingDeclaration()).getField(fieldAccessExpr.getField()).getType();
return ((ReferenceTypeDeclaration)typeAccessedStatically.getCorrespondingDeclaration()).getField(fieldAccessExpr.getField().getId()).getType();
}
}
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(fieldAccessExpr.getField(), fieldAccessExpr);
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(fieldAccessExpr.getField().getId(), fieldAccessExpr);
if (value.isPresent()) {
return value.get().getType();
} else {
throw new UnsolvedSymbolException(fieldAccessExpr.getField());
throw new UnsolvedSymbolException(fieldAccessExpr.getField().getId());
}
} else if (node instanceof ObjectCreationExpr) {
ObjectCreationExpr objectCreationExpr = (ObjectCreationExpr) node;
Expand Down Expand Up @@ -518,7 +518,7 @@ private Type getTypeConcrete(Node node, boolean solveLambdas) {
return PrimitiveType.BOOLEAN;
} else if (node instanceof EnclosedExpr) {
EnclosedExpr enclosedExpr = (EnclosedExpr) node;
return getTypeConcrete(enclosedExpr.getInner(), solveLambdas);
return getTypeConcrete(enclosedExpr.getInner().get(), solveLambdas);
} else if (node instanceof CastExpr) {
CastExpr enclosedExpr = (CastExpr) node;
return convertToUsage(enclosedExpr.getType(), JavaParserFactory.getContext(node, typeSolver));
Expand Down Expand Up @@ -581,9 +581,9 @@ public Type convertToUsage(com.github.javaparser.ast.type.Type type, Node contex

// This is an hack around an issue in JavaParser
private String qName(ClassOrInterfaceType classOrInterfaceType) {
String name = classOrInterfaceType.getName();
if (classOrInterfaceType.getScope() != null) {
return qName(classOrInterfaceType.getScope()) + "." + name;
String name = classOrInterfaceType.getName().getId();
if (classOrInterfaceType.getScope().isPresent()) {
return qName(classOrInterfaceType.getScope().get()) + "." + name;
} else {
return name;
}
Expand All @@ -599,8 +599,8 @@ public Type convertToUsage(com.github.javaparser.ast.type.Type type, Context con
}
TypeDeclaration typeDeclaration = ref.getCorrespondingDeclaration();
List<Type> typeParameters = Collections.emptyList();
if (classOrInterfaceType.getTypeArguments() != null) {
typeParameters = classOrInterfaceType.getTypeArguments().stream().map((pt) -> convertToUsage(pt, context)).collect(Collectors.toList());
if (classOrInterfaceType.getTypeArguments().isPresent()) {
typeParameters = classOrInterfaceType.getTypeArguments().get().stream().map((pt) -> convertToUsage(pt, context)).collect(Collectors.toList());
}
if (typeDeclaration.isTypeParameter()) {
if (typeDeclaration instanceof TypeParameterDeclaration) {
Expand All @@ -616,11 +616,11 @@ public Type convertToUsage(com.github.javaparser.ast.type.Type type, Context con
return PrimitiveType.byName(((com.github.javaparser.ast.type.PrimitiveType) type).getType().name());
} else if (type instanceof WildcardType) {
WildcardType wildcardType = (WildcardType) type;
if (wildcardType.getExtends() !=null && wildcardType.getSuper() == null) {
return Wildcard.extendsBound((ReferenceTypeImpl) convertToUsage(wildcardType.getExtends(), context));
} else if (wildcardType.getExtends() ==null && wildcardType.getSuper() != null) {
return Wildcard.extendsBound((ReferenceTypeImpl) convertToUsage(wildcardType.getSuper(), context));
} else if (wildcardType.getExtends() == null && wildcardType.getSuper() == null) {
if (wildcardType.getExtends().isPresent() && !wildcardType.getSuper().isPresent()) {
return Wildcard.extendsBound((ReferenceTypeImpl) convertToUsage(wildcardType.getExtends().get(), context));
} else if (!wildcardType.getExtends().isPresent() && wildcardType.getSuper().isPresent()) {
return Wildcard.extendsBound((ReferenceTypeImpl) convertToUsage(wildcardType.getSuper().get(), context));
} else if (!wildcardType.getExtends().isPresent() && !wildcardType.getSuper().isPresent()) {
return Wildcard.UNBOUNDED;
} else {
throw new UnsupportedOperationException(wildcardType.toString());
Expand Down Expand Up @@ -658,7 +658,7 @@ public MethodUsage solveMethodAsUsage(MethodCallExpr call) {
}
}
Context context = JavaParserFactory.getContext(call, typeSolver);
Optional<MethodUsage> methodUsage = context.solveMethodAsUsage(call.getName(), params, typeSolver);
Optional<MethodUsage> methodUsage = context.solveMethodAsUsage(call.getName().getId(), params, typeSolver);
if (!methodUsage.isPresent()) {
throw new RuntimeException("Method '" + call.getName() + "' cannot be resolved in context "
+ call + " (line: " + call.getRange().begin.line + ") " + context + ". Parameter types: " + params);
Expand Down
Expand Up @@ -80,15 +80,15 @@ public SymbolReference<? extends ValueDeclaration> solveSymbol(String name, Type
for (ImportDeclaration importDecl : wrappedNode.getImports()) {
if (importDecl instanceof StaticImportOnDemandDeclaration) {
ClassOrInterfaceType classOrInterfaceType = ((StaticImportOnDemandDeclaration) importDecl).getType();
String qName = classOrInterfaceType.getName();
String qName = classOrInterfaceType.getName().getId();
com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration importedType = typeSolver.solveType(qName);
SymbolReference<? extends ValueDeclaration> ref = new SymbolSolver(typeSolver).solveSymbolInType(importedType, name);
if (ref.isSolved()) {
return ref;
}
} else if (importDecl instanceof SingleStaticImportDeclaration) {
ClassOrInterfaceType classOrInterfaceType = ((SingleStaticImportDeclaration) importDecl).getType();
String typeName = classOrInterfaceType.getName();
String typeName = classOrInterfaceType.getName().getId();

// split in field/method name and type name
String memberName = ((SingleStaticImportDeclaration) importDecl).getStaticMember();
Expand Down Expand Up @@ -124,15 +124,15 @@ public SymbolReference<com.github.javaparser.symbolsolver.model.declarations.Typ
for (ImportDeclaration importDecl : wrappedNode.getImports()) {
if (importDecl instanceof SingleTypeImportDeclaration) {
ClassOrInterfaceType importedType = ((SingleTypeImportDeclaration) importDecl).getType();
String qName = importedType.getName();
String qName = importedType.getName().getId();
if (qName.equals(name) || qName.endsWith("." + name)) {
SymbolReference<com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration> ref = typeSolver.tryToSolveType(qName);
if (ref.isSolved()) {
return SymbolReference.adapt(ref, com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.class);
}
}
} else if (importDecl instanceof TypeImportOnDemandDeclaration) {
String packageName = ((TypeImportOnDemandDeclaration) importDecl).getName().getQualifiedName();
String packageName = ((TypeImportOnDemandDeclaration) importDecl).getName().getId();
String qName = packageName + "." + name;
SymbolReference<com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration> ref = typeSolver.tryToSolveType(qName);
if (ref.isSolved()) {
Expand All @@ -143,8 +143,8 @@ public SymbolReference<com.github.javaparser.symbolsolver.model.declarations.Typ
}

// Look in current package
if (this.wrappedNode.getPackage() != null) {
String qName = this.wrappedNode.getPackage().getName().toString() + "." + name;
if (this.wrappedNode.getPackage().isPresent()) {
String qName = this.wrappedNode.getPackage().get().getName().toString() + "." + name;
SymbolReference<com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration> ref = typeSolver.tryToSolveType(qName);
if (ref.isSolved()) {
return SymbolReference.adapt(ref, com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.class);
Expand All @@ -171,7 +171,7 @@ public SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> ar
if (importDecl instanceof StaticImportOnDemandDeclaration) {
StaticImportOnDemandDeclaration staticImportOnDemandDeclaration = (StaticImportOnDemandDeclaration) importDecl;

String qName = staticImportOnDemandDeclaration.getType().getName();
String qName = staticImportOnDemandDeclaration.getType().getName().getId();
com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration ref = typeSolver.solveType(qName);
SymbolReference<MethodDeclaration> method = MethodResolutionLogic.solveMethodInType(ref, name, argumentsTypes, typeSolver);
if (method.isSolved()) {
Expand All @@ -180,7 +180,7 @@ public SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> ar
} else if (importDecl instanceof SingleStaticImportDeclaration) {
SingleStaticImportDeclaration staticImportOnDemandDeclaration = (SingleStaticImportDeclaration) importDecl;

String importedTypeName = staticImportOnDemandDeclaration.getType().getName();
String importedTypeName = staticImportOnDemandDeclaration.getType().getNameAsString();
String qName = importedTypeName + "." + staticImportOnDemandDeclaration.getStaticMember();

if (qName.equals(name) || qName.endsWith("." + name)) {
Expand Down
Expand Up @@ -49,8 +49,8 @@ public FieldAccessContext(FieldAccessExpr wrappedNode, TypeSolver typeSolver) {

@Override
public SymbolReference<? extends ValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) {
if (wrappedNode.getFieldExpr().toString().equals(name)) {
if (wrappedNode.getScope() instanceof ThisExpr) {
if (wrappedNode.getField().toString().equals(name)) {
if (wrappedNode.getScope().isPresent() && wrappedNode.getScope().get() instanceof ThisExpr) {
Type typeOfThis = JavaParserFacade.get(typeSolver).getTypeOfThisIn(wrappedNode);
return new SymbolSolver(typeSolver).solveSymbolInType(typeOfThis.asReferenceType().getTypeDeclaration(), name);
}
Expand All @@ -70,8 +70,8 @@ public SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> pa

@Override
public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) {
Expression scope = wrappedNode.getScope();
if (wrappedNode.getFieldExpr().toString().equals(name)) {
Expression scope = wrappedNode.getScope().get();
if (wrappedNode.getField().toString().equals(name)) {
Type typeOfScope = JavaParserFacade.get(typeSolver).getType(scope);
if (typeOfScope.isArray() && name.equals(ARRAY_LENGTH_FIELD_NAME)) {
return Optional.of(new Value(PrimitiveType.INT, ARRAY_LENGTH_FIELD_NAME));
Expand Down
Expand Up @@ -50,9 +50,9 @@ public SymbolReference<TypeDeclaration> solveType(String name, TypeSolver typeSo
if (internalType.getName().equals(name)) {
return SymbolReference.solved(JavaParserFacade.get(typeSolver).getTypeDeclaration(internalType));
} else if (name.startsWith(String.format("%s.%s", wrappedNode.getName(), internalType.getName()))) {
return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(wrappedNode.getName().length() + 1), typeSolver);
return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(wrappedNode.getName().getId().length() + 1), typeSolver);
} else if (name.startsWith(String.format("%s.", internalType.getName()))) {
return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(internalType.getName().length() + 1), typeSolver);
return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(internalType.getName().getId().length() + 1), typeSolver);
}
}
}
Expand Down

0 comments on commit 6e1380f

Please sign in to comment.