From 8fb213021c5fed8bb7f868d14a0c0734f9cc5b17 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 22 Nov 2018 17:55:10 +0300 Subject: [PATCH] Create expect: remove false positive in inaccessible type detector --- .../idea/quickfix/expectactual/ExpectActualUtils.kt | 11 ++++++++++- .../common/foo.kt | 1 + .../common/foo.kt.after | 3 +++ .../expectFunWithAccessibleTypeFromCommon/jvm/foo.kt | 4 ++++ .../jvm/foo.kt.after | 4 ++++ .../quickfix/QuickFixMultiModuleTestGenerated.java | 5 +++++ 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/common/foo.kt create mode 100644 idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/common/foo.kt.after create mode 100644 idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/jvm/foo.kt create mode 100644 idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/jvm/foo.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt index 006754d64b6..7afce9755be 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt @@ -19,16 +19,20 @@ import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObj import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject.BodyType.NO_BODY import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject.Companion.create import org.jetbrains.kotlin.idea.core.toDescriptor +import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.idea.refactoring.createKotlinFile import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.hasDeclarationOf import org.jetbrains.kotlin.idea.util.isEffectivelyActual +import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.js.descriptorUtils.getJetTypeFqName import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.platform.impl.isCommon import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.MultiTargetPlatform import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker @@ -287,7 +291,12 @@ private fun KotlinType.checkAccessibility(accessibleClasses: Listfoo(my: My) {} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/jvm/foo.kt.after b/idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/jvm/foo.kt.after new file mode 100644 index 00000000000..79085fc6b67 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/jvm/foo.kt.after @@ -0,0 +1,4 @@ +// "Create expected function in common module testModule_Common" "true" +// DISABLE-ERRORS + +actual fun foo(my: My) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index ec2aef714e6..6233d5e9438 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -349,6 +349,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/expectFunWithAccessibleParameter/"); } + @TestMetadata("expectFunWithAccessibleTypeFromCommon") + public void testExpectFunWithAccessibleTypeFromCommon() throws Exception { + runTest("idea/testData/multiModuleQuickFix/expectFunWithAccessibleTypeFromCommon/"); + } + @TestMetadata("expectFunWithInaccessibleBounds") public void testExpectFunWithInaccessibleBounds() throws Exception { runTest("idea/testData/multiModuleQuickFix/expectFunWithInaccessibleBounds/");