Skip to content

Commit 8b10301

Browse files
committed
Removed subclasses of Type and moved fields from those classes to Type. This fixes the issue with
fields getting dropped while deserializing the symbol table from an existing analysis.json for incremental analysis. Also, it makes the Java-side lombok model consistent with the Pyhon-side Pydantic model (which does not declare subtypes of JType). Signed-off-by: Saurabh Sinha <[email protected]>
1 parent 4fe3f39 commit 8b10301

File tree

4 files changed

+11
-37
lines changed

4 files changed

+11
-37
lines changed

src/main/java/com/ibm/northstar/SymbolTable.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@
1717
import com.github.javaparser.resolution.types.ResolvedType;
1818
import com.github.javaparser.symbolsolver.JavaSymbolSolver;
1919
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
20-
import com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver;
2120
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
2221
import com.github.javaparser.symbolsolver.utils.SymbolSolverCollectionStrategy;
2322
import com.github.javaparser.utils.ProjectRoot;
2423
import com.github.javaparser.utils.SourceRoot;
2524
import com.google.common.collect.Table;
2625
import com.google.common.collect.Tables;
27-
import com.ibm.northstar.entities.Enum;
2826
import com.ibm.northstar.entities.*;
2927
import com.ibm.northstar.utils.Log;
3028
import org.apache.commons.lang3.tuple.Pair;
@@ -108,10 +106,9 @@ private static JavaCompilationUnit processCompilationUnit(CompilationUnit parseR
108106
.map(typeDecl -> {
109107
// get type name and initialize the type object
110108
String typeName = typeDecl.getFullyQualifiedName().get().toString();
111-
com.ibm.northstar.entities.Type typeNode = null;
109+
com.ibm.northstar.entities.Type typeNode = new com.ibm.northstar.entities.Type();
112110

113111
if (typeDecl instanceof ClassOrInterfaceDeclaration) {
114-
typeNode = new ClassOrInterface();
115112
ClassOrInterfaceDeclaration classDecl = (ClassOrInterfaceDeclaration)typeDecl;
116113

117114
// Add interfaces implemented by class
@@ -127,17 +124,16 @@ private static JavaCompilationUnit processCompilationUnit(CompilationUnit parseR
127124
.collect(Collectors.toList()));
128125

129126
// add booleans indicating interfaces and inner/local classes
130-
((ClassOrInterface)typeNode).setInterface(classDecl.isInterface());
131-
((ClassOrInterface)typeNode).setInnerClass(classDecl.isInnerClass());
132-
((ClassOrInterface)typeNode).setLocalClass(classDecl.isLocalClassDeclaration());
127+
typeNode.setInterface(classDecl.isInterface());
128+
typeNode.setInnerClass(classDecl.isInnerClass());
129+
typeNode.setLocalClass(classDecl.isLocalClassDeclaration());
133130

134131
// Add extends
135-
((ClassOrInterface)typeNode).setExtendsList(classDecl.getExtendedTypes().stream()
132+
typeNode.setExtendsList(classDecl.getExtendedTypes().stream()
136133
.map(SymbolTable::resolveType)
137134
.collect(Collectors.toList()));
138135

139136
} else if (typeDecl instanceof EnumDeclaration) {
140-
typeNode = new Enum();
141137
EnumDeclaration enumDecl = (EnumDeclaration)typeDecl;
142138

143139
// Add interfaces implemented by enum
@@ -153,7 +149,7 @@ private static JavaCompilationUnit processCompilationUnit(CompilationUnit parseR
153149
.collect(Collectors.toList()));
154150

155151
// Add enum constants
156-
((Enum)typeNode).setEnumConstants(enumDecl.getEntries().stream()
152+
typeNode.setEnumConstants(enumDecl.getEntries().stream()
157153
.map(SymbolTable::processEnumConstantDeclaration).collect(Collectors.toList()));
158154

159155
} else {

src/main/java/com/ibm/northstar/entities/ClassOrInterface.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/java/com/ibm/northstar/entities/Enum.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/main/java/com/ibm/northstar/entities/Type.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ public class Type {
1212
private boolean isEnumDeclaration;
1313
private boolean isAnnotationDeclaration;
1414
private boolean isRecordDeclaration;
15+
private boolean isInterface;
16+
private boolean isInnerClass;
17+
private boolean isLocalClass;
18+
private List<String> extendsList;
1519
private String comment;
1620
private List<String> implementsList;
1721
private List<String> modifiers;
@@ -20,4 +24,5 @@ public class Type {
2024
private List<String> nestedTypeDeclarations;
2125
private Map<String, Callable> callableDeclarations;
2226
private List<Field> fieldDeclarations;
27+
private List<EnumConstant> enumConstants;
2328
}

0 commit comments

Comments
 (0)