diff --git a/idea/testData/resolve/MultiResolve.kt b/idea/testData/resolve/CtrlClickResolve.kt similarity index 73% rename from idea/testData/resolve/MultiResolve.kt rename to idea/testData/resolve/CtrlClickResolve.kt index 6d48eaa075f..50b919c0f40 100644 --- a/idea/testData/resolve/MultiResolve.kt +++ b/idea/testData/resolve/CtrlClickResolve.kt @@ -3,6 +3,8 @@ package ctrl_click fun IntArray(vararg content : Int) : IntArray = content fun array(vararg t : T) : Array = t -fun main(args : ArrayList) { +fun main(args : Array) { var a = IntArray(array(1, 2, 3)) -} \ No newline at end of file +} + +// REF: (jet).IntArray \ No newline at end of file diff --git a/idea/testData/resolve/SeveralOverrides.kt b/idea/testData/resolve/SeveralOverrides.kt index 78f402bb27f..b3e9c9d15e5 100644 --- a/idea/testData/resolve/SeveralOverrides.kt +++ b/idea/testData/resolve/SeveralOverrides.kt @@ -12,4 +12,8 @@ trait C : A, B { fun test(c: C) { c.foo() -} \ No newline at end of file +} + +// MULTIRESOLVE +// REF: (in A).foo() +// REF: (in B).foo() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java b/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java index 94fe51bda58..8741a026434 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java +++ b/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java @@ -16,6 +16,8 @@ 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; @@ -31,6 +33,7 @@ import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.testing.ReferenceUtils; import java.io.File; +import java.util.List; public class ResolveBaseTest extends LightCodeInsightTestCase { @Override @@ -39,38 +42,47 @@ public class ResolveBaseTest extends LightCodeInsightTestCase { ((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities(); } - public void testMultiResolve() throws Exception { - doMultiResolveTest(); + public void testCtrlClickResolve() throws Exception { + doTest(); } public void testResolveClass() throws Exception { - doSingleResolveTest(); + doTest(); } public void testResolvePackageInProperty() throws Exception { - doSingleResolveTest(); + doTest(); } public void testSamConstructor() throws Exception { - doSingleResolveTest(); + doTest(); } public void testSamConstructorTypeArguments() throws Exception { - doSingleResolveTest(); + doTest(); } public void testSamAdapter() throws Exception { - doSingleResolveTest(); + doTest(); } public void testSeveralOverrides() throws Exception { - doMultiResolveTest(); + doTest(); } - protected void doSingleResolveTest() throws Exception { + protected void doTest() { String testName = getTestName(false); configureByFile(testName + ".kt"); + if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "MULTIRESOLVE")) { + doMultiResolveTest(); + } + else { + doSingleResolveTest(); + } + } + + protected static void doSingleResolveTest() { String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:"); Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString); @@ -96,9 +108,8 @@ public class ResolveBaseTest extends LightCodeInsightTestCase { } } - protected void doMultiResolveTest() throws Exception { - String testName = getTestName(false); - configureByFile(testName + ".kt"); + protected static void doMultiResolveTest() { + List expectedReferences = InTextDirectivesUtils.findListWithPrefixes(getFile().getText(), "REF:"); PsiReference psiReference = getFile().findReferenceAt(getEditor().getCaretModel().getOffset()); @@ -107,12 +118,17 @@ public class ResolveBaseTest extends LightCodeInsightTestCase { PsiPolyVariantReference variantReference = (PsiPolyVariantReference) psiReference; - PsiElement element = variantReference.resolve(); ResolveResult[] results = variantReference.multiResolve(true); + + List actualResolvedTo = Lists.newArrayList(); for (ResolveResult result : results) { - assertNotNull(result); + PsiElement resolvedToElement = result.getElement(); + assertNotNull(resolvedToElement); + + actualResolvedTo.add(ReferenceUtils.renderAsGotoImplementation(resolvedToElement)); } - assertTrue("Nothing resolved by reference '" + psiReference.getElement().getText() + "'.", element != null || results.length > 0); + + assertOrderedEquals(Ordering.natural().sortedCopy(actualResolvedTo), Ordering.natural().sortedCopy(expectedReferences)); } @Override