From b9eb0cd88d7c9f113c0a096180367e85f590ec8a Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 19 Apr 2024 14:05:47 +0200 Subject: [PATCH] JPS mappings for incremental compilation refactoring: some optimizations and test data corrections GitOrigin-RevId: 7f9f1514e3c52103ad18ed67f19ae504dc6dfcc1 --- .../KotlinAwareJavaDifferentiateStrategy.java | 15 +++++++++------ .../classRemovedAndRestored/build.log | 6 ------ .../flagsAndMemberInSameClassChanged/build.log | 4 ---- .../incremental/pureKotlin/addClass/build.log | 2 -- .../addFileWithFunctionOverload/build.log | 2 -- 5 files changed, 9 insertions(+), 20 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/dependency/kotlin/KotlinAwareJavaDifferentiateStrategy.java b/jps/jps-builders/src/org/jetbrains/jps/dependency/kotlin/KotlinAwareJavaDifferentiateStrategy.java index 1eec92d4234f..d2f70b144ced 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/dependency/kotlin/KotlinAwareJavaDifferentiateStrategy.java +++ b/jps/jps-builders/src/org/jetbrains/jps/dependency/kotlin/KotlinAwareJavaDifferentiateStrategy.java @@ -45,12 +45,15 @@ public final class KotlinAwareJavaDifferentiateStrategy extends JvmDifferentiate affectClassLookupUsages(context, addedClass); } else { - debug("Affecting lookup usages for top-level functions in a newly added file ", addedClass.getName()); - for (KmFunction kmFunction : container.getFunctions()) { - Visibility visibility = Attributes.getVisibility(kmFunction); - if (visibility != Visibility.PRIVATE && visibility != Visibility.PRIVATE_TO_THIS) { - affectMemberLookupUsages(context, addedClass, kmFunction.getName(), future); - } + debug("Affecting lookup usages for top-level functions and properties in a newly added file ", addedClass.getName()); + String scopeName = getKotlinName(addedClass); + EnumSet privateAccess = EnumSet.of(Visibility.LOCAL, Visibility.INTERNAL, Visibility.PRIVATE, Visibility.PRIVATE_TO_THIS); + for (String symbolName : unique(flat( + map(filter(container.getFunctions(), f -> !privateAccess.contains(Attributes.getVisibility(f))), KmFunction::getName), + map(filter(container.getProperties(), p -> !privateAccess.contains(Attributes.getVisibility(p))), KmProperty::getName) + ))) { + context.affectUsage(new LookupNameUsage(scopeName, symbolName)); + debug("Affect ", "lookup '" + symbolName + "'", " usage owned by node '", addedClass.getName(), "'"); } } } diff --git a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log index a1fe69660c32..dd78cc866d51 100644 --- a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log +++ b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log @@ -7,16 +7,12 @@ End of files Cleaning output files: out/production/module/foo/B.class out/production/module/use/CreateAKt.class - out/production/module/use/CreateBKt.class out/production/module/use/UseAfooKt.class - out/production/module/use/UseBbarKt.class End of files Compiling files: src/B.kt src/createA.kt - src/createB.kt src/useAfoo.kt - src/useBbar.kt End of files Exit code: ABORT ------------------------------------------ @@ -30,9 +26,7 @@ Compiling files: src/A.kt src/B.kt src/createA.kt - src/createB.kt src/useAfoo.kt - src/useBbar.kt End of files Exit code: OK ------------------------------------------ diff --git a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log index a75523a3dcfb..94698981e09a 100644 --- a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log +++ b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log @@ -13,7 +13,6 @@ Cleaning output files: out/production/module/B.class out/production/module/BKt.class out/production/module/GetAKt.class - out/production/module/GetBKt.class out/production/module/META-INF/module.kotlin_module out/production/module/UseAKt.class out/production/module/UseBKt.class @@ -21,7 +20,6 @@ End of files Compiling files: src/B.kt src/getA.kt - src/getB.kt src/useA.kt src/useB.kt End of files @@ -46,7 +44,6 @@ Compiling files: src/A.kt src/B.kt src/getA.kt - src/getB.kt src/useA.kt src/useB.kt End of files @@ -62,7 +59,6 @@ Compiling files: src/A.kt src/B.kt src/getA.kt - src/getB.kt src/useA.kt src/useB.kt End of files diff --git a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addClass/build.log b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addClass/build.log index af3339db2174..af7fef723a1e 100644 --- a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addClass/build.log +++ b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addClass/build.log @@ -7,11 +7,9 @@ Exit code: OK ------------------------------------------ Cleaning output files: out/production/module/META-INF/module.kotlin_module - out/production/module/foo/FunAKt.class out/production/module/use/UseAKt.class End of files Compiling files: - src/funA.kt src/useA.kt End of files Exit code: OK diff --git a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log index bba3567de92f..134da8c76569 100644 --- a/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log +++ b/plugins/kotlin/jps/graphImplementationTests/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log @@ -7,11 +7,9 @@ Exit code: OK ------------------------------------------ Cleaning output files: out/production/module/META-INF/module.kotlin_module - out/production/module/foo/Foo1Kt.class out/production/module/use/UseKt.class End of files Compiling files: - src/foo1.kt src/use.kt End of files Exit code: OK