diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/ExternalFunChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/ExternalFunChecker.kt index c1b7a221c2ac992cc7740e1102945d559c00060a..f863e7643e38f8f304e8b54f0f61f54208482896 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/ExternalFunChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/ExternalFunChecker.kt @@ -23,8 +23,8 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclarationWithBody import org.jetbrains.kotlin.psi.KtPropertyAccessor import org.jetbrains.kotlin.resolve.DescriptorUtils -import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker +import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext import org.jetbrains.kotlin.resolve.inline.InlineUtil import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm @@ -39,7 +39,9 @@ class ExternalFunChecker : DeclarationChecker { is ClassDescriptor -> "class" else -> "non-function declaration" } - trace.report(Errors.WRONG_MODIFIER_TARGET.on(declaration, KtTokens.EXTERNAL_KEYWORD, target)) + declaration.modifierList?.getModifier(KtTokens.EXTERNAL_KEYWORD)?.let { + trace.report(Errors.WRONG_MODIFIER_TARGET.on(it, KtTokens.EXTERNAL_KEYWORD, target)) + } return } diff --git a/compiler/testData/diagnostics/testsWithStdLib/native/nonFunction.kt b/compiler/testData/diagnostics/testsWithStdLib/native/nonFunction.kt index d6d31540478c412c46905a568924c1be8c699ff2..60590cbd4580931dcc86b6d748e9e62bdbef1578 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/native/nonFunction.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/native/nonFunction.kt @@ -1,9 +1,9 @@ -external class A +external class A -external val foo: Int = 23 +external val foo: Int = 23 class B { - external class A + external class A - external val foo: Int = 23 -} \ No newline at end of file + external val foo: Int = 23 +} diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java index c61e1d6eca93c12d2db70cdbb32c3b802fc8a8f9..2c59755eaef1f1ea598b0e1c19cb049d4b81cecb 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java @@ -650,6 +650,11 @@ public class HighLevelQuickFixTestGenerated extends AbstractHighLevelQuickFixTes runTest("idea/testData/quickfix/modifiers/removeConst.kt"); } + @TestMetadata("removeExternalModifier.kt") + public void testRemoveExternalModifier() throws Exception { + runTest("idea/testData/quickfix/modifiers/removeExternalModifier.kt"); + } + @TestMetadata("removeIncompatibleModifier.kt") public void testRemoveIncompatibleModifier() throws Exception { runTest("idea/testData/quickfix/modifiers/removeIncompatibleModifier.kt"); diff --git a/idea/testData/quickfix/modifiers/removeExternalModifier.kt b/idea/testData/quickfix/modifiers/removeExternalModifier.kt new file mode 100644 index 0000000000000000000000000000000000000000..4281aac13ccc2adf332d9c2b55012c632aaffcd8 --- /dev/null +++ b/idea/testData/quickfix/modifiers/removeExternalModifier.kt @@ -0,0 +1,5 @@ +// "Remove 'external' modifier" "true" + +class B { + external val foo: Int = 23 +} \ No newline at end of file diff --git a/idea/testData/quickfix/modifiers/removeExternalModifier.kt.after b/idea/testData/quickfix/modifiers/removeExternalModifier.kt.after new file mode 100644 index 0000000000000000000000000000000000000000..67e909ab0abacdad09aed1fdfaf06dab644ecb08 --- /dev/null +++ b/idea/testData/quickfix/modifiers/removeExternalModifier.kt.after @@ -0,0 +1,5 @@ +// "Remove 'external' modifier" "true" + +class B { + val foo: Int = 23 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 3831e252bd16778f0781c686c1f978d0659fd177..8455ad864edf255e1d4c328c5ec8779c8bd8b2f2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -9432,6 +9432,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/modifiers/removeConst.kt"); } + @TestMetadata("removeExternalModifier.kt") + public void testRemoveExternalModifier() throws Exception { + runTest("idea/testData/quickfix/modifiers/removeExternalModifier.kt"); + } + @TestMetadata("removeIncompatibleModifier.kt") public void testRemoveIncompatibleModifier() throws Exception { runTest("idea/testData/quickfix/modifiers/removeIncompatibleModifier.kt");