diff --git a/idea/testData/resolve/builtins/any.kt b/idea/testData/resolve/builtins/any.kt index ae41c59cef3..0ef31da3c68 100644 --- a/idea/testData/resolve/builtins/any.kt +++ b/idea/testData/resolve/builtins/any.kt @@ -1,2 +1,4 @@ -var x : Any? -//kotlin/Any.kt:Any \ No newline at end of file +var x : Any? +// BINARY: kotlin/Any.kotlin_class +// SRC: kotlin/Any.kt +// TARGET: (kotlin).Any \ No newline at end of file diff --git a/idea/testData/resolve/builtins/emptyRange.kt b/idea/testData/resolve/builtins/emptyRange.kt index bc0a0075e3e..36fd0bbd9e7 100644 --- a/idea/testData/resolve/builtins/emptyRange.kt +++ b/idea/testData/resolve/builtins/emptyRange.kt @@ -1,2 +1,4 @@ -val empty = IntRange.EMPTY -//kotlin/Ranges.kt:EMPTY \ No newline at end of file +val empty = IntRange.EMPTY +// BINARY: kotlin/IntRange.class +// SRC: kotlin/Ranges.kt +// TARGET: (in kotlin.IntRange.Companion).EMPTY \ No newline at end of file diff --git a/idea/testData/resolve/builtins/equals.kt b/idea/testData/resolve/builtins/equals.kt index 8875c0573ce..494d1cb6f80 100644 --- a/idea/testData/resolve/builtins/equals.kt +++ b/idea/testData/resolve/builtins/equals.kt @@ -1,2 +1,4 @@ -val x = 5.equals(5) -//kotlin/Any.kt:equals +val x = 5.equals(5) +// BINARY: kotlin/Any.kotlin_class +// SRC: kotlin/Any.kt +// TARGET: (in kotlin.Any).equals(Any?) \ No newline at end of file diff --git a/idea/testData/resolve/builtins/int.kt b/idea/testData/resolve/builtins/int.kt index 21d676a3a77..1bc2a04f1b9 100644 --- a/idea/testData/resolve/builtins/int.kt +++ b/idea/testData/resolve/builtins/int.kt @@ -1,2 +1,4 @@ -val x : Int? -//kotlin/Primitives.kt:Int \ No newline at end of file +val x : Int? +// BINARY: kotlin/Int.kotlin_class +// SRC: kotlin/Primitives.kt +// TARGET: (kotlin).Int \ No newline at end of file diff --git a/idea/testData/resolve/builtins/intArrayConstructor.kt b/idea/testData/resolve/builtins/intArrayConstructor.kt index c30d127397f..7aca6284e57 100644 --- a/idea/testData/resolve/builtins/intArrayConstructor.kt +++ b/idea/testData/resolve/builtins/intArrayConstructor.kt @@ -1,2 +1,4 @@ -val ia = IntArray(4) -//kotlin/Arrays.kt:IntArray \ No newline at end of file +val ia = IntArray(4) +// BINARY: kotlin/IntArray.kotlin_class +// SRC: kotlin/Arrays.kt +// TARGET: (in kotlin.IntArray).IntArray(Int) \ No newline at end of file diff --git a/idea/testData/resolve/builtins/nothing.kt b/idea/testData/resolve/builtins/nothing.kt index 2795304a07a..bb30b6e73d7 100644 --- a/idea/testData/resolve/builtins/nothing.kt +++ b/idea/testData/resolve/builtins/nothing.kt @@ -1,2 +1,4 @@ -var x : Nothing -//kotlin/Nothing.kt:Nothing \ No newline at end of file +var x : Nothing +// BINARY: kotlin/Nothing.kotlin_class +// SRC: kotlin/Nothing.kt +// TARGET: (kotlin).Nothing \ No newline at end of file diff --git a/idea/testData/resolve/builtins/times.kt b/idea/testData/resolve/builtins/times.kt index 77dcea17bcd..65407f16d1f 100644 --- a/idea/testData/resolve/builtins/times.kt +++ b/idea/testData/resolve/builtins/times.kt @@ -1,2 +1,4 @@ -val x = 2.0 * 3.0 -//kotlin/Primitives.kt:times \ No newline at end of file +val x = 2.0 * 3.0 +// BINARY: kotlin/Double.kotlin_class +// SRC: kotlin/Primitives.kt +// TARGET: (in kotlin.Double).times(Double) \ No newline at end of file diff --git a/idea/testData/resolve/builtins/toString.kt b/idea/testData/resolve/builtins/toString.kt index 30ec41b6d29..a087237d2ec 100644 --- a/idea/testData/resolve/builtins/toString.kt +++ b/idea/testData/resolve/builtins/toString.kt @@ -1,2 +1,4 @@ -val x = 5.toString() -//kotlin/Any.kt:toString +val x = 5.toString() +// BINARY: kotlin/Any.kotlin_class +// SRC: kotlin/Any.kt +// TARGET: (in kotlin.Any).toString() diff --git a/idea/testData/resolve/builtins/unit.kt b/idea/testData/resolve/builtins/unit.kt index 9ebfb721616..47c4447b13e 100644 --- a/idea/testData/resolve/builtins/unit.kt +++ b/idea/testData/resolve/builtins/unit.kt @@ -1,2 +1,4 @@ -var x : Unit? -//kotlin/Unit.kt:Unit \ No newline at end of file +var x : Unit? +// BINARY: kotlin/Unit.class +// SRC: kotlin/Unit.kt +// TARGET: (kotlin).Unit \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolverTest.java b/idea/tests/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolverTest.java index f131d8661f8..554e7bc8d73 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolverTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolverTest.java @@ -16,37 +16,31 @@ package org.jetbrains.kotlin.idea.references; -import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; -import com.intellij.psi.*; -import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.testFramework.ResolveTestCase; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiPolyVariantReference; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies; import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde; +import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase; import org.jetbrains.kotlin.idea.test.PluginTestCaseBase; -import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources; import org.jetbrains.kotlin.resolve.DescriptorUtils; +import org.jetbrains.kotlin.test.InTextDirectivesUtils; +import org.jetbrains.kotlin.test.ReferenceUtils; +import org.junit.Assert; import java.util.ArrayList; import java.util.Collection; import java.util.List; -public class BuiltInsReferenceResolverTest extends ResolveTestCase { - @Override - protected void setUp() throws Exception { - super.setUp(); - VfsRootAccess.allowRootAccess(KotlinTestUtils.getHomeDirectory()); - } - - @Override - protected void tearDown() throws Exception { - VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory()); - super.tearDown(); - } - +public class BuiltInsReferenceResolverTest extends KotlinLightCodeInsightFixtureTestCase { public void testAny() throws Exception { doTest(); } @@ -85,7 +79,7 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase { public void testAllReferencesResolved() { for (DeclarationDescriptor descriptor : getAllStandardDescriptors()) { - assertNotNull("Can't resolve " + descriptor, DescriptorToSourceUtilsIde.INSTANCE$.getAnyDeclaration(getProject(), descriptor)); + assertNotNull("Can't resolve " + descriptor, DescriptorToSourceUtilsIde.INSTANCE.getAnyDeclaration(getProject(), descriptor)); } } @@ -99,7 +93,8 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase { @Override public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) { descriptors.add(descriptor); - for (DeclarationDescriptor classMember : DescriptorUtils.getAllDescriptors(descriptor.getDefaultType().getMemberScope())) { + for (DeclarationDescriptor classMember : DescriptorUtils + .getAllDescriptors(descriptor.getDefaultType().getMemberScope())) { classMember.acceptVoid(this); } return null; @@ -117,27 +112,41 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase { } private void doTest() throws Exception { - PsiPolyVariantReference reference = (PsiPolyVariantReference) configureByFile(getTestName(true) + ".kt"); + PsiPolyVariantReference reference = (PsiPolyVariantReference) myFixture.getReferenceAtCaretPosition(getTestName(true) + ".kt"); + assert reference != null; PsiElement resolved = reference.resolve(); assertNotNull(resolved); assertEquals(1, reference.multiResolve(false).length); - List comments = PsiTreeUtil.getChildrenOfTypeAsList(getFile(), PsiComment.class); - String[] expectedTarget = comments.get(comments.size() - 1).getText().substring(2).split(":"); - assertEquals(2, expectedTarget.length); - String expectedFile = expectedTarget[0]; - String expectedName = expectedTarget[1]; + String text = myFixture.getFile().getText(); + String expectedBinaryFile = InTextDirectivesUtils.findStringWithPrefixes(text, "// BINARY:"); + String expectedSourceFile = InTextDirectivesUtils.findStringWithPrefixes(text, "// SRC:"); + String expectedTarget = InTextDirectivesUtils.findStringWithPrefixes(text, "// TARGET:"); + assertEquals(expectedBinaryFile, getFileWithDir(resolved)); + assertEquals(expectedTarget, ReferenceUtils.renderAsGotoImplementation(resolved)); + PsiElement srcElement = resolved.getNavigationElement(); + Assert.assertNotEquals(srcElement, resolved); + assertEquals(expectedSourceFile, getFileWithDir(srcElement)); + assertEquals(expectedTarget, ReferenceUtils.renderAsGotoImplementation(srcElement)); + } + + @NotNull + private static String getFileWithDir(@NotNull PsiElement resolved) { PsiFile targetFile = resolved.getContainingFile(); PsiDirectory targetDir = targetFile.getParent(); assertNotNull(targetDir); - assertEquals(expectedFile, targetDir.getName() + "/" + targetFile.getName()); - assertInstanceOf(resolved, PsiNamedElement.class); - assertEquals(expectedName, ((PsiNamedElement) resolved).getName()); + return targetDir.getName() + "/" + targetFile.getName(); } @Override protected String getTestDataPath() { return PluginTestCaseBase.getTestDataPathBase() + "/resolve/builtins/"; } + + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return ProjectDescriptorWithStdlibSources.INSTANCE; + } }