use of com.sun.tools.javac.tree.EndPosTable in project meghanada-server by mopemope.
the class TreeAnalyzer method analyzeTopLevelClass.
private static void analyzeTopLevelClass(SourceContext context, JCTree.JCClassDecl classDecl) throws IOException {
Source src = context.getSource();
EndPosTable endPosTable = context.getEndPosTable();
Tree.Kind classDeclKind = classDecl.getKind();
boolean isInterface = classDeclKind.equals(Tree.Kind.INTERFACE);
boolean isEnum = classDeclKind.equals(Tree.Kind.ENUM);
int startPos = classDecl.getPreferredPosition();
int endPos = classDecl.getEndPosition(endPosTable);
parseModifiers(context, classDecl.getModifiers());
analyzeParsedTree(context, classDecl.getExtendsClause());
analyzeSimpleExpressions(context, classDecl.getImplementsClause());
Name simpleName = classDecl.getSimpleName();
Range range = Range.create(src, startPos + 1, endPos);
int nameStart = startPos + 6;
if (isInterface) {
nameStart = startPos + 10;
} else if (isEnum) {
nameStart = startPos + 5;
}
Range nameRange = Range.create(src, nameStart, nameStart + simpleName.length());
String fqcn;
if (src.getPackageName().isEmpty()) {
fqcn = simpleName.toString();
} else {
fqcn = src.getPackageName() + '.' + simpleName.toString();
}
ClassScope classScope = new ClassScope(fqcn, nameRange, startPos, range);
classScope.isEnum = isEnum;
classScope.isInterface = isInterface;
log.trace("class={}", classScope);
src.startClass(classScope);
for (JCTree tree : classDecl.getMembers()) {
analyzeParsedTree(context, tree);
}
Optional<ClassScope> endClass = src.endClass();
log.trace("class={}", endClass);
}
Aggregations