From 8d9f539c79ade61e2920097bed55e33447a76fb8 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Mon, 26 Mar 2018 15:59:53 +0300 Subject: [PATCH] Return correct ProjectFacade for script and its dependencies ^KT-22588 Fixed --- .../idea/caches/resolve/KotlinCacheServiceImpl.kt | 7 ++++++- .../propertyAccessor/lib/test/Utils.java | 13 +++++++++++++ .../highlighting/propertyAccessor/script.kts | 4 ++++ .../mainModule/script.kts | 4 ++++ .../mainModule/test/Utils.java | 13 +++++++++++++ .../idea/script/AbstractScriptConfigurationTest.kt | 5 +++++ ...criptConfigurationHighlightingTestGenerated.java | 12 ++++++++++++ 7 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 idea/testData/script/definition/highlighting/propertyAccessor/lib/test/Utils.java create mode 100644 idea/testData/script/definition/highlighting/propertyAccessor/script.kts create mode 100644 idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/script.kts create mode 100644 idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/test/Utils.java diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index 95b36a1a804..95932a008ba 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -404,7 +404,12 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { private fun getResolutionFacadeByModuleInfo(moduleInfo: IdeaModuleInfo, platform: TargetPlatform): ResolutionFacade { val settings = PlatformAnalysisSettings(platform, moduleInfo.sdk, moduleInfo.supportsAdditionalBuiltInsMembers()) - val projectFacade = globalFacade(settings) + val projectFacade = when (moduleInfo) { + is ScriptDependenciesInfo.ForProject, + is ScriptDependenciesSourceInfo.ForProject -> facadesForScriptDependencies[null] + is ScriptDependenciesInfo.ForFile -> facadesForScriptDependencies[moduleInfo.scriptModuleInfo] + else -> globalFacade(settings) + } return ModuleResolutionFacadeImpl(projectFacade, moduleInfo) } diff --git a/idea/testData/script/definition/highlighting/propertyAccessor/lib/test/Utils.java b/idea/testData/script/definition/highlighting/propertyAccessor/lib/test/Utils.java new file mode 100644 index 00000000000..75560121823 --- /dev/null +++ b/idea/testData/script/definition/highlighting/propertyAccessor/lib/test/Utils.java @@ -0,0 +1,13 @@ +package test; + +public class Utils { + public int getField() { + return field; + } + + public void setField(int field) { + this.field = field; + } + + private int field = 1; +} \ No newline at end of file diff --git a/idea/testData/script/definition/highlighting/propertyAccessor/script.kts b/idea/testData/script/definition/highlighting/propertyAccessor/script.kts new file mode 100644 index 00000000000..8ce4c1d450b --- /dev/null +++ b/idea/testData/script/definition/highlighting/propertyAccessor/script.kts @@ -0,0 +1,4 @@ +test.Utils().field +test.Utils().field = 2 + +// DEPENDENCIES: classpath:lib-classes \ No newline at end of file diff --git a/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/script.kts b/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/script.kts new file mode 100644 index 00000000000..2cb0cb01a18 --- /dev/null +++ b/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/script.kts @@ -0,0 +1,4 @@ +test.Utils().field +test.Utils().field = 2 + +// DEPENDENCIES: classpath:runtime-classes \ No newline at end of file diff --git a/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/test/Utils.java b/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/test/Utils.java new file mode 100644 index 00000000000..75560121823 --- /dev/null +++ b/idea/testData/script/definition/highlighting/propertyAccessorFromModule/mainModule/test/Utils.java @@ -0,0 +1,13 @@ +package test; + +public class Utils { + public int getField() { + return field; + } + + public void setField(int field) { + this.field = field; + } + + private int field = 1; +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt index b0fec5d7ca2..577af83aba1 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.idea.script +import com.intellij.codeInsight.highlighting.HighlightUsagesHandler import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.module.JavaModuleType import com.intellij.openapi.module.Module @@ -51,6 +52,10 @@ import kotlin.script.dependencies.Environment abstract class AbstractScriptConfigurationHighlightingTest : AbstractScriptConfigurationTest() { fun doTest(path: String) { configureScriptFile(path) + + // Highlight references at caret + HighlightUsagesHandler.invoke(project, editor, myFile) + checkHighlighting( editor, InTextDirectivesUtils.isDirectiveDefined(file.text, "// CHECK_WARNINGS"), diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationHighlightingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationHighlightingTestGenerated.java index 2021ff7f1df..77d4f0f0509 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationHighlightingTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationHighlightingTestGenerated.java @@ -97,6 +97,18 @@ public class ScriptConfigurationHighlightingTestGenerated extends AbstractScript doTest(fileName); } + @TestMetadata("propertyAccessor") + public void testPropertyAccessor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/highlighting/propertyAccessor/"); + doTest(fileName); + } + + @TestMetadata("propertyAccessorFromModule") + public void testPropertyAccessorFromModule() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/highlighting/propertyAccessorFromModule/"); + doTest(fileName); + } + @TestMetadata("simple") public void testSimple() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/highlighting/simple/");