From 4e3a3ce8e138b9cb853bf719afe0bf64606d2d43 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Tue, 31 Oct 2023 17:47:11 +0100 Subject: [PATCH] [kotlin] Restore dumbAware for K1 #KTIJ-25608 #KTIJ-27573 Fixed GitOrigin-RevId: 98accc8ea98539b6091ad12e90da76b2569ed1f3 --- .../resources/kotlin.highlighting.k2.xml | 5 -- .../K2HighlightingMetaInfoTestGenerated.java | 10 ++++ .../META-INF/kotlin.highlighting-shared.xml | 5 ++ .../AnnotationEntryHighlightingVisitor.kt | 6 +-- .../DeclarationHighlightingVisitor.kt | 4 +- .../kotlin/idea/tests/kotlin.idea.tests.iml | 1 + .../codeMetaInfo/AbstractCodeMetaInfoTest.kt | 46 ++++++++++++++----- .../AbstractHighlightingMetaInfoTest.kt | 2 + .../CompiledFilesHighlightingTest.kt | 34 ++++++++++---- .../K1HighlightingMetaInfoTestGenerated.java | 10 ++++ .../tests/testData/highlighter/Annotations.kt | 6 +-- .../highlighter/AutoCreatedItParameter.kt | 1 + .../highlighter/DefinitelyNonNullableType.kt | 2 +- .../highlighter/DelegateFunctionMissing.kt | 3 +- .../testData/highlighter/DelegatingCtor.kt | 2 +- .../tests/testData/highlighter/Dynamic.kt | 1 + .../idea/tests/testData/highlighter/Enums.kt | 1 + .../tests/testData/highlighter/Functions.kt | 1 + .../highlighter/InaccessibleExpression.kt | 2 +- .../tests/testData/highlighter/InvokeCall.kt | 1 + .../tests/testData/highlighter/JavaTypes.kt | 1 + .../idea/tests/testData/highlighter/KDoc.kt | 1 + .../testData/highlighter/KotlinInjection.kt | 1 + .../testData/highlighter/NamedArguments.kt | 1 + .../testData/highlighter/NonNullAssertion.kt | 2 + .../idea/tests/testData/highlighter/Object.kt | 1 + .../tests/testData/highlighter/SmartCast.kt | 1 + .../highlighter/SyntheticExtensionProperty.kt | 1 + .../tests/testData/highlighter/TypeAlias2.kt | 2 +- .../highlighter/TypeAliasAnnotation.kt | 2 +- .../highlighter/TypesAndAnnotations.kt | 1 + .../AnnotationsInDumbMode.kt | 20 ++++++++ .../AnnotationsInDumbMode.kt.highlighting | 20 ++++++++ .../Labels.kt.highlighting | 4 +- ...rtiesWithPropertyDeclarationsInDumbMode.kt | 44 ++++++++++++++++++ ...ertyDeclarationsInDumbMode.kt.highlighting | 44 ++++++++++++++++++ .../mppIsNotEnabled.kt.highlighting | 2 +- 37 files changed, 249 insertions(+), 42 deletions(-) rename plugins/kotlin/highlighting/{highlighting-k2/src/org/jetbrains/kotlin/idea => highlighting-shared/src/org/jetbrains/kotlin/idea/base}/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt (86%) rename plugins/kotlin/highlighting/{highlighting-k2/src/org/jetbrains/kotlin/idea => highlighting-shared/src/org/jetbrains/kotlin/idea/base}/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt (95%) create mode 100644 plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt create mode 100644 plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt.highlighting create mode 100644 plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt create mode 100644 plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt.highlighting diff --git a/plugins/kotlin/highlighting/highlighting-k2/resources/kotlin.highlighting.k2.xml b/plugins/kotlin/highlighting/highlighting-k2/resources/kotlin.highlighting.k2.xml index 7231b773896e..adc90ac4b568 100644 --- a/plugins/kotlin/highlighting/highlighting-k2/resources/kotlin.highlighting.k2.xml +++ b/plugins/kotlin/highlighting/highlighting-k2/resources/kotlin.highlighting.k2.xml @@ -17,9 +17,4 @@ - - - - - diff --git a/plugins/kotlin/highlighting/highlighting-k2/test/org/jetbrains/kotlin/idea/k2/highlighting/K2HighlightingMetaInfoTestGenerated.java b/plugins/kotlin/highlighting/highlighting-k2/test/org/jetbrains/kotlin/idea/k2/highlighting/K2HighlightingMetaInfoTestGenerated.java index 76d6cb430786..974c26531b5e 100644 --- a/plugins/kotlin/highlighting/highlighting-k2/test/org/jetbrains/kotlin/idea/k2/highlighting/K2HighlightingMetaInfoTestGenerated.java +++ b/plugins/kotlin/highlighting/highlighting-k2/test/org/jetbrains/kotlin/idea/k2/highlighting/K2HighlightingMetaInfoTestGenerated.java @@ -140,6 +140,11 @@ public abstract class K2HighlightingMetaInfoTestGenerated extends AbstractK2High runTest("../../idea/tests/testData/highlighterMetaInfo/Annotations.kt"); } + @TestMetadata("AnnotationsInDumbMode.kt") + public void testAnnotationsInDumbMode() throws Exception { + runTest("../../idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt"); + } + @TestMetadata("AutoCreatedItParameter.kt") public void testAutoCreatedItParameter() throws Exception { runTest("../../idea/tests/testData/highlighterMetaInfo/AutoCreatedItParameter.kt"); @@ -240,6 +245,11 @@ public abstract class K2HighlightingMetaInfoTestGenerated extends AbstractK2High runTest("../../idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarations.kt"); } + @TestMetadata("PropertiesWithPropertyDeclarationsInDumbMode.kt") + public void testPropertiesWithPropertyDeclarationsInDumbMode() throws Exception { + runTest("../../idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt"); + } + @TestMetadata("script.kts") public void testScript() throws Exception { runTest("../../idea/tests/testData/highlighterMetaInfo/script.kts"); diff --git a/plugins/kotlin/highlighting/highlighting-shared/resources/META-INF/kotlin.highlighting-shared.xml b/plugins/kotlin/highlighting/highlighting-shared/resources/META-INF/kotlin.highlighting-shared.xml index bfb0c516b8f8..ac18b9d440a8 100644 --- a/plugins/kotlin/highlighting/highlighting-shared/resources/META-INF/kotlin.highlighting-shared.xml +++ b/plugins/kotlin/highlighting/highlighting-shared/resources/META-INF/kotlin.highlighting-shared.xml @@ -21,4 +21,9 @@ + + + + + diff --git a/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt b/plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt similarity index 86% rename from plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt rename to plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt index 91d8d059b6b6..f541adcceb41 100644 --- a/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt +++ b/plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/AnnotationEntryHighlightingVisitor.kt @@ -1,6 +1,6 @@ // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package org.jetbrains.kotlin.idea.highlighting +package org.jetbrains.kotlin.idea.base.highlighting.beforeResolve import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder import com.intellij.openapi.util.TextRange @@ -15,11 +15,11 @@ internal class AnnotationEntryHighlightingVisitor( holder: HighlightInfoHolder ) : AbstractHighlightingVisitor(holder) { override fun visitAnnotationEntry(annotationEntry: KtAnnotationEntry) { - val range = annotationEntry.getTextRangeToHiglight() ?: return + val range = annotationEntry.getTextRangeToHighlight() ?: return highlightName(annotationEntry.project, range, KotlinHighlightInfoTypeSemanticNames.ANNOTATION) } - private fun KtAnnotationEntry.getTextRangeToHiglight(): TextRange? { + private fun KtAnnotationEntry.getTextRangeToHighlight(): TextRange? { val atSymbol = atSymbol ?: return null val typeReference = typeReference ?: return null return TextRange(atSymbol.startOffset, typeReference.endOffset) diff --git a/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt b/plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt similarity index 95% rename from plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt rename to plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt index 3c222a7a0fbf..39fbf2693a5d 100644 --- a/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt +++ b/plugins/kotlin/highlighting/highlighting-shared/src/org/jetbrains/kotlin/idea/base/highlighting/beforeResolve/DeclarationHighlightingVisitor.kt @@ -1,6 +1,6 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package org.jetbrains.kotlin.idea.highlighting +package org.jetbrains.kotlin.idea.base.highlighting.beforeResolve import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder import com.intellij.psi.util.PsiUtilCore diff --git a/plugins/kotlin/idea/tests/kotlin.idea.tests.iml b/plugins/kotlin/idea/tests/kotlin.idea.tests.iml index 6b872bc682e8..ec2305c2e6bb 100644 --- a/plugins/kotlin/idea/tests/kotlin.idea.tests.iml +++ b/plugins/kotlin/idea/tests/kotlin.idea.tests.iml @@ -136,5 +136,6 @@ + \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt index f03365620cb0..eab0bf6ed37b 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/AbstractCodeMetaInfoTest.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.idea.codeMetaInfo import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase +import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl import com.intellij.lang.annotation.HighlightSeverity import com.intellij.openapi.application.ApplicationManager @@ -10,6 +11,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.Project +import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiDocumentManager @@ -21,6 +23,7 @@ import com.intellij.psi.impl.source.tree.TreeElement import com.intellij.psi.impl.source.tree.TreeUtil import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.UsageSearchContext +import com.intellij.testFramework.DumbModeTestUtils import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl import com.intellij.testFramework.runInEdtAndWait import com.intellij.util.LineSeparator @@ -61,6 +64,7 @@ import kotlin.io.path.exists class CodeMetaInfoTestCase( val codeMetaInfoTypes: Collection, val checkNoDiagnosticError: Boolean = false, + val dumbMode: Boolean = false, private val filterMetaInfo: (CodeMetaInfo) -> Boolean = { true }, ) : DaemonAnalyzerTestCase() { @@ -141,7 +145,7 @@ class CodeMetaInfoTestCase( ApplicationManager.getApplication().runWriteAction { TreeUtil.clearCaches(myFile.node as TreeElement) } //to initialize caches - if (!DumbService.isDumb(myProject)) { + if (!dumbMode && !DumbService.isDumb(myProject)) { CacheManager.getInstance(myProject).getFilesWithWord( "XXX", UsageSearchContext.IN_COMMENTS, @@ -150,20 +154,38 @@ class CodeMetaInfoTestCase( ) } - for (configuration in codeMetaInfoTypes) { - when (configuration) { - is DiagnosticCodeMetaInfoRenderConfiguration -> { - codeMetaInfoForCheck.addAll(getDiagnosticCodeMetaInfos(configuration)) + fun task() { + for (configuration in codeMetaInfoTypes) { + when (configuration) { + is DiagnosticCodeMetaInfoRenderConfiguration -> { + codeMetaInfoForCheck.addAll(getDiagnosticCodeMetaInfos(configuration)) + } + + is HighlightingConfiguration -> { + codeMetaInfoForCheck.addAll(getHighlightingCodeMetaInfos(configuration)) + } + + is LineMarkerConfiguration -> { + codeMetaInfoForCheck.addAll(getLineMarkerCodeMetaInfos(configuration)) + } + + else -> throw IllegalArgumentException("Unexpected code meta info configuration: $configuration") } - is HighlightingConfiguration -> { - codeMetaInfoForCheck.addAll(getHighlightingCodeMetaInfos(configuration)) - } - is LineMarkerConfiguration -> { - codeMetaInfoForCheck.addAll(getLineMarkerCodeMetaInfos(configuration)) - } - else -> throw IllegalArgumentException("Unexpected code meta info configuration: $configuration") } } + + if (dumbMode) { + val disposable = Disposer.newCheckedDisposable("mustWaitForSmartMode") + try { + (DaemonCodeAnalyzer.getInstance(project) as DaemonCodeAnalyzerImpl).mustWaitForSmartMode(false, disposable) + DumbModeTestUtils.runInDumbModeSynchronously(project) { task() } + } finally { + Disposer.dispose(disposable) + } + } else { + task() + } + if (codeMetaInfoTypes.any { it is DiagnosticCodeMetaInfoRenderConfiguration } && !codeMetaInfoTypes.any { it is HighlightingConfiguration } ) { diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/AbstractHighlightingMetaInfoTest.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/AbstractHighlightingMetaInfoTest.kt index 94d2ecf93b2d..cbd26f382758 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/AbstractHighlightingMetaInfoTest.kt +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/AbstractHighlightingMetaInfoTest.kt @@ -46,6 +46,7 @@ abstract class AbstractHighlightingMetaInfoTest : KotlinMultiFileLightCodeInsigh allowErrorHighlighting = ALLOW_ERRORS in globalDirectives, highlightWarnings = HIGHLIGHT_WARNINGS in globalDirectives, ), + dumbMode = DUMB_MODE in globalDirectives ) codeMetaInfoTestCase.checkFile(file.virtualFile, expectedHighlightingFile, project) @@ -114,5 +115,6 @@ abstract class AbstractHighlightingMetaInfoTest : KotlinMultiFileLightCodeInsigh private const val HIGHLIGHT_WARNINGS = "HIGHLIGHT_WARNINGS" private const val HIGHLIGHTER_ATTRIBUTES_KEY = "HIGHLIGHTER_ATTRIBUTES_KEY" private const val CHECK_SYMBOL_NAMES = "CHECK_SYMBOL_NAMES" + private const val DUMB_MODE = "DUMB_MODE" } } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/CompiledFilesHighlightingTest.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/CompiledFilesHighlightingTest.kt index 6f60a80bd892..8ffd15b7028f 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/CompiledFilesHighlightingTest.kt +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/CompiledFilesHighlightingTest.kt @@ -19,7 +19,6 @@ import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl import com.intellij.util.io.URLUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking -import org.jetbrains.kotlin.idea.actions.bytecode.KotlinBytecodeToolWindow import org.jetbrains.kotlin.idea.base.plugin.artifacts.TestKotlinArtifacts import org.jetbrains.kotlin.idea.base.test.TestRoot import org.jetbrains.kotlin.idea.jvmDecompiler.KotlinBytecodeDecompiler @@ -37,17 +36,29 @@ import java.io.File class CompiledFilesHighlightingTest: KotlinLightCodeInsightFixtureTestCase() { @TestMetadata("kotlin/collections/GroupingKt.kotlin_metadata") fun testKotlinCollectionsGroupingKtKotlinMetadata() { - doTestWithLibraryFile(TestKotlinArtifacts.kotlinStdlibCommon, FileHighlightingSetting.SKIP_INSPECTION) + doTestWithLibraryFile( + TestKotlinArtifacts.kotlinStdlibCommon, + FileHighlightingSetting.SKIP_INSPECTION, + expectedDuplicatedHighlighting = true + ) } @TestMetadata("kotlin/time/TimeSource.class") fun testKotlinTimeTimeSourceClass() { - doTestWithLibraryFile(TestKotlinArtifacts.kotlinStdlib, FileHighlightingSetting.SKIP_INSPECTION) + doTestWithLibraryFile( + TestKotlinArtifacts.kotlinStdlib, + FileHighlightingSetting.SKIP_INSPECTION, + expectedDuplicatedHighlighting = true + ) } @TestMetadata("default/linkdata/package_kotlin.io/0_io.knm") fun testKotlinNativeLinkdataPackageKotlinIO0ioKnm() { - doTestWithLibraryFile(TestKotlinArtifacts.kotlinStdlibNative, FileHighlightingSetting.SKIP_INSPECTION) + doTestWithLibraryFile( + TestKotlinArtifacts.kotlinStdlibNative, + FileHighlightingSetting.SKIP_INSPECTION, + expectedDuplicatedHighlighting = true + ) } @TestMetadata("kotlin/annotations/OptIn.kt") @@ -71,6 +82,7 @@ class CompiledFilesHighlightingTest: KotlinLightCodeInsightFixtureTestCase() { private fun doTestWithLibraryFile( libraryFile: File, expectedHighlightingSetting: FileHighlightingSetting, + expectedDuplicatedHighlighting: Boolean = false, openFileAction: (VirtualFile) -> VirtualFile = { it } ) { val libraryVirtualFile = @@ -89,7 +101,7 @@ class CompiledFilesHighlightingTest: KotlinLightCodeInsightFixtureTestCase() { val highlightingSetting = HighlightingSettingsPerFile.getInstance(project).getHighlightingSettingForRoot(openedPsiFile) assertEquals(expectedHighlightingSetting, highlightingSetting) myFixture.openFileInEditor(fileToOpen) - doTest() + doTest(expectedDuplicatedHighlighting) } } @@ -105,15 +117,21 @@ class CompiledFilesHighlightingTest: KotlinLightCodeInsightFixtureTestCase() { } } - private fun doTest() { + private fun doTest(expectedDuplicatedHighlighting: Boolean) { val fileText = FileUtil.loadFile(File(dataFilePath(fileName().replace('/', '.') + ".txt")), true) try { withCustomCompilerOptions(fileText, project, module) { - (myFixture as CodeInsightTestFixtureImpl).canChangeDocumentDuringHighlighting(false) + val fixture = myFixture as CodeInsightTestFixtureImpl + fixture.canChangeDocumentDuringHighlighting(false) val data = ExpectedHighlightingData(DocumentImpl(fileText), true, true, true) data.checkSymbolNames() data.init() - (myFixture as CodeInsightTestFixtureImpl).collectAndCheckHighlighting(data) + val check: () -> Unit = { fixture.collectAndCheckHighlighting(data) } + if (expectedDuplicatedHighlighting) { + ExpectedHighlightingData.expectedDuplicatedHighlighting(check) + } else { + check() + } } } catch (e: FileComparisonFailure) { val highlights = diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/K1HighlightingMetaInfoTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/K1HighlightingMetaInfoTestGenerated.java index ef48c4a7d911..725c6645e062 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/K1HighlightingMetaInfoTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/highlighter/K1HighlightingMetaInfoTestGenerated.java @@ -140,6 +140,11 @@ public abstract class K1HighlightingMetaInfoTestGenerated extends AbstractK1High runTest("testData/highlighterMetaInfo/Annotations.kt"); } + @TestMetadata("AnnotationsInDumbMode.kt") + public void testAnnotationsInDumbMode() throws Exception { + runTest("testData/highlighterMetaInfo/AnnotationsInDumbMode.kt"); + } + @TestMetadata("AutoCreatedItParameter.kt") public void testAutoCreatedItParameter() throws Exception { runTest("testData/highlighterMetaInfo/AutoCreatedItParameter.kt"); @@ -240,6 +245,11 @@ public abstract class K1HighlightingMetaInfoTestGenerated extends AbstractK1High runTest("testData/highlighterMetaInfo/PropertiesWithPropertyDeclarations.kt"); } + @TestMetadata("PropertiesWithPropertyDeclarationsInDumbMode.kt") + public void testPropertiesWithPropertyDeclarationsInDumbMode() throws Exception { + runTest("testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt"); + } + @TestMetadata("script.kts") public void testScript() throws Exception { runTest("testData/highlighterMetaInfo/script.kts"); diff --git a/plugins/kotlin/idea/tests/testData/highlighter/Annotations.kt b/plugins/kotlin/idea/tests/testData/highlighter/Annotations.kt index d674227f4d5b..13cd458efcd2 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/Annotations.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/Annotations.kt @@ -17,12 +17,12 @@ fun foo() { bar @Ann { 1 } - @Err + @Err 5 } -@Err class Err1 +@Err class Err1 class NotAnn -@NotAnn +@NotAnn class C diff --git a/plugins/kotlin/idea/tests/testData/highlighter/AutoCreatedItParameter.kt b/plugins/kotlin/idea/tests/testData/highlighter/AutoCreatedItParameter.kt index 91c738224b08..713f8e3947fa 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/AutoCreatedItParameter.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/AutoCreatedItParameter.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING fun test() { val vect = MyIterable<Int>() vect.filter { it != 2 }.forEach { it.toString() } diff --git a/plugins/kotlin/idea/tests/testData/highlighter/DefinitelyNonNullableType.kt b/plugins/kotlin/idea/tests/testData/highlighter/DefinitelyNonNullableType.kt index 7331243f100f..2e4ffad931bd 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/DefinitelyNonNullableType.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/DefinitelyNonNullableType.kt @@ -1,5 +1,5 @@ // LANGUAGE_VERSION: 1.8 - +// EXPECTED_DUPLICATED_HIGHLIGHTING fun <T> foo(x: T & Any) : T & Any { val y: T & Any = x return y diff --git a/plugins/kotlin/idea/tests/testData/highlighter/DelegateFunctionMissing.kt b/plugins/kotlin/idea/tests/testData/highlighter/DelegateFunctionMissing.kt index 32ee828d236c..9ba4ab643291 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/DelegateFunctionMissing.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/DelegateFunctionMissing.kt @@ -1,4 +1,5 @@ // IGNORE_K2 +// EXPECTED_DUPLICATED_HIGHLIGHTING class X<T>{} fun <T> foo() : X<T> {} -val x by foo<>() \ No newline at end of file +val x by foo<>() \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/highlighter/DelegatingCtor.kt b/plugins/kotlin/idea/tests/testData/highlighter/DelegatingCtor.kt index db8eb96f078e..ff8fbc9870d5 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/DelegatingCtor.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/DelegatingCtor.kt @@ -1,5 +1,5 @@ // IGNORE_K2 - +// EXPECTED_DUPLICATED_HIGHLIGHTING open class Foo { constructor(i: Int) } diff --git a/plugins/kotlin/idea/tests/testData/highlighter/Dynamic.kt b/plugins/kotlin/idea/tests/testData/highlighter/Dynamic.kt index 4c8162f8dfa3..10c17c42b4bd 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/Dynamic.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/Dynamic.kt @@ -1,4 +1,5 @@ // IGNORE_K2 +// EXPECTED_DUPLICATED_HIGHLIGHTING package testing fun tst(d: dynamic) { diff --git a/plugins/kotlin/idea/tests/testData/highlighter/Enums.kt b/plugins/kotlin/idea/tests/testData/highlighter/Enums.kt index 9280f0b2a91e..308de217e9b2 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/Enums.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/Enums.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING package testing enum class Test { diff --git a/plugins/kotlin/idea/tests/testData/highlighter/Functions.kt b/plugins/kotlin/idea/tests/testData/highlighter/Functions.kt index f45127d0d616..5360b65c41c7 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/Functions.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/Functions.kt @@ -1,4 +1,5 @@ // WITH_STDLIB +// EXPECTED_DUPLICATED_HIGHLIGHTING fun global() { fun inner() { diff --git a/plugins/kotlin/idea/tests/testData/highlighter/InaccessibleExpression.kt b/plugins/kotlin/idea/tests/testData/highlighter/InaccessibleExpression.kt index 6ca3a7bb7195..768e98240852 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/InaccessibleExpression.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/InaccessibleExpression.kt @@ -1,5 +1,5 @@ // IGNORE_K2 - +// EXPECTED_DUPLICATED_HIGHLIGHTING interface Zoo<T> { inner enum class Var : Zoo<T> } diff --git a/plugins/kotlin/idea/tests/testData/highlighter/InvokeCall.kt b/plugins/kotlin/idea/tests/testData/highlighter/InvokeCall.kt index 2b4d5784fa73..e79179eaa160 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/InvokeCall.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/InvokeCall.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING fun test() { Test("text", "text")() // BUG } diff --git a/plugins/kotlin/idea/tests/testData/highlighter/JavaTypes.kt b/plugins/kotlin/idea/tests/testData/highlighter/JavaTypes.kt index da33fb3b21fe..b6770b7409a0 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/JavaTypes.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/JavaTypes.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING @SuppressWarnings class TheClass : Runnable, Thread() { val x = id } diff --git a/plugins/kotlin/idea/tests/testData/highlighter/KDoc.kt b/plugins/kotlin/idea/tests/testData/highlighter/KDoc.kt index 643e71abe2eb..f17675a3ed20 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/KDoc.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/KDoc.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING /** * @param x foo and [baz] * @param y bar diff --git a/plugins/kotlin/idea/tests/testData/highlighter/KotlinInjection.kt b/plugins/kotlin/idea/tests/testData/highlighter/KotlinInjection.kt index 89955b09169a..40150b0bd3ed 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/KotlinInjection.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/KotlinInjection.kt @@ -1,4 +1,5 @@ // IGNORE_K2 +// EXPECTED_DUPLICATED_HIGHLIGHTING package language_injection import org.intellij.lang.annotations.Language diff --git a/plugins/kotlin/idea/tests/testData/highlighter/NamedArguments.kt b/plugins/kotlin/idea/tests/testData/highlighter/NamedArguments.kt index d63b88a4652d..aa48c57b59d4 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/NamedArguments.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/NamedArguments.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING @Suppress(names = ["foo"]) fun foo(p1: Int, p2: String): String { return p2 + p1 diff --git a/plugins/kotlin/idea/tests/testData/highlighter/NonNullAssertion.kt b/plugins/kotlin/idea/tests/testData/highlighter/NonNullAssertion.kt index f64de9eae328..6cf71bea518c 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/NonNullAssertion.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/NonNullAssertion.kt @@ -1,3 +1,5 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING + fun test(s: String?) { s!!.length } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/highlighter/Object.kt b/plugins/kotlin/idea/tests/testData/highlighter/Object.kt index 1f76c6b8f8be..e21a23b81a8b 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/Object.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/Object.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING package testing object O { diff --git a/plugins/kotlin/idea/tests/testData/highlighter/SmartCast.kt b/plugins/kotlin/idea/tests/testData/highlighter/SmartCast.kt index d3a9f778624a..7347e3ef76cd 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/SmartCast.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/SmartCast.kt @@ -1,4 +1,5 @@ // IGNORE_K2 +// EXPECTED_DUPLICATED_HIGHLIGHTING class My(val x: Int?) fun My?.foo(): Int { diff --git a/plugins/kotlin/idea/tests/testData/highlighter/SyntheticExtensionProperty.kt b/plugins/kotlin/idea/tests/testData/highlighter/SyntheticExtensionProperty.kt index e748bf421371..ee426918c287 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/SyntheticExtensionProperty.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/SyntheticExtensionProperty.kt @@ -1,2 +1,3 @@ // IGNORE_K2 +// EXPECTED_DUPLICATED_HIGHLIGHTING val weekYear = java.util.Calendar.getInstance().weekYear \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/highlighter/TypeAlias2.kt b/plugins/kotlin/idea/tests/testData/highlighter/TypeAlias2.kt index 6d92e5a9edc5..df16a1ce6756 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/TypeAlias2.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/TypeAlias2.kt @@ -1,5 +1,5 @@ // IGNORE_K2 - +// EXPECTED_DUPLICATED_HIGHLIGHTING annotation class Anno typealias AnnoAlias = Anno @Anno fun annoUsage() {} diff --git a/plugins/kotlin/idea/tests/testData/highlighter/TypeAliasAnnotation.kt b/plugins/kotlin/idea/tests/testData/highlighter/TypeAliasAnnotation.kt index 8dd8f63a65ee..87aa9351dd08 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/TypeAliasAnnotation.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/TypeAliasAnnotation.kt @@ -1,5 +1,5 @@ // CONFIGURE_LIBRARY: KotlinTestJunit,JUnit4 - +// EXPECTED_DUPLICATED_HIGHLIGHTING import kotlin.test.Test class Foo { @Test diff --git a/plugins/kotlin/idea/tests/testData/highlighter/TypesAndAnnotations.kt b/plugins/kotlin/idea/tests/testData/highlighter/TypesAndAnnotations.kt index 2f2ddf515948..fc277828b2da 100644 --- a/plugins/kotlin/idea/tests/testData/highlighter/TypesAndAnnotations.kt +++ b/plugins/kotlin/idea/tests/testData/highlighter/TypesAndAnnotations.kt @@ -1,3 +1,4 @@ +// EXPECTED_DUPLICATED_HIGHLIGHTING interface TheInterface { } diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt new file mode 100644 index 000000000000..206ea5be7558 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt @@ -0,0 +1,20 @@ +// DUMB_MODE +// FIR_IDENTICAL +// CHECK_SYMBOL_NAMES +// HIGHLIGHTER_ATTRIBUTES_KEY +@Target(AnnotationTarget.CLASS, AnnotationTarget.EXPRESSION) +@Retention(AnnotationRetention.SOURCE) +annotation class Ann + +@Ann class A + +fun bar(block: () -> Int) = block() + +private +fun foo() { + 1 + @Ann 2 + + @Ann 3 + 4 + + bar @Ann { 1 } +} diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt.highlighting b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt.highlighting new file mode 100644 index 000000000000..6adec0a8eb39 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/AnnotationsInDumbMode.kt.highlighting @@ -0,0 +1,20 @@ +// DUMB_MODE +// FIR_IDENTICAL +// CHECK_SYMBOL_NAMES +// HIGHLIGHTER_ATTRIBUTES_KEY +@Target(AnnotationTarget.CLASS, AnnotationTarget.EXPRESSION) +@Retention(AnnotationRetention.SOURCE) +annotation class Ann + +@Ann class A + +fun bar(block: () -> Int) = block() + +private +fun foo() { + 1 + @Ann 2 + + @Ann 3 + 4 + + bar @Ann { 1 } +} diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/Labels.kt.highlighting b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/Labels.kt.highlighting index ea8927023973..174c7d74c2c9 100644 --- a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/Labels.kt.highlighting +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/Labels.kt.highlighting @@ -7,11 +7,11 @@ fun @label 2 } - loop@ for (i in 1..100) { + loop@ for (i in 1..100) { break@loop } - loop2@ for (i in 1..100) { + loop2@ for (i in 1..100) { break@loop2 } diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt new file mode 100644 index 000000000000..5ba9b40be14b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt @@ -0,0 +1,44 @@ +// DUMB_MODE +// FIR_IDENTICAL +// CHECK_SYMBOL_NAMES +// HIGHLIGHTER_ATTRIBUTES_KEY +val packageSize = 0 +val packageSizeGetter +get() = packageSize * 2 + +var packageSizeSetter = 5 +set(value) { + field = value * 2 +} + +var packageSizeBean = 5 +get() = packageSize * 2 +set(value) { + field = value * 2 +} + + +class test() { + // no highlighting check + val size = 0 + + val classSize = 0 + + val classSizeGetter + get() = classSize * 2 + + var classSizeSetter = 5 + set(value) { + field = value * 2 + } + + var classSizeBean = 5 + get() = classSize * 2 + set(value) { + field = value * 2 + } + + fun callCustomPD() { + classSizeBean = 30 + } +} diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt.highlighting b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt.highlighting new file mode 100644 index 000000000000..4835c4ddb453 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/PropertiesWithPropertyDeclarationsInDumbMode.kt.highlighting @@ -0,0 +1,44 @@ +// DUMB_MODE +// FIR_IDENTICAL +// CHECK_SYMBOL_NAMES +// HIGHLIGHTER_ATTRIBUTES_KEY +val packageSize = 0 +val packageSizeGetter +get() = packageSize * 2 + +var packageSizeSetter = 5 +set(value) { + field = value * 2 +} + +var packageSizeBean = 5 +get() = packageSize * 2 +set(value) { + field = value * 2 +} + + +class test() { + // no highlighting check + val size = 0 + + val classSize = 0 + + val classSizeGetter + get() = classSize * 2 + + var classSizeSetter = 5 + set(value) { + field = value * 2 + } + + var classSizeBean = 5 + get() = classSize * 2 + set(value) { + field = value * 2 + } + + fun callCustomPD() { + classSizeBean = 30 + } +} diff --git a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/diagnostics/mppIsNotEnabled.kt.highlighting b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/diagnostics/mppIsNotEnabled.kt.highlighting index 6054cccf4b36..b67c9178fbcf 100644 --- a/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/diagnostics/mppIsNotEnabled.kt.highlighting +++ b/plugins/kotlin/idea/tests/testData/highlighterMetaInfo/diagnostics/mppIsNotEnabled.kt.highlighting @@ -7,4 +7,4 @@ public operator fun invoke(cause: Throwable?) } -public actual typealias CompletionHandler = (cause: Throwable?) -> Unit +public actual typealias CompletionHandler = (cause: Throwable?) -> Unit