JavacWrapper: optimize building of tree-based stuff
This commit is contained in:
@@ -126,22 +126,25 @@ class JavacWrapper(
|
|||||||
private val fileObjects = javaFiles.mapTo(ListBuffer()) { fileManager.getRegularFile(it) }.toList()
|
private val fileObjects = javaFiles.mapTo(ListBuffer()) { fileManager.getRegularFile(it) }.toList()
|
||||||
private val compilationUnits: JavacList<JCTree.JCCompilationUnit> = fileObjects.mapTo(ListBuffer(), javac::parse).toList()
|
private val compilationUnits: JavacList<JCTree.JCCompilationUnit> = fileObjects.mapTo(ListBuffer(), javac::parse).toList()
|
||||||
|
|
||||||
private val treeBasedJavaClasses = compilationUnits.flatMap { unit ->
|
private val treeBasedJavaClasses: Map<ClassId, TreeBasedClass>
|
||||||
unit.typeDecls.map { classDeclaration ->
|
private val treeBasedJavaPackages: Map<FqName, TreeBasedPackage>
|
||||||
val packageName = unit.packageName?.toString() ?: ""
|
|
||||||
val className = (classDeclaration as JCTree.JCClassDecl).simpleName.toString()
|
|
||||||
val classId = classId(packageName, className)
|
|
||||||
classId to TreeBasedClass(classDeclaration, unit, this, classId, null)
|
|
||||||
}
|
|
||||||
}.toMap()
|
|
||||||
|
|
||||||
private val treeBasedJavaPackages = compilationUnits
|
init {
|
||||||
.mapTo(hashSetOf<TreeBasedPackage>()) { unit ->
|
val javaClasses = mutableMapOf<ClassId, TreeBasedClass>()
|
||||||
unit.packageName?.toString()?.let { packageName ->
|
val javaPackages = mutableMapOf<FqName, TreeBasedPackage>()
|
||||||
TreeBasedPackage(packageName, this, unit)
|
for (unit in compilationUnits) {
|
||||||
} ?: TreeBasedPackage("<root>", this, unit)
|
val packageName = unit.packageName?.toString()
|
||||||
|
val javaPackage = TreeBasedPackage(packageName ?: "<root>", this, unit)
|
||||||
|
javaPackages[javaPackage.fqName] = javaPackage
|
||||||
|
for (classDeclaration in unit.typeDecls) {
|
||||||
|
val className = (classDeclaration as JCTree.JCClassDecl).simpleName.toString()
|
||||||
|
val classId = classId(packageName ?: "", className)
|
||||||
|
javaClasses[classId] = TreeBasedClass(classDeclaration, unit, this, classId, null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.associateBy(TreeBasedPackage::fqName)
|
treeBasedJavaClasses = javaClasses
|
||||||
|
treeBasedJavaPackages = javaPackages
|
||||||
|
}
|
||||||
|
|
||||||
private val packageSourceAnnotations = compilationUnits
|
private val packageSourceAnnotations = compilationUnits
|
||||||
.filter {
|
.filter {
|
||||||
|
|||||||
Reference in New Issue
Block a user