Light class performance test: build also light nested classes
So #KT-24085 In Progress
This commit is contained in:
@@ -27,27 +27,37 @@ class AllKotlinLightClassTest : WholeProjectPerformanceTest(), WholeProjectKotli
|
|||||||
|
|
||||||
val errors = mutableListOf<Throwable>()
|
val errors = mutableListOf<Throwable>()
|
||||||
|
|
||||||
val result = measureNanoTime {
|
fun buildAllLightClasses(name: String, predicate: (KtClassOrObject) -> Boolean) {
|
||||||
try {
|
val result = measureNanoTime {
|
||||||
// Build light class by PsiFile
|
try {
|
||||||
psiFile.acceptRecursively(object : KtVisitorVoid() {
|
// Build light class by PsiFile
|
||||||
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
|
psiFile.acceptRecursively(object : KtVisitorVoid() {
|
||||||
if (classOrObject.containingDeclarationForPseudocode != null) return
|
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
|
||||||
val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return
|
if (!predicate(classOrObject)) return
|
||||||
Arrays.hashCode(lightClass.superTypes)
|
val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return
|
||||||
Arrays.hashCode(lightClass.fields)
|
Arrays.hashCode(lightClass.superTypes)
|
||||||
Arrays.hashCode(lightClass.methods)
|
Arrays.hashCode(lightClass.fields)
|
||||||
lightClass.hashCode()
|
Arrays.hashCode(lightClass.methods)
|
||||||
}
|
lightClass.hashCode()
|
||||||
})
|
}
|
||||||
|
})
|
||||||
|
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
t.printStackTrace()
|
t.printStackTrace()
|
||||||
errors += t
|
errors += t
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
results[name] = result
|
||||||
|
totalNs += result
|
||||||
|
}
|
||||||
|
|
||||||
|
buildAllLightClasses("LightClasses_Top") {
|
||||||
|
it.containingDeclarationForPseudocode == null
|
||||||
|
}
|
||||||
|
|
||||||
|
buildAllLightClasses("LightClasses_Members") {
|
||||||
|
!it.isLocal && it.containingDeclarationForPseudocode is KtClassOrObject
|
||||||
}
|
}
|
||||||
results["LightClasses_Top"] = result
|
|
||||||
totalNs += result
|
|
||||||
|
|
||||||
return PerFileTestResult(results, totalNs, errors)
|
return PerFileTestResult(results, totalNs, errors)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user