diff --git a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java index 39810eb235f..357eac03d54 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.plugin.references; +import com.google.common.collect.Lists; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; @@ -44,6 +45,7 @@ import org.jetbrains.jet.lang.types.lang.JetStandardClasses; import org.jetbrains.jet.resolve.DescriptorRenderer; import java.net.URL; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -115,6 +117,7 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { }); } + @Nullable private DeclarationDescriptor findCurrentDescriptorForClass(@NotNull ClassDescriptor originalDescriptor) { if (originalDescriptor.getKind().isObject()) { DeclarationDescriptor currentParent = findCurrentDescriptor(originalDescriptor.getContainingDeclaration()); @@ -126,12 +129,19 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { } } + @Nullable private DeclarationDescriptor findCurrentDescriptorForMember(@NotNull MemberDescriptor originalDescriptor) { - JetScope memberScope = getMemberScope(findCurrentDescriptor(originalDescriptor.getContainingDeclaration())); + DeclarationDescriptor containingDeclaration = findCurrentDescriptor(originalDescriptor.getContainingDeclaration()); + JetScope memberScope = getMemberScope(containingDeclaration); if (memberScope == null) return null; String renderedOriginal = DescriptorRenderer.TEXT.render(originalDescriptor); - for (DeclarationDescriptor member : memberScope.getAllDescriptors()) { + Collection descriptors = Lists.newArrayList(); + descriptors.addAll(memberScope.getAllDescriptors()); + if (containingDeclaration instanceof ClassDescriptor) { + descriptors.addAll(((ClassDescriptor) containingDeclaration).getConstructors()); + } + for (DeclarationDescriptor member : descriptors) { if (renderedOriginal.equals(DescriptorRenderer.TEXT.render(member).replace(TUPLE0_FQ_NAME.getFqName(), JetStandardClasses.UNIT_ALIAS.getName()))) { return member; diff --git a/idea/testData/resolve/std/intArrayConstructor.kt b/idea/testData/resolve/std/intArrayConstructor.kt new file mode 100644 index 00000000000..e0121276405 --- /dev/null +++ b/idea/testData/resolve/std/intArrayConstructor.kt @@ -0,0 +1,2 @@ +val ia = IntArray(4) +//jet/Arrays.jet:IntArray \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolverTest.java b/idea/tests/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolverTest.java index 7d61913697f..7365213c9d5 100644 --- a/idea/tests/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolverTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolverTest.java @@ -71,6 +71,10 @@ public class StandardLibraryReferenceResolverTest extends ResolveTestCase { doTest(); } + public void testIntArrayConstructor() throws Exception { + doTest(); + } + public void testAllReferencesResolved() { StandardLibraryReferenceResolver referenceResolver = getProject().getComponent(StandardLibraryReferenceResolver.class); for (DeclarationDescriptor descriptor : getAllStandardDescriptors(JetStandardClasses.STANDARD_CLASSES_NAMESPACE)) {