Skip to content

Commit

Permalink
Merge pull request #306 from javaparser/avoid_access_type_parameters_…
Browse files Browse the repository at this point in the history
…of_wildcard

Avoid trying to access type parameter values of non-ReferenceTypes
  • Loading branch information
mlangkabel committed Aug 28, 2017
2 parents d4e46c2 + abec22a commit f15546c
Show file tree
Hide file tree
Showing 11 changed files with 16 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -401,15 +401,14 @@ private void matchTypeParameters(Type expectedType, Type actualType, Map<TypePar
actualType.asArrayType().getComponentType(),
matchedTypeParameters);
} else if (expectedType.isReferenceType()) {
// avoid cases such as: "classX extends classY<Integer>"
if (actualType.asReferenceType().typeParametersValues().size() > 0) {
// avoid cases where the actual type has no type parameters but the expected one has. Such as: "classX extends classY<Integer>"
if (actualType.isReferenceType() && actualType.asReferenceType().typeParametersValues().size() > 0) {
int i = 0;
for (Type tp : expectedType.asReferenceType().typeParametersValues()) {
matchTypeParameters(tp, actualType.asReferenceType().typeParametersValues().get(i), matchedTypeParameters);
i++;
}
}

} else if (expectedType.isPrimitive()) {
// nothing to do
} else if (expectedType.isWildcard()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
Line 120) getParentNode(wrappedNode) ==> com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode(com.github.javaparser.ast.Node)
Line 122) getParentNode(notMethod) ==> com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode(com.github.javaparser.ast.Node)
Line 124) JavaParserFactory.getContext(notMethod, typeSolver) ==> com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.getContext(com.github.javaparser.ast.Node, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Line 132) symbolDeclarator.getSymbolDeclarations().stream().filter(d -> d.getName().equals(name)).map(d -> Value.from(d)).findFirst() ==> ERROR
Line 132) symbolDeclarator.getSymbolDeclarations().stream().filter(d -> d.getName().equals(name)).map(d -> Value.from(d)).findFirst() ==> java.util.stream.Stream.findFirst()
Line 132) symbolDeclarator.getSymbolDeclarations().stream().filter(d -> d.getName().equals(name)).map(d -> Value.from(d)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 132) symbolDeclarator.getSymbolDeclarations().stream().filter(d -> d.getName().equals(name)) ==> java.util.stream.Stream.filter(java.util.function.Predicate<? super T>)
Line 132) symbolDeclarator.getSymbolDeclarations().stream() ==> java.util.Collection.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
Line 122) name.startsWith(String.format("%s.", internalType.getName())) ==> java.lang.String.startsWith(java.lang.String)
Line 122) String.format("%s.", internalType.getName()) ==> java.lang.String.format(java.lang.String, java.lang.Object...)
Line 122) internalType.getName() ==> com.github.javaparser.ast.body.TypeDeclaration.getName()
Line 125) JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(internalType.getName().getId().length() + 1), typeSolver) ==> ERROR
Line 125) JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(internalType.getName().getId().length() + 1), typeSolver) ==> com.github.javaparser.symbolsolver.core.resolution.Context.solveType(java.lang.String, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Line 125) JavaParserFactory.getContext(internalType, typeSolver) ==> com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.getContext(com.github.javaparser.ast.Node, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Line 127) name.substring(internalType.getName().getId().length() + 1) ==> java.lang.String.substring(int)
Line 127) internalType.getName().getId().length() ==> java.lang.String.length()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
Line 89) blockStmt.getStatements() ==> com.github.javaparser.ast.nodeTypes.NodeWithStatements.getStatements()
Line 90) solveWith(symbolDeclarator, name) ==> com.github.javaparser.symbolsolver.javaparsermodel.contexts.AbstractJavaParserContext.solveWith(com.github.javaparser.symbolsolver.resolution.SymbolDeclarator, java.lang.String)
Line 91) symbolReference.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
Line 92) Optional.of(Value.from(symbolReference.getCorrespondingDeclaration())) ==> ERROR
Line 92) Optional.of(Value.from(symbolReference.getCorrespondingDeclaration())) ==> java.util.Optional.of(T)
Line 92) Value.from(symbolReference.getCorrespondingDeclaration()) ==> com.github.javaparser.symbolsolver.model.resolution.Value.from(com.github.javaparser.symbolsolver.model.declarations.ValueDeclaration)
Line 92) symbolReference.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
Line 97) JavaParserFactory.getContext(getParentNode(stmt), typeSolver).solveSymbolAsValue(name, typeSolver) ==> com.github.javaparser.symbolsolver.core.resolution.Context.solveSymbolAsValue(java.lang.String, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,11 @@
Line 306) Collectors.toList() ==> java.util.stream.Collectors.toList()
Line 308) SignatureAttribute.toClassSignature(ctClass.getGenericSignature()) ==> javassist.bytecode.SignatureAttribute.toClassSignature(java.lang.String)
Line 308) ctClass.getGenericSignature() ==> javassist.CtClass.getGenericSignature()
Line 309) Arrays.stream(classSignature.getInterfaces()).map(i -> JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType()).collect(Collectors.toList()) ==> ERROR
Line 309) Arrays.stream(classSignature.getInterfaces()).map(i -> JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType()).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 309) Arrays.stream(classSignature.getInterfaces()).map(i -> JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType()) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 309) Arrays.stream(classSignature.getInterfaces()) ==> java.util.Arrays.stream(T[])
Line 309) classSignature.getInterfaces() ==> javassist.bytecode.SignatureAttribute.ClassSignature.getInterfaces()
Line 310) JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType() ==> ERROR
Line 310) JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asReferenceType()
Line 310) JavassistUtils.signatureTypeToType(i, typeSolver, this) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistUtils.signatureTypeToType(javassist.bytecode.SignatureAttribute.Type, com.github.javaparser.symbolsolver.model.resolution.TypeSolver, com.github.javaparser.symbolsolver.model.declarations.TypeParametrizable)
Line 311) Collectors.toList() ==> java.util.stream.Collectors.toList()
Line 322) ctClass.isInterface() ==> javassist.CtClass.isInterface()
Expand All @@ -108,7 +108,7 @@
Line 337) ctClass.getModifiers() ==> javassist.CtClass.getModifiers()
Line 342) javassistTypeDeclarationAdapter.getConstructors() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.getConstructors()
Line 347) javassistTypeDeclarationAdapter.containerType() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.containerType()
Line 357) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> ERROR
Line 357) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 357) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 357) Arrays.stream(ctClass.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
Line 357) ctClass.getDeclaredClasses() ==> javassist.CtClass.getDeclaredClasses()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
Line 184) ref.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
Line 191) MethodResolutionLogic.findMostApplicable(candidates, name, argumentsTypes, typeSolver) ==> com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic.findMostApplicable(java.util.List<com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration>, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Line 195) JavassistUtils.getMethodUsage(ctClass, name, argumentsTypes, typeSolver, invokationContext) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistUtils.getMethodUsage(javassist.CtClass, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver, com.github.javaparser.symbolsolver.core.resolution.Context)
Line 205) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> ERROR
Line 205) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 205) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 205) Arrays.stream(ctClass.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
Line 205) ctClass.getDeclaredClasses() ==> javassist.CtClass.getDeclaredClasses()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
Line 231) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
Line 239) SymbolReference.unsolved(ValueDeclaration.class) ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.unsolved(java.lang.Class<S2>)
Line 244) javassistTypeDeclarationAdapter.containerType() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.containerType()
Line 254) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> ERROR
Line 254) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 254) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 254) Arrays.stream(ctClass.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
Line 254) ctClass.getDeclaredClasses() ==> javassist.CtClass.getDeclaredClasses()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Line 36) clazz.getGenericSuperclass() ==> java.lang.Class.getGenericSuperclass()
Line 39) clazz.getGenericSuperclass() ==> java.lang.Class.getGenericSuperclass()
Line 42) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)).collect(Collectors.toList()) ==> ERROR
Line 42) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 42) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 42) Arrays.stream(parameterizedType.getActualTypeArguments()) ==> java.util.Arrays.stream(T[])
Line 42) parameterizedType.getActualTypeArguments() ==> java.lang.reflect.ParameterizedType.getActualTypeArguments()
Expand All @@ -9,7 +9,7 @@
Line 45) clazz.getSuperclass() ==> java.lang.Class.getSuperclass()
Line 47) clazz.getSuperclass() ==> java.lang.Class.getSuperclass()
Line 52) clazz.getGenericInterfaces() ==> java.lang.Class.getGenericInterfaces()
Line 55) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)).collect(Collectors.toList()) ==> ERROR
Line 55) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 55) Arrays.stream(parameterizedType.getActualTypeArguments()).map((t) -> ReflectionFactory.typeUsageFor(t, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 55) Arrays.stream(parameterizedType.getActualTypeArguments()) ==> java.util.Arrays.stream(T[])
Line 55) parameterizedType.getActualTypeArguments() ==> java.lang.reflect.ParameterizedType.getActualTypeArguments()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
Line 314) this.clazz.getModifiers() ==> java.lang.Class.getModifiers()
Line 319) reflectionClassAdapter.getConstructors() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getConstructors()
Line 324) reflectionClassAdapter.containerType() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.containerType()
Line 329) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)).collect(Collectors.toSet()) ==> ERROR
Line 329) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 329) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 329) Arrays.stream(this.clazz.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
Line 329) this.clazz.getDeclaredClasses() ==> java.lang.Class.getDeclaredClasses()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
Line 268) clazz.getInterfaces() ==> java.lang.Class.getInterfaces()
Line 269) res.add(new ReferenceTypeImpl(new ReflectionInterfaceDeclaration(i, typeSolver), typeSolver)) ==> java.util.List.add(E)
Line 276) reflectionClassAdapter.containerType() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.containerType()
Line 281) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)).collect(Collectors.toSet()) ==> ERROR
Line 281) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 281) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 281) Arrays.stream(this.clazz.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
Line 281) this.clazz.getDeclaredClasses() ==> java.lang.Class.getDeclaredClasses()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
Line 93) ((MethodLikeDeclaration) container).getQualifiedSignature() ==> com.github.javaparser.symbolsolver.model.declarations.MethodLikeDeclaration.getQualifiedSignature()
Line 100) ((ReferenceTypeDeclaration) container).getId() ==> com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.getId()
Line 102) ((MethodLikeDeclaration) container).getQualifiedSignature() ==> com.github.javaparser.symbolsolver.model.declarations.MethodLikeDeclaration.getQualifiedSignature()
Line 113) Arrays.stream(typeVariable.getBounds()).map((refB) -> Bound.extendsBound(ReflectionFactory.typeUsageFor(refB, typeSolver))).collect(Collectors.toList()) ==> ERROR
Line 113) Arrays.stream(typeVariable.getBounds()).map((refB) -> Bound.extendsBound(ReflectionFactory.typeUsageFor(refB, typeSolver))).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
Line 113) Arrays.stream(typeVariable.getBounds()).map((refB) -> Bound.extendsBound(ReflectionFactory.typeUsageFor(refB, typeSolver))) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
Line 113) Arrays.stream(typeVariable.getBounds()) ==> java.util.Arrays.stream(T[])
Line 113) typeVariable.getBounds() ==> java.lang.reflect.TypeVariable.getBounds()
Line 113) Bound.extendsBound(ReflectionFactory.typeUsageFor(refB, typeSolver)) ==> ERROR
Line 113) Bound.extendsBound(ReflectionFactory.typeUsageFor(refB, typeSolver)) ==> com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration.Bound.extendsBound(com.github.javaparser.symbolsolver.model.typesystem.Type)
Line 113) ReflectionFactory.typeUsageFor(refB, typeSolver) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionFactory.typeUsageFor(java.lang.reflect.Type, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
Line 113) Collectors.toList() ==> java.util.stream.Collectors.toList()
Line 126) Optional.of((ReferenceTypeDeclaration) container) ==> java.util.Optional.of(T)
Expand Down

0 comments on commit f15546c

Please sign in to comment.