Complete resolve for array access expressions

This commit is contained in:
Andrey Breslav
2011-03-14 20:50:51 +03:00
parent 445736bfbd
commit 36cd2f3a79
19 changed files with 261 additions and 133 deletions
@@ -3,6 +3,7 @@ package org.jetbrains.jet.resolve;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Document;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.jet.lang.ErrorHandler;
import org.jetbrains.jet.lang.JetSemanticServices;
import org.jetbrains.jet.lang.psi.*;
@@ -79,7 +80,7 @@ public class ExpectedResolveData {
JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(file.getProject(), new ErrorHandler() {
@Override
public void unresolvedReference(JetReferenceExpression referenceExpression) {
unresolvedReferences.add(referenceExpression.getReferencedNameElement());
unresolvedReferences.add(referenceExpression);
}
});
JetStandardLibrary lib = semanticServices.getStandardLibrary();
@@ -105,7 +106,8 @@ public class ExpectedResolveData {
PsiElement element = file.findElementAt(position);
if ("!".equals(name)) {
assertTrue("Must have been unresolved: " + element, unresolvedReferences.contains(element));
JetReferenceExpression referenceExpression = PsiTreeUtil.getParentOfType(element, JetReferenceExpression.class);
assertTrue("Must have been unresolved: " + referenceExpression.getText(), unresolvedReferences.contains(referenceExpression));
continue;
}
@@ -141,8 +143,9 @@ public class ExpectedResolveData {
actualName = actual.toString();
}
}
assertNotNull(reference);
assertSame(
"Reference `" + name + "`" + reference.getReferencedName() + " at " + reference.getTextOffset() + " is resolved into " + actualName + ".",
"Reference `" + name + "`" + reference.getText() + " at " + reference.getTextOffset() + " is resolved into " + actualName + ".",
expected, actual);
}
@@ -39,7 +39,10 @@ public class JetResolveTest extends ExtensibleResolveTestCase {
PsiClass java_util_Collections = findClass("java.util.Collections");
nameToDeclaration.put("java::java.util.Collections.emptyList()", findMethod(java_util_Collections, "emptyList"));
nameToDeclaration.put("java::java.util.Collections", java_util_Collections);
nameToDeclaration.put("java::java.util.List", findClass("java.util.List"));
PsiClass java_util_List = findClass("java.util.List");
nameToDeclaration.put("java::java.util.List", java_util_List);
nameToDeclaration.put("java::java.util.List.set()", java_util_List.findMethodsByName("set", true)[0]);
nameToDeclaration.put("java::java.util.List.get()", java_util_List.findMethodsByName("get", true)[0]);
nameToDeclaration.put("java::java", findPackage("java"));
nameToDeclaration.put("java::java.util", findPackage("java.util"));
nameToDeclaration.put("java::java.lang", findPackage("java.lang"));