From b79aa132423f24f312665cb653cf235a14960cdb Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Mon, 14 Mar 2016 18:31:59 +0300 Subject: [PATCH] Complete private members from libraries in Evaluate Expression dialog --- Changelog.md | 1 + .../kotlin/idea/completion/CompletionSession.kt | 2 +- .../privatesInSecondPressCompletion.kt | 13 +++++++++++++ .../privatesInSecondPressCompletion.kt.fragment | 1 + .../CodeFragmentCompletionTestGenerated.java | 6 ++++++ 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt create mode 100644 idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt.fragment diff --git a/Changelog.md b/Changelog.md index f97a3e773c8..dbd414090d7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -23,3 +23,4 @@ ### IDE - Debugger can distinguish nested inline arguments - Add kotlinClassName() and kotlinFunctionName() macros for use in live templates +- Complete private members from libraries in Evaluate Expression dialog diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt index 0bde5d13648..76bbbcc2db8 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt @@ -191,7 +191,7 @@ abstract class CompletionSession( if (descriptor is DeclarationDescriptorWithVisibility) { val visible = descriptor.isVisible(position, callTypeAndReceiver.receiver as? KtExpression, bindingContext, resolutionFacade) if (visible) return true - return completeNonAccessible && !descriptor.isFromLibrary() + return completeNonAccessible && (!descriptor.isFromLibrary() || file is KtCodeFragment) } return true diff --git a/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt b/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt new file mode 100644 index 00000000000..60f666c31bd --- /dev/null +++ b/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt @@ -0,0 +1,13 @@ +import java.io.File + +class MyFile : File("file") { + private val privateField = 0 +} + +fun foo(f: MyFile) { + val a = 1 +} + +// INVOCATION_COUNT: 2 +// EXIST: privateField +// EXIST: prefixLength \ No newline at end of file diff --git a/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt.fragment b/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt.fragment new file mode 100644 index 00000000000..e99175e475e --- /dev/null +++ b/idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt.fragment @@ -0,0 +1 @@ +f. \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionTestGenerated.java index c65325174f8..26c6d9e4972 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionTestGenerated.java @@ -83,6 +83,12 @@ public class CodeFragmentCompletionTestGenerated extends AbstractCodeFragmentCom doTest(fileName); } + @TestMetadata("privatesInSecondPressCompletion.kt") + public void testPrivatesInSecondPressCompletion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/codeFragments/privatesInSecondPressCompletion.kt"); + doTest(fileName); + } + @TestMetadata("topLevel.kt") public void testTopLevel() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/codeFragments/topLevel.kt");