diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AllKotlinLightClassTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AllKotlinLightClassTest.kt index c55a8f2b1fd..fc8ffbc22bb 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AllKotlinLightClassTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AllKotlinLightClassTest.kt @@ -27,27 +27,37 @@ class AllKotlinLightClassTest : WholeProjectPerformanceTest(), WholeProjectKotli val errors = mutableListOf() - val result = measureNanoTime { - try { - // Build light class by PsiFile - psiFile.acceptRecursively(object : KtVisitorVoid() { - override fun visitClassOrObject(classOrObject: KtClassOrObject) { - if (classOrObject.containingDeclarationForPseudocode != null) return - val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return - Arrays.hashCode(lightClass.superTypes) - Arrays.hashCode(lightClass.fields) - Arrays.hashCode(lightClass.methods) - lightClass.hashCode() - } - }) + fun buildAllLightClasses(name: String, predicate: (KtClassOrObject) -> Boolean) { + val result = measureNanoTime { + try { + // Build light class by PsiFile + psiFile.acceptRecursively(object : KtVisitorVoid() { + override fun visitClassOrObject(classOrObject: KtClassOrObject) { + if (!predicate(classOrObject)) return + val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return + Arrays.hashCode(lightClass.superTypes) + Arrays.hashCode(lightClass.fields) + Arrays.hashCode(lightClass.methods) + lightClass.hashCode() + } + }) - } catch (t: Throwable) { - t.printStackTrace() - errors += t + } catch (t: Throwable) { + t.printStackTrace() + 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) }