resolve constructor reference in standard library
This commit is contained in:
@@ -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<DeclarationDescriptor> 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;
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
val ia = <ref>IntArray(4)
|
||||
//jet/Arrays.jet:IntArray
|
||||
+4
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user