Completion for codeFragments: no duplicates for synthetic properties

This commit is contained in:
Natalia Ukhorskaya
2015-10-07 14:11:32 +03:00
parent 9f96de3f7b
commit 9d7585207c
4 changed files with 25 additions and 0 deletions
@@ -0,0 +1,13 @@
import java.io.File
fun main(args: Array<String>) {
val f: File = MyFile()
<caret>f.absoluteFile
}
class MyFile: File("")
// EXIST: absoluteFile, getAbsoluteFile
// NOTHING_ELSE
// RUNTIME_TYPE: MyFile
@@ -0,0 +1 @@
f.absoluteF<caret>
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils
fun DeclarationDescriptorWithVisibility.isVisible(
@@ -77,6 +78,10 @@ private fun compareDescriptorsText(project: Project, d1: DeclarationDescriptor?,
public fun compareDescriptors(project: Project, currentDescriptor: DeclarationDescriptor?, originalDescriptor: DeclarationDescriptor?): Boolean {
if (currentDescriptor?.name != originalDescriptor?.name) return false
if (originalDescriptor is SyntheticJavaPropertyDescriptor && currentDescriptor is SyntheticJavaPropertyDescriptor) {
return compareDescriptors(project, currentDescriptor.getMethod, originalDescriptor.getMethod)
}
if (compareDescriptorsText(project, currentDescriptor, originalDescriptor)) return true
if (originalDescriptor is CallableDescriptor && currentDescriptor is CallableDescriptor) {
@@ -77,6 +77,12 @@ public class CodeFragmentCompletionTestGenerated extends AbstractCodeFragmentCom
doTest(fileName);
}
@TestMetadata("noDuplicatesForSyntheticProperties.kt")
public void testNoDuplicatesForSyntheticProperties() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/codeFragments/noDuplicatesForSyntheticProperties.kt");
doTest(fileName);
}
@TestMetadata("topLevel.kt")
public void testTopLevel() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/codeFragments/topLevel.kt");