diff --git a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java index cc704e2856d..8a90f1d6e6c 100644 --- a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java +++ b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java @@ -446,7 +446,7 @@ public class GenerateTests { "idea/tests/", "ReferenceResolveTestGenerated", AbstractResolveBaseTest.class, - testModel("idea/testData/resolve/references", "doTest") + testModel("idea/testData/resolve/references", true, "doTest") ); generateTest( diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getExtension.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getExtension.kt new file mode 100644 index 00000000000..9ff570a7eb0 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getExtension.kt @@ -0,0 +1,8 @@ +val x: Int by Foo() + +class Foo + +fun Foo.get(_this: Any?, p: Any?): Int = 1 + +// REF: (for Foo in ).get(Any?,Any?) + diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMember.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMember.kt new file mode 100644 index 00000000000..b825581f234 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMember.kt @@ -0,0 +1,8 @@ +val x: Int by Foo() + +class Foo { + fun get(_this: Any?, p: Any?): Int = 1 +} + +// REF: (in Foo).get(Any?,Any?) + diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMultipleDeclarations.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMultipleDeclarations.kt new file mode 100644 index 00000000000..7987fc26172 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMultipleDeclarations.kt @@ -0,0 +1,20 @@ +var x : Int by Baz() + +trait Foo { + fun get(p1: Any?, p2: Any?): Int = 1 +} + +trait Bar { + fun get(p1: Any?, p2: Any?): Int +} + +trait Zoo { + fun set(p1: Any?, p2: Any?, p3: Any?) +} + +class Baz: Foo, Bar, Zoo + +// MULTIRESOLVE +// REF: (in Bar).get(Any?,Any?) +// REF: (in Foo).get(Any?,Any?) +// REF: (in Zoo).set(Any?,Any?,Any?) diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetExtension.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetExtension.kt new file mode 100644 index 00000000000..2be0e25c726 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetExtension.kt @@ -0,0 +1,11 @@ +var x: Int by Foo() + +class Foo + +fun Foo.get(_this: Any?, p: Any?): Int = 1 +fun Foo.set(_this: Any?, p: Any?, val: Any?) {} + +// MULTIRESOLVE +// REF: (for Foo in ).get(Any?,Any?) +// REF: (for Foo in ).set(Any?,Any?,Any?) + diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetMember.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetMember.kt new file mode 100644 index 00000000000..fea3f434a0f --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetMember.kt @@ -0,0 +1,11 @@ +var x: Int by Foo() + +class Foo { + fun get(_this: Any?, p: Any?): Int = 1 + fun set(_this: Any?, p: Any?, val: Any?) {} +} + +// MULTIRESOLVE +// REF: (in Foo).get(Any?,Any?) +// REF: (in Foo).set(Any?,Any?,Any?) + diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/lazy.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/lazy.kt new file mode 100644 index 00000000000..030a6f485f9 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/lazy.kt @@ -0,0 +1,5 @@ +import kotlin.properties.Delegates + +val x: Int by Delegates.lazy {1} + +// REF: (in kotlin.properties.ReadOnlyProperty).get(R,jet.PropertyMetadata) \ No newline at end of file diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/notNull.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/notNull.kt new file mode 100644 index 00000000000..6bbb4f67616 --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/notNull.kt @@ -0,0 +1,7 @@ +import kotlin.properties.Delegates + +var x: Int by Delegates.notNull() + +// MULTIRESOLVE +// REF: (in kotlin.properties.ReadWriteProperty).get(R,jet.PropertyMetadata) +// REF: (in kotlin.properties.ReadWriteProperty).set(R,jet.PropertyMetadata,T) \ No newline at end of file diff --git a/idea/testData/resolve/references/delegatedPropertyAccessors/unresolved.kt b/idea/testData/resolve/references/delegatedPropertyAccessors/unresolved.kt new file mode 100644 index 00000000000..adc860de12b --- /dev/null +++ b/idea/testData/resolve/references/delegatedPropertyAccessors/unresolved.kt @@ -0,0 +1,5 @@ +val foo: Int by Bar() + +class Bar + +// REF_EMPTY \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/resolve/AbstractResolveBaseTest.java b/idea/tests/org/jetbrains/jet/resolve/AbstractResolveBaseTest.java index 48667765139..68d3f66e99b 100644 --- a/idea/tests/org/jetbrains/jet/resolve/AbstractResolveBaseTest.java +++ b/idea/tests/org/jetbrains/jet/resolve/AbstractResolveBaseTest.java @@ -19,22 +19,22 @@ package org.jetbrains.jet.resolve; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import com.intellij.ide.startup.impl.StartupManagerImpl; -import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.startup.StartupManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiReference; import com.intellij.psi.ResolveResult; -import com.intellij.testFramework.LightCodeInsightTestCase; +import com.intellij.testFramework.LightProjectDescriptor; +import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import junit.framework.Assert; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.InTextDirectivesUtils; -import org.jetbrains.jet.plugin.PluginTestCaseBase; +import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.jet.testing.ReferenceUtils; import java.util.List; -public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { +public abstract class AbstractResolveBaseTest extends LightPlatformCodeInsightFixtureTestCase { public static final String MULTIRESOLVE = "MULTIRESOLVE"; public static final String REF_EMPTY = "REF_EMPTY"; @@ -46,9 +46,9 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { } protected void doTest(String path) { - configureByFile(path); + myFixture.configureByFile(path); - if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), MULTIRESOLVE)) { + if (InTextDirectivesUtils.isDirectiveDefined(myFixture.getFile().getText(), MULTIRESOLVE)) { doMultiResolveTest(); } else { @@ -56,9 +56,9 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { } } - protected static void doSingleResolveTest() { - boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), REF_EMPTY); - List refs = InTextDirectivesUtils.findLinesWithPrefixesRemoved(getFile().getText(), "REF:"); + protected void doSingleResolveTest() { + boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(myFixture.getFile().getText(), REF_EMPTY); + List refs = InTextDirectivesUtils.findLinesWithPrefixesRemoved(myFixture.getFile().getText(), "REF:"); String referenceToString; if (shouldBeUnresolved) { @@ -74,8 +74,8 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString); } - int offset = getEditor().getCaretModel().getOffset(); - PsiReference psiReference = getFile().findReferenceAt(offset); + int offset = myFixture.getEditor().getCaretModel().getOffset(); + PsiReference psiReference = myFixture.getFile().findReferenceAt(offset); if (psiReference != null) { PsiElement resolvedTo = psiReference.resolve(); if (resolvedTo != null) { @@ -93,17 +93,16 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { } } else { - Assert.assertNull( - String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString), - referenceToString); + Assert.assertNull(String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString), + referenceToString); } } - protected static void doMultiResolveTest() { - List expectedReferences = InTextDirectivesUtils.findListWithPrefixes(getFile().getText(), "REF:"); + protected void doMultiResolveTest() { + List expectedReferences = InTextDirectivesUtils.findLinesWithPrefixesRemoved(myFixture.getFile().getText(), "REF:"); PsiReference psiReference = - getFile().findReferenceAt(getEditor().getCaretModel().getOffset()); + myFixture.getFile().findReferenceAt(myFixture.getEditor().getCaretModel().getOffset()); assertTrue(psiReference instanceof PsiPolyVariantReference); @@ -123,8 +122,8 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { } @Override - protected Sdk getProjectJDK() { - return PluginTestCaseBase.jdkFromIdeaHome(); + protected LightProjectDescriptor getProjectDescriptor() { + return JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE; } @NotNull diff --git a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java index ee1d9125b24..3bcb824fd72 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java @@ -31,6 +31,7 @@ import org.jetbrains.jet.resolve.AbstractResolveBaseTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("idea/testData/resolve/references") +@InnerTestClasses({ReferenceResolveTestGenerated.DelegatedPropertyAccessors.class}) public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest { public void testAllFilesPresentInReferences() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references"), Pattern.compile("^(.+)\\.kt$"), true); @@ -171,4 +172,82 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest { doTest("idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt"); } + @TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors") + @InnerTestClasses({DelegatedPropertyAccessors.InSource.class, DelegatedPropertyAccessors.InStandardLibrary.class}) + public static class DelegatedPropertyAccessors extends AbstractResolveBaseTest { + public void testAllFilesPresentInDelegatedPropertyAccessors() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("unresolved.kt") + public void testUnresolved() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/unresolved.kt"); + } + + @TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors/inSource") + public static class InSource extends AbstractResolveBaseTest { + public void testAllFilesPresentInInSource() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors/inSource"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("getExtension.kt") + public void testGetExtension() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getExtension.kt"); + } + + @TestMetadata("getMember.kt") + public void testGetMember() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMember.kt"); + } + + @TestMetadata("getMultipleDeclarations.kt") + public void testGetMultipleDeclarations() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMultipleDeclarations.kt"); + } + + @TestMetadata("getSetExtension.kt") + public void testGetSetExtension() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetExtension.kt"); + } + + @TestMetadata("getSetMember.kt") + public void testGetSetMember() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetMember.kt"); + } + + } + + @TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary") + public static class InStandardLibrary extends AbstractResolveBaseTest { + public void testAllFilesPresentInInStandardLibrary() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("lazy.kt") + public void testLazy() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/lazy.kt"); + } + + @TestMetadata("notNull.kt") + public void testNotNull() throws Exception { + doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/notNull.kt"); + } + + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("DelegatedPropertyAccessors"); + suite.addTestSuite(DelegatedPropertyAccessors.class); + suite.addTestSuite(InSource.class); + suite.addTestSuite(InStandardLibrary.class); + return suite; + } + } + + public static Test suite() { + TestSuite suite = new TestSuite("ReferenceResolveTestGenerated"); + suite.addTestSuite(ReferenceResolveTestGenerated.class); + suite.addTest(DelegatedPropertyAccessors.innerSuite()); + return suite; + } }