Skip to content

Commit 3cf566a

Browse files
committed
ClassGraph: support for type parameters in class fields.
1 parent 79ab9b5 commit 3cf566a

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

sdg-core/src/main/java/es/upv/mist/slicing/graphs/ClassGraph.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.javaparser.ast.CompilationUnit;
44
import com.github.javaparser.ast.NodeList;
55
import com.github.javaparser.ast.body.*;
6+
import com.github.javaparser.ast.type.TypeParameter;
67
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
78
import com.github.javaparser.resolution.UnsolvedSymbolException;
89
import com.github.javaparser.resolution.declarations.ResolvedClassDeclaration;
@@ -232,10 +233,14 @@ protected Map<String, Vertex<? extends TypeDeclaration<?>>> findAllFieldsOf(Vert
232233
continue;
233234
Vertex<? extends TypeDeclaration<?>> v = null;
234235
if (var.getType().isClassOrInterfaceType()) {
235-
try {
236-
v = classDeclarationMap.get(mapKey(var.getType().asClassOrInterfaceType().resolve()));
237-
} catch (UnsolvedSymbolException ignored) {
238-
}
236+
boolean isTypeParameter = false;
237+
for (TypeParameter typeParameter : type.asClassOrInterfaceDeclaration().getTypeParameters())
238+
if (typeParameter.getNameAsString().equals(var.getType().asClassOrInterfaceType().getNameAsString()))
239+
isTypeParameter = true;
240+
if (!isTypeParameter)
241+
try {
242+
v = classDeclarationMap.get(mapKey(var.getType().asClassOrInterfaceType().resolve()));
243+
} catch (UnsolvedSymbolException ignored) {}
239244
}
240245
fieldMap.put(var.getNameAsString(), v);
241246
}

0 commit comments

Comments
 (0)