Rewrite JetPsiFactory to kotlin, make project a property

Instead of passing to every function
All static methods are now member functions
This commit is contained in:
Pavel V. Talanov
2014-07-14 18:59:56 +04:00
parent 307522ddd2
commit 7269e383cf
147 changed files with 905 additions and 908 deletions
@@ -58,7 +58,6 @@ import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.diagnostics.Severity;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.lazy.JvmResolveUtil;
@@ -92,6 +91,7 @@ import static org.jetbrains.jet.ConfigurationKind.JDK_AND_ANNOTATIONS;
import static org.jetbrains.jet.cli.jvm.JVMConfigurationKeys.ANNOTATIONS_PATH_KEY;
import static org.jetbrains.jet.cli.jvm.JVMConfigurationKeys.CLASSPATH_KEY;
import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.compileKotlinToDirAndGetAnalyzeExhaust;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetTestUtils {
private static final Pattern KT_FILES = Pattern.compile(".*?.kt");
@@ -812,7 +812,7 @@ public class JetTestUtils {
public static JetFile loadJetFile(@NotNull Project project, @NotNull File ioFile) throws IOException {
String text = FileUtil.loadFile(ioFile, true);
return JetPsiFactory.createPhysicalFile(project, ioFile.getName(), text);
return JetPsiFactory(project).createPhysicalFile(ioFile.getName(), text);
}
@NotNull
@@ -32,6 +32,8 @@ import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetPsiUtilTest extends JetLiteFixture {
public void testUnquotedIdentifier() {
Assert.assertEquals("", JetPsiUtil.unquoteIdentifier(""));
@@ -70,7 +72,7 @@ public class JetPsiUtilTest extends JetLiteFixture {
public void testIsLocalClass() throws IOException {
String text = FileUtil.loadFile(new File(getTestDataPath() + "/psiUtil/isLocalClass.kt"), true);
JetClass aClass = JetPsiFactory.createClass(getProject(), text);
JetClass aClass = JetPsiFactory(getProject()).createClass(text);
@SuppressWarnings("unchecked")
Collection<JetClassOrObject> classOrObjects = PsiTreeUtil.collectElementsOfType(aClass, JetClassOrObject.class);
@@ -101,7 +103,7 @@ public class JetPsiUtilTest extends JetLiteFixture {
private ImportPath getImportPathFromParsed(String text) {
JetImportDirective importDirective =
PsiTreeUtil.findChildOfType(JetPsiFactory.createFile(getProject(), text), JetImportDirective.class);
PsiTreeUtil.findChildOfType(JetPsiFactory(getProject()).createFile(text), JetImportDirective.class);
assertNotNull("At least one import directive is expected", importDirective);
@@ -31,7 +31,7 @@ public class JetSimpleNameExpressionTest() : JetLiteFixture() {
assertReceiver("1 to 2", "1")
}
private fun assertReceiver(exprString: String, expected: String) {
val expression = JetPsiFactory.createExpression(getProject(), exprString) as JetBinaryExpression
val expression = JetPsiFactory(getProject()).createExpression(exprString) as JetBinaryExpression
Assert.assertEquals(expected, expression.getOperationReference().getReceiverExpression()!!.getText())
}
override fun createEnvironment(): JetCoreEnvironment {
@@ -44,6 +44,8 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTestWithEnvironment {
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -57,7 +59,7 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
protected void doTest(@NotNull String testFile) throws IOException {
String fileText = FileUtil.loadFile(new File(testFile), true);
JetFile psiFile = JetPsiFactory.createFile(getProject(), fileText);
JetFile psiFile = JetPsiFactory(getProject()).createFile(fileText);
Collection<JetFile> files = Lists.newArrayList(psiFile);
final ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
@@ -24,7 +24,6 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
@@ -35,6 +34,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Map;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.ALLOW_ERROR_TYPES;
import static org.jetbrains.jet.test.util.DescriptorValidator.ValidationVisitor.FORBID_ERROR_TYPES;
@@ -63,7 +63,7 @@ public abstract class AbstractLazyResolveRecursiveComparingTest extends KotlinTe
new JetTestUtils.TestFileFactoryNoModules<JetFile>() {
@Override
public JetFile create(String fileName, String text, Map<String, String> directives) {
return JetPsiFactory.createFile(getProject(), fileName, text);
return JetPsiFactory(getProject()).createFile(fileName, text);
}
});
@@ -36,6 +36,8 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public abstract class AbstractJetParsingTest extends ParsingTestCase {
static {
System.setProperty("idea.platform.prefix", "Idea");
@@ -108,11 +110,12 @@ public abstract class AbstractJetParsingTest extends ParsingTestCase {
}
private PsiFile createFile(@NotNull String filePath, @NotNull IElementType fileType) throws Exception {
JetPsiFactory psiFactory = JetPsiFactory(myProject);
if (fileType == JetNodeTypes.EXPRESSION_CODE_FRAGMENT) {
return JetPsiFactory.createExpressionCodeFragment(myProject, loadFile(filePath), null);
return psiFactory.createExpressionCodeFragment(loadFile(filePath), null);
}
else if (fileType == JetNodeTypes.BLOCK_CODE_FRAGMENT) {
return JetPsiFactory.createBlockCodeFragment(myProject, loadFile(filePath), null);
return psiFactory.createBlockCodeFragment(loadFile(filePath), null);
}
else {
return createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(filePath)), loadFile(filePath));
@@ -45,7 +45,7 @@ public abstract class AbstractResolvedCallsTest() : JetLiteFixture() {
public fun doTest(filePath: String) {
val text = JetTestUtils.doLoadFile(File(filePath))!!
val jetFile = JetPsiFactory.createFile(getProject(), text.replace("<caret>", ""))
val jetFile = JetPsiFactory(getProject()).createFile(text.replace("<caret>", ""))
val bindingContext = JvmResolveUtil.analyzeOneFileWithJavaIntegration(jetFile).getBindingContext()
val element = jetFile.findElementAt(text.indexOf("<caret>"))
@@ -70,7 +70,7 @@ public class MyDeclarations(
return JetTypeImpl(Annotations.EMPTY, IntegerValueTypeConstructor(number.toLong()), false, listOf(), JetScope.EMPTY)
}
return typeResolver.resolveType(
scopeToResolveTypeParameters, JetPsiFactory.createType(project, name),
scopeToResolveTypeParameters, JetPsiFactory(project).createType(name),
JetTestUtils.DUMMY_TRACE, true)
}
}
@@ -22,7 +22,6 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -33,6 +32,8 @@ import org.jetbrains.jet.renderer.DescriptorRenderer;
import java.util.Collection;
import java.util.Collections;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class BoundsSubstitutorTest extends KotlinTestWithEnvironment {
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -70,7 +71,7 @@ public class BoundsSubstitutorTest extends KotlinTestWithEnvironment {
//}
private void doTest(String text, String expected) {
JetFile jetFile = JetPsiFactory.createFile(getProject(), "fun.kt", text);
JetFile jetFile = JetPsiFactory(getProject()).createFile("fun.kt", text);
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(Collections.singletonList(jetFile), getEnvironment());
Collection<FunctionDescriptor> functions = module.getPackage(FqName.ROOT).getMemberScope().getFunctions(Name.identifier("f"));
assert functions.size() == 1 : "Many functions defined";
@@ -43,6 +43,8 @@ import org.jetbrains.jet.storage.LockBasedStorageManager;
import java.util.List;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetDefaultModalityModifiersTest extends JetLiteFixture {
private final JetDefaultModalityModifiersTestCase tc = new JetDefaultModalityModifiersTestCase();
@@ -80,7 +82,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
}
private JetScope createScope(JetScope libraryScope) {
JetFile file = JetPsiFactory.createFile(getProject(), "abstract class C { abstract fun foo(); abstract val a: Int }");
JetFile file = JetPsiFactory(getProject()).createFile("abstract class C { abstract fun foo(); abstract val a: Int }");
List<JetDeclaration> declarations = file.getDeclarations();
JetDeclaration aClass = declarations.get(0);
assert aClass instanceof JetClass;
@@ -106,7 +108,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
}
private void testClassModality(String classDeclaration, ClassKind kind, Modality expectedModality) {
JetClass aClass = JetPsiFactory.createClass(getProject(), classDeclaration);
JetClass aClass = JetPsiFactory(getProject()).createClass(classDeclaration);
ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass);
assertEquals(expectedModality, classDescriptor.getModality());
@@ -114,7 +116,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
private void testFunctionModality(String classWithFunction, ClassKind kind, Modality expectedFunctionModality) {
JetClass aClass = JetPsiFactory.createClass(getProject(), classWithFunction);
JetClass aClass = JetPsiFactory(getProject()).createClass(classWithFunction);
ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass);
List<JetDeclaration> declarations = aClass.getDeclarations();
@@ -127,7 +129,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
}
private void testPropertyModality(String classWithProperty, ClassKind kind, Modality expectedPropertyModality) {
JetClass aClass = JetPsiFactory.createClass(getProject(), classWithProperty);
JetClass aClass = JetPsiFactory(getProject()).createClass(classWithProperty);
ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass);
List<JetDeclaration> declarations = aClass.getDeclarations();
@@ -140,7 +142,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
private void testPropertyAccessorModality(String classWithPropertyWithAccessor, ClassKind kind, Modality expectedPropertyAccessorModality, boolean isGetter) {
JetClass aClass = JetPsiFactory.createClass(getProject(), classWithPropertyWithAccessor);
JetClass aClass = JetPsiFactory(getProject()).createClass(classWithPropertyWithAccessor);
ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass);
List<JetDeclaration> declarations = aClass.getDeclarations();
@@ -25,12 +25,13 @@ import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.OverloadUtil;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetOverloadTest extends JetLiteFixture {
private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
@@ -178,7 +179,7 @@ public class JetOverloadTest extends JetLiteFixture {
}
private FunctionDescriptor makeFunction(String funDecl) {
JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl);
JetNamedFunction function = JetPsiFactory(getProject()).createFunction(funDecl);
return descriptorResolver.resolveFunctionDescriptor(root, KotlinBuiltIns.getInstance().getBuiltInsPackageScope(), function,
JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
}
@@ -25,12 +25,13 @@ import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.OverridingUtil;
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetOverridingTest extends JetLiteFixture {
private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
@@ -168,7 +169,7 @@ public class JetOverridingTest extends JetLiteFixture {
}
private FunctionDescriptor makeFunction(String funDecl) {
JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl);
JetNamedFunction function = JetPsiFactory(getProject()).createFunction(funDecl);
return descriptorResolver.resolveFunctionDescriptor(root, KotlinBuiltIns.getInstance().getBuiltInsPackageScope(), function,
JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
}
@@ -35,7 +35,6 @@ import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.ReceiverParameterDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.TypeResolver;
@@ -56,6 +55,8 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class JetTypeCheckerTest extends JetLiteFixture {
private KotlinBuiltIns builtIns;
@@ -533,14 +534,14 @@ public class JetTypeCheckerTest extends JetLiteFixture {
private void assertType(String expression, JetType expectedType) {
Project project = getProject();
JetExpression jetExpression = JetPsiFactory.createExpression(project, expression);
JetExpression jetExpression = JetPsiFactory(project).createExpression(expression);
JetType type = expressionTypingServices.getType(scopeWithImports, jetExpression, TypeUtils.NO_EXPECTED_TYPE, DataFlowInfo.EMPTY, JetTestUtils.DUMMY_TRACE);
assertTrue(type + " != " + expectedType, type.equals(expectedType));
}
private void assertErrorType(String expression) {
Project project = getProject();
JetExpression jetExpression = JetPsiFactory.createExpression(project, expression);
JetExpression jetExpression = JetPsiFactory(project).createExpression(expression);
JetType type = expressionTypingServices.safeGetType(scopeWithImports, jetExpression, TypeUtils.NO_EXPECTED_TYPE, DataFlowInfo.EMPTY, JetTestUtils.DUMMY_TRACE);
assertTrue("Error type expected but " + type + " returned", type.isError());
}
@@ -560,7 +561,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
return Lists.<ReceiverParameterDescriptor>newArrayList(new ReceiverParameterDescriptorImpl(
getContainingDeclaration(),
thisType,
new ExpressionReceiver(JetPsiFactory.createExpression(getProject(), expression), thisType)
new ExpressionReceiver(JetPsiFactory(getProject()).createExpression(expression), thisType)
));
}
};
@@ -573,7 +574,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
private void assertType(JetScope scope, String expression, String expectedTypeStr) {
Project project = getProject();
JetExpression jetExpression = JetPsiFactory.createExpression(project, expression);
JetExpression jetExpression = JetPsiFactory(project).createExpression(expression);
JetType type = expressionTypingServices.getType(
addImports(scope), jetExpression, TypeUtils.NO_EXPECTED_TYPE, DataFlowInfo.EMPTY, new BindingTraceContext());
JetType expectedType = expectedTypeStr == null ? null : makeType(expectedTypeStr);
@@ -613,6 +614,6 @@ public class JetTypeCheckerTest extends JetLiteFixture {
}
private JetType makeType(JetScope scope, String typeStr) {
return typeResolver.resolveType(scope, JetPsiFactory.createType(getProject(), typeStr), JetTestUtils.DUMMY_TRACE, true);
return typeResolver.resolveType(scope, JetPsiFactory(getProject()).createType(typeStr), JetTestUtils.DUMMY_TRACE, true);
}
}
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.psi.JetTypeReference;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingTrace;
@@ -53,6 +52,8 @@ import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
@SuppressWarnings("unchecked")
public class TypeSubstitutorTest extends KotlinTestWithEnvironment {
private JetScope scope;
@@ -81,7 +82,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment {
private JetScope getContextScope() throws IOException {
// todo comments
String text = FileUtil.loadFile(new File("compiler/testData/type-substitutor.kt"), true);
JetFile jetFile = JetPsiFactory.createFile(getProject(), text);
JetFile jetFile = JetPsiFactory(getProject()).createFile(text);
ModuleDescriptor module = LazyResolveTestUtil.resolveLazily(Collections.singletonList(jetFile), getEnvironment());
JetScope topLevelDeclarations = module.getPackage(FqName.ROOT).getMemberScope();
ClassifierDescriptor contextClass = topLevelDeclarations.getClassifier(Name.identifier("___Context"));
@@ -137,7 +138,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment {
}
private JetType resolveType(String typeStr) {
JetTypeReference jetTypeReference = JetPsiFactory.createType(getProject(), typeStr);
JetTypeReference jetTypeReference = JetPsiFactory(getProject()).createType(typeStr);
AnalyzingUtils.checkForSyntacticErrors(jetTypeReference);
BindingTrace trace = new BindingTraceContext();
JetType type = injector.getTypeResolver().resolveType(scope, jetTypeReference, trace, true);
@@ -29,7 +29,6 @@ import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.psi.JetTypeProjection;
import org.jetbrains.jet.lang.psi.JetTypeReference;
import org.jetbrains.jet.lang.resolve.TypeResolver;
@@ -44,6 +43,8 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.util.Map;
import java.util.Set;
import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public class TypeUnifierTest extends JetLiteFixture {
private Set<TypeConstructor> variables;
@@ -207,7 +208,7 @@ public class TypeUnifierTest extends JetLiteFixture {
withX.addClassifierDescriptor(y);
withX.changeLockLevel(WritableScope.LockLevel.READING);
JetTypeProjection projection = JetPsiFactory.createTypeArguments(getProject(), "<" + typeStr + ">").getArguments().get(0);
JetTypeProjection projection = JetPsiFactory(getProject()).createTypeArguments("<" + typeStr + ">").getArguments().get(0);
JetTypeReference typeReference = projection.getTypeReference();
assert typeReference != null;