Big refactoring. Migrating to package views and fragments.

This commit is contained in:
Evgeny Gerashchenko
2013-10-11 21:43:40 +04:00
parent 369824cd2e
commit 7abe6a5b4a
141 changed files with 1728 additions and 1465 deletions
@@ -261,7 +261,7 @@ public abstract class ExpectedResolveData {
}
assert expected != null : "No declaration for " + name;
if (referenceTarget instanceof NamespaceDescriptor) {
if (referenceTarget instanceof PackageViewDescriptor) {
JetNamespaceHeader expectedHeader = PsiTreeUtil.getParentOfType(expected, JetNamespaceHeader.class);
FqName expectedFqName;
if (expectedHeader != null) {
@@ -275,7 +275,7 @@ public abstract class ExpectedResolveData {
else {
throw new IllegalStateException(expected.getClass().getName() + " name=" + name);
}
assertEquals(expectedFqName, ((NamespaceDescriptor) referenceTarget).getFqName());
assertEquals(expectedFqName, ((PackageViewDescriptor) referenceTarget).getFqName());
continue;
}
@@ -22,6 +22,7 @@ import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetLiteFixture;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
@@ -44,9 +45,10 @@ import java.util.List;
public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFixture {
private static final String PATH = "compiler/testData/resolveAnnotations/testFile.kt";
private static final FqName NAMESPACE = new FqName("test");
private static final FqName PACKAGE = new FqName("test");
protected BindingContext context;
protected AnalyzeExhaust analyzeExhaust;
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -54,7 +56,7 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
}
protected void doTest(@NotNull String content, @NotNull String expectedAnnotation) {
NamespaceDescriptor test = getNamespaceDescriptor(content);
PackageViewDescriptor test = getPackage(content);
ClassDescriptor myClass = getClassDescriptor(test, "MyClass");
checkDescriptor(expectedAnnotation, myClass);
checkDescriptor(expectedAnnotation, getClassObjectDescriptor(myClass));
@@ -97,11 +99,11 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
}
@NotNull
private static FunctionDescriptor getFunctionDescriptor(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull String name) {
protected static FunctionDescriptor getFunctionDescriptor(@NotNull PackageViewDescriptor packageView, @NotNull String name) {
Name functionName = Name.identifier(name);
JetScope memberScope = namespaceDescriptor.getMemberScope();
JetScope memberScope = packageView.getMemberScope();
Collection<FunctionDescriptor> functions = memberScope.getFunctions(functionName);
assert functions.size() == 1 : "Failed to find function " + functionName + " in class" + "." + namespaceDescriptor.getName();
assert functions.size() == 1 : "Failed to find function " + functionName + " in class" + "." + packageView.getName();
return functions.iterator().next();
}
@@ -115,11 +117,11 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
}
@NotNull
protected static PropertyDescriptor getPropertyDescriptor(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull String name) {
protected static PropertyDescriptor getPropertyDescriptor(@NotNull PackageViewDescriptor packageView, @NotNull String name) {
Name propertyName = Name.identifier(name);
JetScope memberScope = namespaceDescriptor.getMemberScope();
JetScope memberScope = packageView.getMemberScope();
Collection<VariableDescriptor> properties = memberScope.getProperties(propertyName);
assert properties.size() == 1 : "Failed to find property " + propertyName + " in class " + namespaceDescriptor.getName();
assert properties.size() == 1 : "Failed to find property " + propertyName + " in class " + packageView.getName();
return (PropertyDescriptor) properties.iterator().next();
}
@@ -133,10 +135,10 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
}
@NotNull
protected static ClassDescriptor getClassDescriptor(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull String name) {
protected static ClassDescriptor getClassDescriptor(@NotNull PackageViewDescriptor packageView, @NotNull String name) {
Name className = Name.identifier(name);
ClassifierDescriptor aClass = namespaceDescriptor.getMemberScope().getClassifier(className);
assertNotNull("Failed to find class: " + namespaceDescriptor.getName() + "." + className, aClass);
ClassifierDescriptor aClass = packageView.getMemberScope().getClassifier(className);
assertNotNull("Failed to find class: " + packageView.getName() + "." + className, aClass);
assert aClass instanceof ClassDescriptor : "Not a class: " + aClass;
return (ClassDescriptor) aClass;
}
@@ -257,13 +259,14 @@ public abstract class AbstractAnnotationDescriptorResolveTest extends JetLiteFix
}
@NotNull
protected NamespaceDescriptor getNamespaceDescriptor(@NotNull String content) {
protected PackageViewDescriptor getPackage(@NotNull String content) {
JetFile ktFile = JetTestUtils.createFile("dummy.kt", content, getProject());
context = JetTestUtils.analyzeFile(ktFile).getBindingContext();
analyzeExhaust = JetTestUtils.analyzeFile(ktFile);
context = analyzeExhaust.getBindingContext();
NamespaceDescriptor namespaceDescriptor = context.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, NAMESPACE);
assertNotNull("Failed to find namespace: " + NAMESPACE, namespaceDescriptor);
return namespaceDescriptor;
PackageViewDescriptor packageView = analyzeExhaust.getModuleDescriptor().getPackage(PACKAGE);
assertNotNull("Failed to find namespace: " + PACKAGE, packageView);
return packageView;
}
protected static String getContent(@NotNull String annotationText) throws IOException {
@@ -24,8 +24,8 @@ import org.jetbrains.jet.JetTestUtils
public abstract class AbstractAnnotationParameterTest : AbstractAnnotationDescriptorResolveTest() {
fun doTest(path: String) {
val fileText = FileUtil.loadFile(File(path))
val namespaceDescriptor = getNamespaceDescriptor(fileText)
val classDescriptor = AbstractAnnotationDescriptorResolveTest.getClassDescriptor(namespaceDescriptor, "MyClass")
val packageView = getPackage(fileText)
val classDescriptor = AbstractAnnotationDescriptorResolveTest.getClassDescriptor(packageView, "MyClass")
val expected = InTextDirectivesUtils.findListWithPrefixes(fileText, "// EXPECTED: ").makeString(", ")
val actual = AbstractAnnotationDescriptorResolveTest.getAnnotations(classDescriptor)