JetNamespace eliminated

This commit is contained in:
Andrey Breslav
2011-12-27 20:23:58 +04:00
parent a5d8ff4669
commit 6aafaa1851
157 changed files with 31254 additions and 31833 deletions
-1
View File
@@ -11,7 +11,6 @@
<module fileurl="file://$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" filepath="$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" /> <module fileurl="file://$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" filepath="$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" />
<module fileurl="file://$PROJECT_DIR$/grammar/grammar.iml" filepath="$PROJECT_DIR$/grammar/grammar.iml" /> <module fileurl="file://$PROJECT_DIR$/grammar/grammar.iml" filepath="$PROJECT_DIR$/grammar/grammar.iml" />
<module fileurl="file://$PROJECT_DIR$/idea/idea.iml" filepath="$PROJECT_DIR$/idea/idea.iml" /> <module fileurl="file://$PROJECT_DIR$/idea/idea.iml" filepath="$PROJECT_DIR$/idea/idea.iml" />
<module fileurl="file://$PROJECT_DIR$/shift/shift.iml" filepath="$PROJECT_DIR$/shift/shift.iml" />
<module fileurl="file://$PROJECT_DIR$/stdlib/stdlib.iml" filepath="$PROJECT_DIR$/stdlib/stdlib.iml" /> <module fileurl="file://$PROJECT_DIR$/stdlib/stdlib.iml" filepath="$PROJECT_DIR$/stdlib/stdlib.iml" />
</modules> </modules>
</component> </component>
@@ -1,6 +1,6 @@
package org.jetbrains.jet.codegen; package org.jetbrains.jet.codegen;
import org.jetbrains.jet.lang.psi.JetNamespace; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.psi.JetPsiUtil;
import java.util.*; import java.util.*;
@@ -30,13 +30,13 @@ public class ClassFileFactory {
return newVisitor(className + ".class"); return newVisitor(className + ".class");
} }
NamespaceCodegen forNamespace(JetNamespace namespace) { NamespaceCodegen forNamespace(JetFile file) {
assert !isDone : "Already done!"; assert !isDone : "Already done!";
String fqName = JetPsiUtil.getFQName(namespace); String fqName = JetPsiUtil.getFQName(file);
NamespaceCodegen codegen = ns2codegen.get(fqName); NamespaceCodegen codegen = ns2codegen.get(fqName);
if (codegen == null) { if (codegen == null) {
final ClassBuilder builder = newVisitor(NamespaceCodegen.getJVMClassName(fqName) + ".class"); final ClassBuilder builder = newVisitor(NamespaceCodegen.getJVMClassName(fqName) + ".class");
codegen = new NamespaceCodegen(builder, fqName, state, namespace.getContainingFile()); codegen = new NamespaceCodegen(builder, fqName, state, file.getContainingFile());
ns2codegen.put(fqName, codegen); ns2codegen.put(fqName, codegen);
} }
@@ -6,6 +6,7 @@ package org.jetbrains.jet.codegen;
import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Pair;
import com.intellij.psi.PsiElement;
import com.intellij.util.containers.Stack; import com.intellij.util.containers.Stack;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
@@ -78,15 +79,14 @@ public class GenerationState {
return Pair.create(className, factory.forAnonymousSubclass(className)); return Pair.create(className, factory.forAnonymousSubclass(className));
} }
public NamespaceCodegen forNamespace(JetNamespace namespace) { public NamespaceCodegen forNamespace(JetFile namespace) {
return factory.forNamespace(namespace); return factory.forNamespace(namespace);
} }
public BindingContext compile(JetFile psiFile) { public BindingContext compile(JetFile file) {
final JetNamespace namespace = psiFile.getRootNamespace(); final BindingContext bindingContext = AnalyzerFacade.analyzeOneFileWithJavaIntegration(file, JetControlFlowDataTraceFactory.EMPTY);
final BindingContext bindingContext = AnalyzerFacade.analyzeOneNamespaceWithJavaIntegration(namespace, JetControlFlowDataTraceFactory.EMPTY);
AnalyzingUtils.throwExceptionOnErrors(bindingContext); AnalyzingUtils.throwExceptionOnErrors(bindingContext);
compileCorrectNamespaces(bindingContext, Collections.singletonList(namespace)); compileCorrectFiles(bindingContext, Collections.singletonList(file));
return bindingContext; return bindingContext;
// NamespaceCodegen codegen = forNamespace(namespace); // NamespaceCodegen codegen = forNamespace(namespace);
// bindingContexts.push(bindingContext); // bindingContexts.push(bindingContext);
@@ -102,15 +102,15 @@ public class GenerationState {
// } // }
} }
public void compileCorrectNamespaces(BindingContext bindingContext, List<JetNamespace> namespaces) { public void compileCorrectFiles(BindingContext bindingContext, List<JetFile> files) {
compileCorrectNamespaces(bindingContext, namespaces, CompilationErrorHandler.THROW_EXCEPTION); compileCorrectFiles(bindingContext, files, CompilationErrorHandler.THROW_EXCEPTION);
} }
public void compileCorrectNamespaces(BindingContext bindingContext, List<JetNamespace> namespaces, CompilationErrorHandler errorHandler) { public void compileCorrectFiles(BindingContext bindingContext, List<JetFile> files, CompilationErrorHandler errorHandler) {
typeMapper = new JetTypeMapper(standardLibrary, bindingContext); typeMapper = new JetTypeMapper(standardLibrary, bindingContext);
bindingContexts.push(bindingContext); bindingContexts.push(bindingContext);
try { try {
for (JetNamespace namespace : namespaces) { for (JetFile namespace : files) {
try { try {
generateNamespace(namespace); generateNamespace(namespace);
} }
@@ -129,7 +129,7 @@ public class GenerationState {
} }
} }
protected void generateNamespace(JetNamespace namespace) { protected void generateNamespace(JetFile namespace) {
NamespaceCodegen codegen = forNamespace(namespace); NamespaceCodegen codegen = forNamespace(namespace);
codegen.generate(namespace); codegen.generate(namespace);
} }
@@ -149,8 +149,8 @@ public class GenerationState {
return new GeneratedAnonymousClassDescriptor(nameAndVisitor.first, callableMethod.getSignature().getAsmMethod(), objectContext.outerWasUsed, null); return new GeneratedAnonymousClassDescriptor(nameAndVisitor.first, callableMethod.getSignature().getAsmMethod(), objectContext.outerWasUsed, null);
} }
public static void prepareAnonymousClasses(JetElement aClass, final JetTypeMapper typeMapper) { public static void prepareAnonymousClasses(PsiElement element, final JetTypeMapper typeMapper) {
aClass.acceptChildren(new JetVisitorVoid() { element.acceptChildren(new JetVisitorVoid() {
@Override @Override
public void visitJetElement(JetElement element) { public void visitJetElement(JetElement element) {
super.visitJetElement(element); super.visitJetElement(element);
@@ -753,11 +753,12 @@ public class JetTypeMapper {
return name; return name;
} }
@SuppressWarnings("unchecked") JetNamedDeclaration container = PsiTreeUtil.getParentOfType(expression, JetNamespace.class, JetClass.class, JetObjectDeclaration.class); @SuppressWarnings("unchecked")
PsiElement container = PsiTreeUtil.getParentOfType(expression, JetFile.class, JetClass.class, JetObjectDeclaration.class);
String baseName; String baseName;
if (container instanceof JetNamespace) { if (container instanceof JetFile) {
baseName = NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(((JetNamespace) container))); baseName = NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(((JetFile) container)));
} }
else { else {
ClassDescriptor aClass = bindingContext.get(BindingContext.CLASS, container); ClassDescriptor aClass = bindingContext.get(BindingContext.CLASS, container);
@@ -43,8 +43,8 @@ public class NamespaceCodegen {
v.visitSource(sourceFile.getName(), null); v.visitSource(sourceFile.getName(), null);
} }
public void generate(JetNamespace namespace) { public void generate(JetFile file) {
NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.NAMESPACE, namespace); NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.NAMESPACE, file);
final CodegenContext context = CodegenContext.STATIC.intoNamespace(descriptor); final CodegenContext context = CodegenContext.STATIC.intoNamespace(descriptor);
final FunctionCodegen functionCodegen = new FunctionCodegen(context, v, state); final FunctionCodegen functionCodegen = new FunctionCodegen(context, v, state);
@@ -52,10 +52,10 @@ public class NamespaceCodegen {
final ClassCodegen classCodegen = state.forClass(); final ClassCodegen classCodegen = state.forClass();
if (v.generateCode()) { if (v.generateCode()) {
GenerationState.prepareAnonymousClasses(namespace, state.getTypeMapper()); GenerationState.prepareAnonymousClasses(file, state.getTypeMapper());
} }
for (JetDeclaration declaration : namespace.getDeclarations()) { for (JetDeclaration declaration : file.getDeclarations()) {
if (declaration instanceof JetProperty) { if (declaration instanceof JetProperty) {
propertyCodegen.gen((JetProperty) declaration); propertyCodegen.gen((JetProperty) declaration);
} }
@@ -72,20 +72,20 @@ public class NamespaceCodegen {
else if (declaration instanceof JetClassOrObject) { else if (declaration instanceof JetClassOrObject) {
classCodegen.generate(context, (JetClassOrObject) declaration); classCodegen.generate(context, (JetClassOrObject) declaration);
} }
else if (declaration instanceof JetNamespace) { // else if (declaration instanceof JetFile) {
JetNamespace childNamespace = (JetNamespace) declaration; // JetFile childNamespace = (JetFile) declaration;
state.forNamespace(childNamespace).generate(childNamespace); // state.forNamespace(childNamespace).generate(childNamespace);
} // }
} }
if (hasNonConstantPropertyInitializers(namespace)) { if (hasNonConstantPropertyInitializers(file)) {
generateStaticInitializers(namespace); generateStaticInitializers(file);
} }
generateTypeInfoFields(namespace, context); generateTypeInfoFields(file, context);
} }
private void generateStaticInitializers(JetNamespace namespace) { private void generateStaticInitializers(JetFile namespace) {
MethodVisitor mv = v.newMethod(namespace, ACC_PUBLIC | ACC_STATIC, MethodVisitor mv = v.newMethod(namespace, ACC_PUBLIC | ACC_STATIC,
"<clinit>", "()V", null, null); "<clinit>", "()V", null, null);
if (v.generateCode()) { if (v.generateCode()) {
@@ -115,9 +115,9 @@ public class NamespaceCodegen {
} }
} }
private void generateTypeInfoFields(JetNamespace namespace, CodegenContext context) { private void generateTypeInfoFields(JetFile file, CodegenContext context) {
if(context.typeInfoConstants != null) { if(context.typeInfoConstants != null) {
String jvmClassName = getJVMClassName(namespace.getName()); String jvmClassName = getJVMClassName(file.getNamespaceHeader().getName());
for(int index = 0; index != context.typeInfoConstantsCount; index++) { for(int index = 0; index != context.typeInfoConstantsCount; index++) {
JetType type = context.reverseTypeInfoConstants.get(index); JetType type = context.reverseTypeInfoConstants.get(index);
String fieldName = "$typeInfoCache$" + index; String fieldName = "$typeInfoCache$" + index;
@@ -137,7 +137,7 @@ public class NamespaceCodegen {
v.visitFieldInsn(PUTSTATIC, jvmClassName, fieldName, "Ljet/TypeInfo;"); v.visitFieldInsn(PUTSTATIC, jvmClassName, fieldName, "Ljet/TypeInfo;");
v.visitLabel(end); v.visitLabel(end);
v.visitInsn(ARETURN); v.visitInsn(ARETURN);
FunctionCodegen.endVisit(v, "type info method", namespace); FunctionCodegen.endVisit(v, "type info method", file);
} }
} }
} }
@@ -187,7 +187,7 @@ public class NamespaceCodegen {
} }
} }
private static boolean hasNonConstantPropertyInitializers(JetNamespace namespace) { private static boolean hasNonConstantPropertyInitializers(JetFile namespace) {
for (JetDeclaration declaration : namespace.getDeclarations()) { for (JetDeclaration declaration : namespace.getDeclarations()) {
if (declaration instanceof JetProperty) { if (declaration instanceof JetProperty) {
final JetExpression initializer = ((JetProperty) declaration).getInitializer(); final JetExpression initializer = ((JetProperty) declaration).getInitializer();
@@ -8,21 +8,18 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.Function; import com.intellij.util.Function;
import com.intellij.util.Processor; import com.intellij.util.Processor;
import jet.ExtensionFunction0; import jet.ExtensionFunction0;
import jet.ExtensionFunction10;
import jet.Function1;
import jet.modules.IModuleBuilder; import jet.modules.IModuleBuilder;
import jet.modules.IModuleSetBuilder; import jet.modules.IModuleSetBuilder;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetCoreEnvironment; import org.jetbrains.jet.JetCoreEnvironment;
import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GeneratedClassLoader; import org.jetbrains.jet.codegen.GeneratedClassLoader;
import org.jetbrains.jet.lang.psi.JetNamespace; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.psi.JetPsiUtil;
import org.jetbrains.jet.plugin.JetMainDetector; import org.jetbrains.jet.plugin.JetMainDetector;
import java.io.*; import java.io.*;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.Arrays; import java.util.Arrays;
@@ -337,9 +334,9 @@ public class CompileEnvironment {
session.addStdLibSources(); session.addStdLibSources();
String mainClass = null; String mainClass = null;
for (JetNamespace namespace : session.getSourceFileNamespaces()) { for (JetFile file : session.getSourceFileNamespaces()) {
if (JetMainDetector.hasMain(namespace.getDeclarations())) { if (JetMainDetector.hasMain(file.getDeclarations())) {
mainClass = JetPsiUtil.getFQName(namespace) + ".namespace"; mainClass = JetPsiUtil.getFQName(file) + ".namespace";
break; break;
} }
} }
@@ -10,7 +10,6 @@ import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GenerationState; import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacade; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacade;
import org.jetbrains.jet.plugin.JetFileType; import org.jetbrains.jet.plugin.JetFileType;
@@ -27,8 +26,8 @@ import java.util.List;
*/ */
public class CompileSession { public class CompileSession {
private final JetCoreEnvironment myEnvironment; private final JetCoreEnvironment myEnvironment;
private final List<JetNamespace> mySourceFileNamespaces = new ArrayList<JetNamespace>(); private final List<JetFile> mySourceFiles = new ArrayList<JetFile>();
private final List<JetNamespace> myLibrarySourceFileNamespaces = new ArrayList<JetNamespace>(); private final List<JetFile> myLibrarySourceFiles = new ArrayList<JetFile>();
private List<String> myErrors = new ArrayList<String>(); private List<String> myErrors = new ArrayList<String>();
private BindingContext myBindingContext; private BindingContext myBindingContext;
@@ -63,7 +62,7 @@ public class CompileSession {
VirtualFile fileByPath = myEnvironment.getLocalFileSystem().findFileByPath(file.getAbsolutePath()); VirtualFile fileByPath = myEnvironment.getLocalFileSystem().findFileByPath(file.getAbsolutePath());
PsiFile psiFile = PsiManager.getInstance(myEnvironment.getProject()).findFile(fileByPath); PsiFile psiFile = PsiManager.getInstance(myEnvironment.getProject()).findFile(fileByPath);
if(psiFile instanceof JetFile) { if(psiFile instanceof JetFile) {
mySourceFileNamespaces.add(((JetFile) psiFile).getRootNamespace()); mySourceFiles.add((JetFile) psiFile);
} }
} }
} }
@@ -78,14 +77,14 @@ public class CompileSession {
if (vFile.getFileType() == JetFileType.INSTANCE) { if (vFile.getFileType() == JetFileType.INSTANCE) {
PsiFile psiFile = PsiManager.getInstance(myEnvironment.getProject()).findFile(vFile); PsiFile psiFile = PsiManager.getInstance(myEnvironment.getProject()).findFile(vFile);
if (psiFile instanceof JetFile) { if (psiFile instanceof JetFile) {
mySourceFileNamespaces.add(((JetFile) psiFile).getRootNamespace()); mySourceFiles.add((JetFile) psiFile);
} }
} }
} }
} }
public List<JetNamespace> getSourceFileNamespaces() { public List<JetFile> getSourceFileNamespaces() {
return mySourceFileNamespaces; return mySourceFiles;
} }
public boolean analyze(final PrintStream out) { public boolean analyze(final PrintStream out) {
@@ -95,9 +94,9 @@ public class CompileSession {
} }
return false; return false;
} }
List<JetNamespace> allNamespaces = new ArrayList<JetNamespace>(mySourceFileNamespaces); List<JetFile> allNamespaces = new ArrayList<JetFile>(mySourceFiles);
allNamespaces.addAll(myLibrarySourceFileNamespaces); allNamespaces.addAll(myLibrarySourceFiles);
myBindingContext = AnalyzerFacade.analyzeNamespacesWithJavaIntegration( myBindingContext = AnalyzerFacade.analyzeFilesWithJavaIntegration(
myEnvironment.getProject(), allNamespaces, Predicates.<PsiFile>alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY); myEnvironment.getProject(), allNamespaces, Predicates.<PsiFile>alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY);
ErrorCollector errorCollector = new ErrorCollector(myBindingContext); ErrorCollector errorCollector = new ErrorCollector(myBindingContext);
errorCollector.report(out); errorCollector.report(out);
@@ -106,13 +105,13 @@ public class CompileSession {
public ClassFileFactory generate() { public ClassFileFactory generate() {
GenerationState generationState = new GenerationState(myEnvironment.getProject(), ClassBuilderFactory.BINARIES); GenerationState generationState = new GenerationState(myEnvironment.getProject(), ClassBuilderFactory.BINARIES);
generationState.compileCorrectNamespaces(myBindingContext, mySourceFileNamespaces); generationState.compileCorrectFiles(myBindingContext, mySourceFiles);
return generationState.getFactory(); return generationState.getFactory();
} }
public String generateText() { public String generateText() {
GenerationState generationState = new GenerationState(myEnvironment.getProject(), ClassBuilderFactory.TEXT); GenerationState generationState = new GenerationState(myEnvironment.getProject(), ClassBuilderFactory.TEXT);
generationState.compileCorrectNamespaces(myBindingContext, mySourceFileNamespaces); generationState.compileCorrectFiles(myBindingContext, mySourceFiles);
return generationState.createText(); return generationState.createText();
} }
@@ -17,45 +17,39 @@ import org.jetbrains.jet.lang.StandardConfiguration;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils; import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTraceContext; import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List;
/** /**
* @author abreslav * @author abreslav
*/ */
public class AnalyzerFacade { public class AnalyzerFacade {
public static final Function<JetFile, Collection<JetDeclaration>> SINGLE_DECLARATION_PROVIDER = new Function<JetFile, Collection<JetDeclaration>>() { public static final Function<JetFile, Collection<JetFile>> SINGLE_DECLARATION_PROVIDER = new Function<JetFile, Collection<JetFile>>() {
@Override @Override
public Collection<JetDeclaration> fun(JetFile file) { public Collection<JetFile> fun(JetFile file) {
return Collections.<JetDeclaration>singleton(file.getRootNamespace()); return Collections.singleton(file);
} }
}; };
private final static Key<CachedValue<BindingContext>> BINDING_CONTEXT = Key.create("BINDING_CONTEXT"); private final static Key<CachedValue<BindingContext>> BINDING_CONTEXT = Key.create("BINDING_CONTEXT");
private static final Object lock = new Object(); private static final Object lock = new Object();
public static BindingContext analyzeFileWithCache(@NotNull final JetFile file, @NotNull final Function<JetFile, Collection<JetDeclaration>> declarationProvider) { public static BindingContext analyzeFileWithCache(@NotNull final JetFile file, @NotNull final Function<JetFile, Collection<JetFile>> declarationProvider) {
// Need lock for getValue(), because parallel threads can start evaluation of compute() simultaneously // Need lock for getValue(), because parallel threads can start evaluation of compute() simultaneously
synchronized (lock) { synchronized (lock) {
CachedValue<BindingContext> bindingContextCachedValue = file.getUserData(BINDING_CONTEXT); CachedValue<BindingContext> bindingContextCachedValue = file.getUserData(BINDING_CONTEXT);
if (bindingContextCachedValue == null) { if (bindingContextCachedValue == null) {
bindingContextCachedValue = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<BindingContext>() { bindingContextCachedValue = CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<BindingContext>() {
@Override @Override
public Result<BindingContext> compute() { public Result<BindingContext> compute() {
try { try {
BindingContext bindingContext = analyzeNamespacesWithJavaIntegration(file.getProject(), declarationProvider.fun(file), Predicates.<PsiFile>equalTo(file), JetControlFlowDataTraceFactory.EMPTY); BindingContext bindingContext = analyzeFilesWithJavaIntegration(file.getProject(), declarationProvider.fun(file), Predicates.<PsiFile>equalTo(file), JetControlFlowDataTraceFactory.EMPTY);
return new Result<BindingContext>(bindingContext, PsiModificationTracker.MODIFICATION_COUNT); return new Result<BindingContext>(bindingContext, PsiModificationTracker.MODIFICATION_COUNT);
} }
catch (ProcessCanceledException e) { catch (ProcessCanceledException e) {
@@ -73,46 +67,32 @@ public class AnalyzerFacade {
}, false); }, false);
file.putUserData(BINDING_CONTEXT, bindingContextCachedValue); file.putUserData(BINDING_CONTEXT, bindingContextCachedValue);
} }
return bindingContextCachedValue.getValue(); return bindingContextCachedValue.getValue();
} }
} }
public static BindingContext analyzeOneNamespaceWithJavaIntegration(JetNamespace namespace, JetControlFlowDataTraceFactory flowDataTraceFactory) { public static BindingContext analyzeOneFileWithJavaIntegration(JetFile file, JetControlFlowDataTraceFactory flowDataTraceFactory) {
return analyzeNamespacesWithJavaIntegration(namespace.getProject(), Collections.singleton(namespace), Predicates.<PsiFile>alwaysTrue(), flowDataTraceFactory); return analyzeFilesWithJavaIntegration(file.getProject(), Collections.singleton(file), Predicates.<PsiFile>alwaysTrue(), flowDataTraceFactory);
} }
public static BindingContext analyzeNamespacesWithJavaIntegration(Project project, Collection<? extends JetDeclaration> declarations, Predicate<PsiFile> filesToAnalyzeCompletely, JetControlFlowDataTraceFactory flowDataTraceFactory) { public static BindingContext analyzeFilesWithJavaIntegration(Project project, Collection<JetFile> files, Predicate<PsiFile> filesToAnalyzeCompletely, JetControlFlowDataTraceFactory flowDataTraceFactory) {
BindingTraceContext bindingTraceContext = new BindingTraceContext(); BindingTraceContext bindingTraceContext = new BindingTraceContext();
JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(project); JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(project);
return AnalyzingUtils.analyzeNamespacesWithGivenTrace( return AnalyzingUtils.analyzeFilesWithGivenTrace(
project, project,
JavaBridgeConfiguration.createJavaBridgeConfiguration(project, bindingTraceContext, StandardConfiguration.createStandardConfiguration(project)), JavaBridgeConfiguration.createJavaBridgeConfiguration(project, bindingTraceContext, StandardConfiguration.createStandardConfiguration(project)),
declarations, files,
filesToAnalyzeCompletely, filesToAnalyzeCompletely,
flowDataTraceFactory, flowDataTraceFactory,
bindingTraceContext, bindingTraceContext,
semanticServices); semanticServices);
} }
public static BindingContext shallowAnalyzeFiles(Collection<PsiFile> files) { public static BindingContext shallowAnalyzeFiles(Collection<JetFile> files) {
assert files.size() > 0; assert files.size() > 0;
Project project = files.iterator().next().getProject(); Project project = files.iterator().next().getProject();
Collection<JetNamespace> namespaces = collectRootNamespaces(files); return analyzeFilesWithJavaIntegration(project, files, Predicates.<PsiFile>alwaysFalse(), JetControlFlowDataTraceFactory.EMPTY);
return analyzeNamespacesWithJavaIntegration(project, namespaces, Predicates.<PsiFile>alwaysFalse(), JetControlFlowDataTraceFactory.EMPTY);
}
public static List<JetNamespace> collectRootNamespaces(Collection<PsiFile> files) {
List<JetNamespace> namespaces = new ArrayList<JetNamespace>();
for (PsiFile file : files) {
if (file instanceof JetFile) {
namespaces.add(((JetFile) file).getRootNamespace());
}
}
return namespaces;
} }
} }
@@ -10,7 +10,6 @@ import org.jetbrains.jet.lang.psi.*;
public interface JetNodeTypes { public interface JetNodeTypes {
IFileElementType JET_FILE = new IFileElementType(JetLanguage.INSTANCE); IFileElementType JET_FILE = new IFileElementType(JetLanguage.INSTANCE);
JetNodeType NAMESPACE = new JetNodeType("NAMESPACE", JetNamespace.class);
JetNodeType CLASS = new JetNodeType("CLASS", JetClass.class); JetNodeType CLASS = new JetNodeType("CLASS", JetClass.class);
JetNodeType PROPERTY = new JetNodeType("PROPERTY", JetProperty.class); JetNodeType PROPERTY = new JetNodeType("PROPERTY", JetProperty.class);
JetNodeType FUN = new JetNodeType("FUN", JetNamedFunction.class); JetNodeType FUN = new JetNodeType("FUN", JetNamedFunction.class);
@@ -35,7 +34,6 @@ public interface JetNodeTypes {
JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class); JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class);
JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class); JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class);
JetNodeType NAMESPACE_BODY = new JetNodeType("NAMESPACE_BODY", JetNamespaceBody.class);
JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST", JetModifierList.class); JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST", JetModifierList.class);
JetNodeType PRIMARY_CONSTRUCTOR_MODIFIER_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_MODIFIER_LIST", JetModifierList.class); JetNodeType PRIMARY_CONSTRUCTOR_MODIFIER_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_MODIFIER_LIST", JetModifierList.class);
JetNodeType ANNOTATION = new JetNodeType("ANNOTATION", JetAnnotation.class); JetNodeType ANNOTATION = new JetNodeType("ANNOTATION", JetAnnotation.class);
@@ -7,8 +7,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import static org.jetbrains.jet.lang.diagnostics.Severity.ERROR;
/** /**
* @author abreslav * @author abreslav
*/ */
@@ -4,6 +4,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamedDeclaration; import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -45,6 +46,13 @@ public class RedeclarationDiagnosticFactory extends AbstractDiagnosticFactory {
return nameIdentifier.getTextRange(); return nameIdentifier.getTextRange();
} }
} }
else if (redeclaration instanceof JetFile) {
JetFile file = (JetFile) redeclaration;
PsiElement nameIdentifier = file.getNamespaceHeader().getNameIdentifier();
if (nameIdentifier != null) {
return nameIdentifier.getTextRange();
}
}
return redeclaration.getTextRange(); return redeclaration.getTextRange();
} }
@@ -497,7 +497,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
* : functionLiteral * : functionLiteral
* : declaration * : declaration
* : SimpleName * : SimpleName
* : "namespace" // foo the root namespace * : "package" // foo the root namespace
* ; * ;
*/ */
private void parseAtomicExpression() { private void parseAtomicExpression() {
@@ -80,13 +80,11 @@ public class JetParsing extends AbstractJetParsing {
*/ */
public void parseFile() { public void parseFile() {
PsiBuilder.Marker fileMarker = mark(); PsiBuilder.Marker fileMarker = mark();
PsiBuilder.Marker namespaceMarker = mark();
parsePreamble(); parsePreamble();
parseToplevelDeclarations(false); parseToplevelDeclarations(false);
namespaceMarker.done(NAMESPACE);
fileMarker.done(JET_FILE); fileMarker.done(JET_FILE);
} }
@@ -377,45 +375,6 @@ public class JetParsing extends AbstractJetParsing {
attribute.done(ANNOTATION_ENTRY); attribute.done(ANNOTATION_ENTRY);
} }
/*
* namespace
* : "namespace" SimpleName{"."} "{"
* import*
* toplevelObject[| import]*
* "}"
* ;
*/
private JetNodeType parseNamespaceBlock() {
assert _at(NAMESPACE_KEYWORD);
PsiBuilder.Marker namespaceHeader = mark();
advance(); // NAMESPACE_KEYWORD
if (at(LBRACE)) {
error("Expecting namespace name");
}
else {
parseNamespaceName();
}
namespaceHeader.done(NAMESPACE_HEADER);
if (!at(LBRACE)) {
error("A namespace block in '{...}' expected");
return NAMESPACE;
}
myBuilder.enableNewlines();
advance(); // LBRACE
PsiBuilder.Marker namespaceBody = mark();
parseToplevelDeclarations(true);
namespaceBody.done(NAMESPACE_BODY);
expect(RBRACE, "Expecting '}'");
myBuilder.restoreNewlinesState();
return NAMESPACE;
}
/* /*
* class * class
* : modifiers ("class" | "trait") SimpleName * : modifiers ("class" | "trait") SimpleName
@@ -7,11 +7,14 @@ import com.intellij.extapi.psi.PsiFileBase;
import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileType;
import com.intellij.psi.FileViewProvider; import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.JetNodeTypes;
import org.jetbrains.jet.plugin.JetFileType; import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.JetLanguage; import org.jetbrains.jet.plugin.JetLanguage;
import java.util.List;
public class JetFile extends PsiFileBase { public class JetFile extends PsiFileBase {
public JetFile(FileViewProvider viewProvider) { public JetFile(FileViewProvider viewProvider) {
super(viewProvider, JetLanguage.INSTANCE); super(viewProvider, JetLanguage.INSTANCE);
@@ -27,9 +30,23 @@ public class JetFile extends PsiFileBase {
return "JetFile: " + getName(); return "JetFile: " + getName();
} }
public List<JetDeclaration> getDeclarations() {
return PsiTreeUtil.getChildrenOfTypeAsList(this, JetDeclaration.class);
}
public List<JetImportDirective> getImportDirectives() {
return PsiTreeUtil.getChildrenOfTypeAsList(this, JetImportDirective.class);
}
@NotNull @NotNull
public JetNamespace getRootNamespace() { public JetNamespaceHeader getNamespaceHeader() {
return (JetNamespace) getNode().findChildByType(JetNodeTypes.NAMESPACE).getPsi(); return (JetNamespaceHeader) getNode().findChildByType(JetNodeTypes.NAMESPACE_HEADER).getPsi();
}
@NotNull
@Override
public String getName() {
return super.getName(); // TODO
} }
@Override @Override
@@ -1,61 +0,0 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetNodeTypes;
import java.util.List;
/**
* @author max
*/
public class JetNamespace extends JetNamedDeclaration {
public JetNamespace(@NotNull ASTNode node) {
super(node);
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitNamespace(this);
}
@Override
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
return visitor.visitNamespace(this, data);
}
public List<JetDeclaration> getDeclarations() {
PsiElement body = findChildByType(JetNodeTypes.NAMESPACE_BODY);
return PsiTreeUtil.getChildrenOfTypeAsList(body != null ? body : this, JetDeclaration.class);
}
public List<JetImportDirective> getImportDirectives() {
PsiElement body = findChildByType(JetNodeTypes.NAMESPACE_BODY);
return PsiTreeUtil.getChildrenOfTypeAsList(body != null ? body : this, JetImportDirective.class);
}
public String getName() {
String name = super.getName();
return name == null ? "" : name;
}
@NotNull
public JetNamespaceHeader getHeader() {
return (JetNamespaceHeader) findChildByType(JetNodeTypes.NAMESPACE_HEADER);
}
@Override
public PsiElement getNameIdentifier() {
return getHeader().getNameIdentifier();
}
@Override
public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException {
throw new UnsupportedOperationException();
}
}
@@ -1,52 +0,0 @@
package org.jetbrains.jet.lang.psi;
/**
* @author max
*/
//public class JetNewExpression extends JetExpression implements JetCallElement {
// public JetNewExpression(@NotNull ASTNode node) {
// super(node);
// }
//
// @Override
// public void accept(JetVisitorVoid visitor) {
// visitor.visitNewExpression(this);
// }
//
// @Nullable @IfNotParsed
// public JetTypeReference getTypeReference() {
// return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE);
// }
//
// @Override
// @Nullable
// public JetValueArgumentList getValueArgumentList() {
// return (JetValueArgumentList) findChildByType(JetNodeTypes.VALUE_ARGUMENT_LIST);
// }
//
// @Override
// @NotNull
// public List<JetValueArgument> getValueArguments() {
// JetValueArgumentList list = getValueArgumentList();
// return list != null ? list.getArguments() : Collections.<JetValueArgument>emptyList();
// }
//
// @Override
// @NotNull
// public List<JetExpression> getFunctionLiteralArguments() {
// return findChildrenByType(JetNodeTypes.FUNCTION_LITERAL_EXPRESSION);
// }
//
// @NotNull
// @Override
// public List<JetTypeProjection> getTypeArguments() {
// return Collections.emptyList();
// }
//
// @NotNull
// @Override
// public JetElement asElement() {
// return this;
// }
//
//}
@@ -60,8 +60,7 @@ public class JetPsiFactory {
private static <T> T createDeclaration(Project project, String text, Class<T> clazz) { private static <T> T createDeclaration(Project project, String text, Class<T> clazz) {
JetFile file = createFile(project, text); JetFile file = createFile(project, text);
JetNamespace rootNamespace = file.getRootNamespace(); List<JetDeclaration> dcls = file.getDeclarations();
List<JetDeclaration> dcls = rootNamespace.getDeclarations();
assert dcls.size() == 1 : dcls.size(); assert dcls.size() == 1 : dcls.size();
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
T result = (T) dcls.get(0); T result = (T) dcls.get(0);
@@ -92,13 +91,13 @@ public class JetPsiFactory {
return function.getValueParameters().get(0); return function.getValueParameters().get(0);
} }
public static JetNamespace createNamespace(Project project, String text) { // public static JetNamespace createNamespace(Project project, String text) {
JetFile file = createFile(project, text); // JetFile file = createFile(project, text);
return file.getRootNamespace(); // return file.getRootNamespace();
} // }
public static JetImportDirective createImportDirective(Project project, String classPath) { public static JetImportDirective createImportDirective(Project project, String classPath) {
JetNamespace namespace = createNamespace(project, "import " + classPath); JetFile namespace = createFile(project, "import " + classPath);
return namespace.getImportDirectives().iterator().next(); return namespace.getImportDirectives().iterator().next();
} }
@@ -1,7 +1,6 @@
package org.jetbrains.jet.lang.psi; package org.jetbrains.jet.lang.psi;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.lexer.JetTokens;
@@ -72,7 +71,7 @@ public class JetPsiUtil {
public static JetNamedFunction getSurroundingFunction(@Nullable PsiElement element) { public static JetNamedFunction getSurroundingFunction(@Nullable PsiElement element) {
while (element != null) { while (element != null) {
if (element instanceof JetNamedFunction) return (JetNamedFunction) element; if (element instanceof JetNamedFunction) return (JetNamedFunction) element;
if (element instanceof JetClassOrObject || element instanceof JetNamespace) return null; if (element instanceof JetClassOrObject || element instanceof JetFile) return null;
element = element.getParent(); element = element.getParent();
} }
return null; return null;
@@ -104,16 +103,16 @@ public class JetPsiUtil {
} }
} }
public static String getFQName(JetNamespace jetNamespace) { // public static String getFQName(JetNamespace jetNamespace) {
JetNamespace parent = PsiTreeUtil.getParentOfType(jetNamespace, JetNamespace.class); // JetNamespace parent = PsiTreeUtil.getParentOfType(jetNamespace, JetNamespace.class);
if (parent != null) { // if (parent != null) {
String parentFQName = getFQName(parent); // String parentFQName = getFQName(parent);
if (parentFQName.length() > 0) { // if (parentFQName.length() > 0) {
return parentFQName + "." + getFQName(jetNamespace.getHeader()); // return parentFQName + "." + getFQName(jetNamespace.getNamespaceHeader());
} // }
} // }
return getFQName(jetNamespace.getHeader()); // TODO: Must include module root namespace // return getFQName(jetNamespace.getNamespaceHeader()); // TODO: Must include module root namespace
} // }
private static String getFQName(JetNamespaceHeader header) { private static String getFQName(JetNamespaceHeader header) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
@@ -121,15 +120,18 @@ public class JetPsiUtil {
builder.append(nameExpression.getReferencedName()); builder.append(nameExpression.getReferencedName());
builder.append("."); builder.append(".");
} }
// PsiElement nameIdentifier = header.getNameIdentifier();
builder.append(header.getName()); builder.append(header.getName());
return builder.toString(); return builder.toString();
} }
public static String getFQName(JetFile file) {
return getFQName(file.getNamespaceHeader());
}
public static String getFQName(JetClass jetClass) { public static String getFQName(JetClass jetClass) {
JetNamedDeclaration parent = PsiTreeUtil.getParentOfType(jetClass, JetNamespace.class, JetClass.class); PsiElement parent = jetClass.getParent();
if (parent instanceof JetNamespace) { if (parent instanceof JetFile) {
return makeFQName(getFQName(((JetNamespace) parent)), jetClass); return makeFQName(getFQName((JetFile) parent), jetClass);
} }
if (parent instanceof JetClass) { if (parent instanceof JetClass) {
return makeFQName(getFQName(((JetClass) parent)), jetClass); return makeFQName(getFQName(((JetClass) parent)), jetClass);
@@ -15,10 +15,6 @@ public class JetVisitor<R, D> extends PsiElementVisitor {
return visitExpression(dcl, data); return visitExpression(dcl, data);
} }
public R visitNamespace(JetNamespace namespace, D data) {
return visitDeclaration(namespace, data);
}
public R visitClass(JetClass klass, D data) { public R visitClass(JetClass klass, D data) {
return visitNamedDeclaration(klass, data); return visitNamedDeclaration(klass, data);
} }
@@ -14,10 +14,6 @@ public class JetVisitorVoid extends PsiElementVisitor {
visitExpression(dcl); visitExpression(dcl);
} }
public void visitNamespace(JetNamespace namespace) {
visitDeclaration(namespace);
}
public void visitClass(JetClass klass) { public void visitClass(JetClass klass) {
visitNamedDeclaration(klass); visitNamedDeclaration(klass);
} }
@@ -16,7 +16,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.DiagnosticHolder; import org.jetbrains.jet.lang.diagnostics.DiagnosticHolder;
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl; import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
@@ -69,21 +69,21 @@ public class AnalyzingUtils {
// -------------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------------
public static BindingContext analyzeNamespaces( public static BindingContext analyzeFiles(
@NotNull Project project, @NotNull Project project,
@NotNull Configuration configuration, @NotNull Configuration configuration,
@NotNull Collection<? extends JetDeclaration> declarations, @NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely, @NotNull Predicate<PsiFile> filesToAnalyzeCompletely,
@NotNull JetControlFlowDataTraceFactory flowDataTraceFactory) { @NotNull JetControlFlowDataTraceFactory flowDataTraceFactory) {
BindingTraceContext bindingTraceContext = new BindingTraceContext(); BindingTraceContext bindingTraceContext = new BindingTraceContext();
JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(project); JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(project);
return analyzeNamespacesWithGivenTrace(project, configuration, declarations, filesToAnalyzeCompletely, flowDataTraceFactory, bindingTraceContext, semanticServices); return analyzeFilesWithGivenTrace(project, configuration, files, filesToAnalyzeCompletely, flowDataTraceFactory, bindingTraceContext, semanticServices);
} }
public static BindingContext analyzeNamespacesWithGivenTrace( public static BindingContext analyzeFilesWithGivenTrace(
@NotNull Project project, @NotNull Project project,
@NotNull Configuration configuration, @NotNull Configuration configuration,
@NotNull Collection<? extends JetDeclaration> declarations, @NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely, @NotNull Predicate<PsiFile> filesToAnalyzeCompletely,
@NotNull JetControlFlowDataTraceFactory flowDataTraceFactory, @NotNull JetControlFlowDataTraceFactory flowDataTraceFactory,
@NotNull BindingTraceContext bindingTraceContext, @NotNull BindingTraceContext bindingTraceContext,
@@ -130,7 +130,7 @@ public class AnalyzingUtils {
public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) {
throw new IllegalStateException("Must be guaranteed not to happen by the parser"); throw new IllegalStateException("Must be guaranteed not to happen by the parser");
} }
}, declarations, filesToAnalyzeCompletely, flowDataTraceFactory, configuration); }, files, filesToAnalyzeCompletely, flowDataTraceFactory, configuration);
return bindingTraceContext.getBindingContext(); return bindingTraceContext.getBindingContext();
} }
@@ -8,7 +8,6 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCallImpl;
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.DeferredType; import org.jetbrains.jet.lang.types.DeferredType;
@@ -63,8 +63,8 @@ public class DeclarationResolver {
} }
private void resolveFunctionAndPropertyHeaders() { private void resolveFunctionAndPropertyHeaders() {
for (Map.Entry<JetNamespace, WritableScope> entry : context.getNamespaceScopes().entrySet()) { for (Map.Entry<JetFile, WritableScope> entry : context.getNamespaceScopes().entrySet()) {
JetNamespace namespace = entry.getKey(); JetFile namespace = entry.getKey();
WritableScope namespaceScope = entry.getValue(); WritableScope namespaceScope = entry.getValue();
NamespaceLike namespaceDescriptor = context.getNamespaceDescriptors().get(namespace); NamespaceLike namespaceDescriptor = context.getNamespaceDescriptors().get(namespace);
@@ -39,15 +39,15 @@ public class ImportsResolver {
private void processImports(boolean firstPhase) { private void processImports(boolean firstPhase) {
ImportResolver importResolver = new ImportResolver(context.getTrace(), firstPhase); ImportResolver importResolver = new ImportResolver(context.getTrace(), firstPhase);
for (JetNamespace jetNamespace : context.getNamespaceDescriptors().keySet()) { for (JetFile file : context.getNamespaceDescriptors().keySet()) {
WritableScope namespaceScope = context.getNamespaceScopes().get(jetNamespace); WritableScope namespaceScope = context.getNamespaceScopes().get(file);
if (firstPhase) { if (firstPhase) {
context.getConfiguration().addDefaultImports(context.getTrace(), namespaceScope); context.getConfiguration().addDefaultImports(context.getTrace(), namespaceScope);
} }
List<JetImportDirective> importDirectives = jetNamespace.getImportDirectives(); List<JetImportDirective> importDirectives = file.getImportDirectives();
for (JetImportDirective importDirective : importDirectives) { for (JetImportDirective importDirective : importDirectives) {
importResolver.processImportReference(importDirective, namespaceScope, context.getDeclaringScopes().get(jetNamespace)); importResolver.processImportReference(importDirective, namespaceScope, JetScope.EMPTY);
} }
} }
} }
@@ -30,8 +30,8 @@ import java.util.Set;
private final ImportsResolver importsResolver; private final ImportsResolver importsResolver;
private final Map<JetClass, MutableClassDescriptor> classes = Maps.newLinkedHashMap(); private final Map<JetClass, MutableClassDescriptor> classes = Maps.newLinkedHashMap();
private final Map<JetObjectDeclaration, MutableClassDescriptor> objects = Maps.newLinkedHashMap(); private final Map<JetObjectDeclaration, MutableClassDescriptor> objects = Maps.newLinkedHashMap();
protected final Map<JetNamespace, WritableScope> namespaceScopes = Maps.newHashMap(); protected final Map<JetFile, WritableScope> namespaceScopes = Maps.newHashMap();
protected final Map<JetNamespace, NamespaceDescriptorImpl> namespaceDescriptors = Maps.newHashMap(); protected final Map<JetFile, NamespaceDescriptorImpl> namespaceDescriptors = Maps.newHashMap();
private final Map<JetDeclaration, JetScope> declaringScopes = Maps.newHashMap(); private final Map<JetDeclaration, JetScope> declaringScopes = Maps.newHashMap();
private final Map<JetNamedFunction, FunctionDescriptorImpl> functions = Maps.newLinkedHashMap(); private final Map<JetNamedFunction, FunctionDescriptorImpl> functions = Maps.newLinkedHashMap();
@@ -114,11 +114,11 @@ import java.util.Set;
return objects; return objects;
} }
public Map<JetNamespace, WritableScope> getNamespaceScopes() { public Map<JetFile, WritableScope> getNamespaceScopes() {
return namespaceScopes; return namespaceScopes;
} }
public Map<JetNamespace, NamespaceDescriptorImpl> getNamespaceDescriptors() { public Map<JetFile, NamespaceDescriptorImpl> getNamespaceDescriptors() {
return namespaceDescriptors; return namespaceDescriptors;
} }
@@ -2,14 +2,14 @@ package org.jetbrains.jet.lang.resolve;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.Configuration; import org.jetbrains.jet.lang.Configuration;
import org.jetbrains.jet.lang.JetSemanticServices; import org.jetbrains.jet.lang.JetSemanticServices;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.psi.JetObjectDeclaration; import org.jetbrains.jet.lang.psi.JetObjectDeclaration;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
@@ -29,12 +29,12 @@ public class TopDownAnalyzer {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull JetScope outerScope, @NotNull JetScope outerScope,
@NotNull NamespaceLike owner, @NotNull NamespaceLike owner,
@NotNull Collection<? extends JetDeclaration> declarations, @NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> analyzeCompletely, @NotNull Predicate<PsiFile> analyzeCompletely,
@NotNull JetControlFlowDataTraceFactory flowDataTraceFactory, @NotNull JetControlFlowDataTraceFactory flowDataTraceFactory,
@NotNull Configuration configuration @NotNull Configuration configuration
) { ) {
process(semanticServices, trace, outerScope, owner, declarations, analyzeCompletely, flowDataTraceFactory, configuration, false); process(semanticServices, trace, outerScope, owner, files, analyzeCompletely, flowDataTraceFactory, configuration, false);
} }
private static void process( private static void process(
@@ -42,7 +42,7 @@ public class TopDownAnalyzer {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull JetScope outerScope, @NotNull JetScope outerScope,
@NotNull NamespaceLike owner, @NotNull NamespaceLike owner,
@NotNull Collection<? extends JetDeclaration> declarations, @NotNull Collection<? extends PsiElement> declarations,
@NotNull Predicate<PsiFile> analyzeCompletely, @NotNull Predicate<PsiFile> analyzeCompletely,
@NotNull JetControlFlowDataTraceFactory flowDataTraceFactory, @NotNull JetControlFlowDataTraceFactory flowDataTraceFactory,
@NotNull Configuration configuration, @NotNull Configuration configuration,
@@ -55,7 +55,7 @@ public class TopDownAnalyzer {
private static void doProcess( private static void doProcess(
TopDownAnalysisContext context, JetScope outerScope, TopDownAnalysisContext context, JetScope outerScope,
NamespaceLike owner, NamespaceLike owner,
Collection<? extends JetDeclaration> declarations, Collection<? extends PsiElement> declarations,
JetControlFlowDataTraceFactory flowDataTraceFactory) { JetControlFlowDataTraceFactory flowDataTraceFactory) {
// context.enableDebugOutput(); // context.enableDebugOutput();
context.debug("Enter"); context.debug("Enter");
@@ -93,14 +93,14 @@ public class TopDownAnalyzer {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull WritableScope outerScope, @NotNull WritableScope outerScope,
@NotNull NamespaceDescriptorImpl standardLibraryNamespace, @NotNull NamespaceDescriptorImpl standardLibraryNamespace,
@NotNull JetNamespace namespace) { @NotNull JetFile file) {
TopDownAnalysisContext context = new TopDownAnalysisContext(semanticServices, trace, Predicates.<PsiFile>alwaysTrue(), Configuration.EMPTY, false); TopDownAnalysisContext context = new TopDownAnalysisContext(semanticServices, trace, Predicates.<PsiFile>alwaysTrue(), Configuration.EMPTY, false);
context.getNamespaceScopes().put(namespace, standardLibraryNamespace.getMemberScope()); context.getNamespaceDescriptors().put(file, standardLibraryNamespace);
context.getNamespaceDescriptors().put(namespace, standardLibraryNamespace); context.getNamespaceScopes().put(file, standardLibraryNamespace.getMemberScope());
context.getDeclaringScopes().put(namespace, outerScope); // context.getDeclaringScopes().put(file, outerScope);
context.setAnalyzingBootstrapLibrary(true); context.setAnalyzingBootstrapLibrary(true);
doProcess(context, outerScope, standardLibraryNamespace, namespace.getDeclarations(), JetControlFlowDataTraceFactory.EMPTY); doProcess(context, outerScope, standardLibraryNamespace, file.getDeclarations(), JetControlFlowDataTraceFactory.EMPTY);
} }
public static void processObject( public static void processObject(
@@ -140,7 +140,7 @@ public class TopDownAnalyzer {
public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) {
return ClassObjectStatus.NOT_ALLOWED; return ClassObjectStatus.NOT_ALLOWED;
} }
}, Collections.<JetDeclaration>singletonList(object), Predicates.equalTo(object.getContainingFile()), JetControlFlowDataTraceFactory.EMPTY, Configuration.EMPTY, true); }, Collections.<PsiElement>singletonList(object), Predicates.equalTo(object.getContainingFile()), JetControlFlowDataTraceFactory.EMPTY, Configuration.EMPTY, true);
} }
} }
@@ -39,7 +39,7 @@ public class TypeHierarchyResolver {
this.context = context; this.context = context;
} }
public void process(@NotNull JetScope outerScope, @NotNull NamespaceLike owner, @NotNull Collection<? extends JetDeclaration> declarations) { public void process(@NotNull JetScope outerScope, @NotNull NamespaceLike owner, @NotNull Collection<? extends PsiElement> declarations) {
collectNamespacesAndClassifiers(outerScope, outerScope, owner, declarations); // namespaceScopes, classes collectNamespacesAndClassifiers(outerScope, outerScope, owner, declarations); // namespaceScopes, classes
context.getImportsResolver().processTypeImports(); context.getImportsResolver().processTypeImports();
@@ -67,22 +67,21 @@ public class TypeHierarchyResolver {
@NotNull final JetScope outerScope, @NotNull final JetScope outerScope,
@NotNull final JetScope outerScopeForStatic, @NotNull final JetScope outerScopeForStatic,
@NotNull final NamespaceLike owner, @NotNull final NamespaceLike owner,
@NotNull Collection<? extends JetDeclaration> declarations) { @NotNull Collection<? extends PsiElement> declarations) {
for (JetDeclaration declaration : declarations) { for (PsiElement declaration : declarations) {
declaration.accept(new JetVisitorVoid() { declaration.accept(new JetVisitorVoid() {
@Override @Override
public void visitNamespace(JetNamespace namespace) { public void visitJetFile(JetFile file) {
NamespaceDescriptorImpl namespaceDescriptor = createNamespaceDescriptorPathIfNeeded(namespace, owner); NamespaceDescriptorImpl namespaceDescriptor = createNamespaceDescriptorPathIfNeeded(file, owner);
context.getNamespaceDescriptors().put(namespace, namespaceDescriptor); context.getNamespaceDescriptors().put(file, namespaceDescriptor);
WriteThroughScope namespaceScope = new WriteThroughScope(outerScope, namespaceDescriptor.getMemberScope(), new TraceBasedRedeclarationHandler(context.getTrace())); WriteThroughScope namespaceScope = new WriteThroughScope(outerScope, namespaceDescriptor.getMemberScope(), new TraceBasedRedeclarationHandler(context.getTrace()));
namespaceScope.changeLockLevel(WritableScope.LockLevel.BOTH); namespaceScope.changeLockLevel(WritableScope.LockLevel.BOTH);
context.getNamespaceScopes().put(namespace, namespaceScope); context.getNamespaceScopes().put(file, namespaceScope);
context.getDeclaringScopes().put(namespace, outerScope);
// processImports(namespace, namespaceScope, outerScope); // processImports(namespace, namespaceScope, outerScope);
collectNamespacesAndClassifiers(namespaceScope, namespaceScope, namespaceDescriptor, namespace.getDeclarations()); collectNamespacesAndClassifiers(namespaceScope, namespaceScope, namespaceDescriptor, file.getDeclarations());
} }
@Override @Override
@@ -195,19 +194,19 @@ public class TypeHierarchyResolver {
} }
} }
private NamespaceDescriptorImpl createNamespaceDescriptorPathIfNeeded(JetNamespace namespace, NamespaceLike owner) { private NamespaceDescriptorImpl createNamespaceDescriptorPathIfNeeded(JetFile file, NamespaceLike owner) {
NamespaceLike currentOwner = owner; NamespaceLike currentOwner = owner;
for (JetSimpleNameExpression nameExpression : namespace.getHeader().getParentNamespaceNames()) { for (JetSimpleNameExpression nameExpression : file.getNamespaceHeader().getParentNamespaceNames()) {
currentOwner = createNamespaceDescriptorIfNeeded(null, currentOwner, JetPsiUtil.safeName(nameExpression.getReferencedName())); currentOwner = createNamespaceDescriptorIfNeeded(null, currentOwner, JetPsiUtil.safeName(nameExpression.getReferencedName()));
context.getTrace().record(REFERENCE_TARGET, nameExpression, currentOwner); context.getTrace().record(REFERENCE_TARGET, nameExpression, currentOwner);
} }
String name = JetPsiUtil.safeName(namespace.getName()); String name = JetPsiUtil.safeName(file.getNamespaceHeader().getName());
return createNamespaceDescriptorIfNeeded(namespace, currentOwner, name); return createNamespaceDescriptorIfNeeded(file, currentOwner, name);
} }
@NotNull @NotNull
private NamespaceDescriptorImpl createNamespaceDescriptorIfNeeded(@Nullable JetNamespace namespace, @NotNull NamespaceLike owner, @NotNull String name) { private NamespaceDescriptorImpl createNamespaceDescriptorIfNeeded(@Nullable JetFile file, @NotNull NamespaceLike owner, @NotNull String name) {
NamespaceDescriptorImpl namespaceDescriptor = owner.getNamespace(name); NamespaceDescriptorImpl namespaceDescriptor = owner.getNamespace(name);
if (namespaceDescriptor == null) { if (namespaceDescriptor == null) {
namespaceDescriptor = new NamespaceDescriptorImpl( namespaceDescriptor = new NamespaceDescriptorImpl(
@@ -221,8 +220,8 @@ public class TypeHierarchyResolver {
namespaceDescriptor.initialize(scope); namespaceDescriptor.initialize(scope);
context.getConfiguration().extendNamespaceScope(context.getTrace(), namespaceDescriptor, scope); context.getConfiguration().extendNamespaceScope(context.getTrace(), namespaceDescriptor, scope);
owner.addNamespace(namespaceDescriptor); owner.addNamespace(namespaceDescriptor);
if (namespace != null) { if (file != null) {
context.getTrace().record(BindingContext.NAMESPACE, namespace, namespaceDescriptor); context.getTrace().record(BindingContext.NAMESPACE, file, namespaceDescriptor);
} }
} }
return namespaceDescriptor; return namespaceDescriptor;
@@ -137,7 +137,7 @@ public class JetStandardLibrary {
writableScope.changeLockLevel(WritableScope.LockLevel.BOTH); writableScope.changeLockLevel(WritableScope.LockLevel.BOTH);
// this.libraryScope = bootstrappingTDA.process(JetStandardClasses.STANDARD_CLASSES, file.getRootNamespace().getDeclarations()); // this.libraryScope = bootstrappingTDA.process(JetStandardClasses.STANDARD_CLASSES, file.getRootNamespace().getDeclarations());
// bootstrappingTDA.process(writableScope, JetStandardClasses.STANDARD_CLASSES_NAMESPACE, file.getRootNamespace().getDeclarations()); // bootstrappingTDA.process(writableScope, JetStandardClasses.STANDARD_CLASSES_NAMESPACE, file.getRootNamespace().getDeclarations());
TopDownAnalyzer.processStandardLibraryNamespace(bootstrappingSemanticServices, bindingTraceContext, writableScope, JetStandardClasses.STANDARD_CLASSES_NAMESPACE, file.getRootNamespace()); TopDownAnalyzer.processStandardLibraryNamespace(bootstrappingSemanticServices, bindingTraceContext, writableScope, JetStandardClasses.STANDARD_CLASSES_NAMESPACE, file);
// this.libraryScope = JetStandardClasses.STANDARD_CLASSES_NAMESPACE.getMemberScope(); // this.libraryScope = JetStandardClasses.STANDARD_CLASSES_NAMESPACE.getMemberScope();
AnalyzingUtils.throwExceptionOnErrors(bindingTraceContext.getBindingContext()); AnalyzingUtils.throwExceptionOnErrors(bindingTraceContext.getBindingContext());
@@ -1,5 +1,4 @@
JetFile: AnnotatedExpressions.jet JetFile: AnnotatedExpressions.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: AnonymousInitializer.jet JetFile: AnonymousInitializer.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: Attributes.jet JetFile: Attributes.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -1,5 +1,4 @@
JetFile: AttributesOnPatterns.jet JetFile: AttributesOnPatterns.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: Attributes_ERR.jet JetFile: Attributes_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: BabySteps.jet JetFile: BabySteps.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: BabySteps_ERR.jet JetFile: BabySteps_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: ByCaluses.jet JetFile: ByCaluses.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: CallWithManyClosures.jet JetFile: CallWithManyClosures.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
-1
View File
@@ -1,5 +1,4 @@
JetFile: CallsInWhen.jet JetFile: CallsInWhen.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: Constructors.jet JetFile: Constructors.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: ControlStructures.jet JetFile: ControlStructures.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: EOLsInComments.jet JetFile: EOLsInComments.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: EOLsOnRollback.jet JetFile: EOLsOnRollback.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,4 +1,3 @@
JetFile: EmptyFile.jet JetFile: EmptyFile.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
-1
View File
@@ -1,5 +1,4 @@
JetFile: Enums.jet JetFile: Enums.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: Expressions_ERR.jet JetFile: Expressions_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
@@ -1,5 +1,4 @@
JetFile: ExtensionsWithQNReceiver.jet JetFile: ExtensionsWithQNReceiver.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
-1
View File
@@ -1,5 +1,4 @@
JetFile: FileStart_ERR.jet JetFile: FileStart_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PsiErrorElement:Expecting namespace or top level declaration PsiErrorElement:Expecting namespace or top level declaration
-1
View File
@@ -1,5 +1,4 @@
JetFile: FunctionCalls.jet JetFile: FunctionCalls.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: FunctionLiterals.jet JetFile: FunctionLiterals.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: FunctionLiterals_ERR.jet JetFile: FunctionLiterals_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: FunctionTypes.jet JetFile: FunctionTypes.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
TYPEDEF TYPEDEF
@@ -1,5 +1,4 @@
JetFile: FunctionTypes_ERR.jet JetFile: FunctionTypes_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
TYPEDEF TYPEDEF
-1
View File
@@ -1,5 +1,4 @@
JetFile: Functions.jet JetFile: Functions.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: Functions_ERR.jet JetFile: Functions_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: HangOnLonelyModifier.jet JetFile: HangOnLonelyModifier.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: IfWithPropery.jet JetFile: IfWithPropery.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
-1
View File
@@ -1,5 +1,4 @@
JetFile: ImportSoftKW.jet JetFile: ImportSoftKW.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
IMPORT_DIRECTIVE IMPORT_DIRECTIVE
-1
View File
@@ -1,5 +1,4 @@
JetFile: Imports.jet JetFile: Imports.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: Imports_ERR.jet JetFile: Imports_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: Labels.jet JetFile: Labels.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: LocalDeclarations.jet JetFile: LocalDeclarations.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,7 +1,6 @@
JetFile: ModifierAsSelector.jet JetFile: ModifierAsSelector.jet
PsiComment(EOL_COMMENT)('// JET-1') PsiComment(EOL_COMMENT)('// JET-1')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
@@ -1,5 +1,4 @@
JetFile: NamespaceBlockFirst.jet JetFile: NamespaceBlockFirst.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PsiErrorElement:Expecting namespace or top level declaration PsiErrorElement:Expecting namespace or top level declaration
@@ -1,5 +1,4 @@
JetFile: NamespaceModifiers.jet JetFile: NamespaceModifiers.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
MODIFIER_LIST MODIFIER_LIST
PsiElement(public)('public') PsiElement(public)('public')
@@ -1,5 +1,4 @@
JetFile: NewLinesValidOperations.jet JetFile: NewLinesValidOperations.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: NewlinesInParentheses.jet JetFile: NewlinesInParentheses.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: NotIsAndNotIn.jet JetFile: NotIsAndNotIn.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: Precedence.jet JetFile: Precedence.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: PredicateExpression.jet JetFile: PredicateExpression.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: PrimaryConstructorModifiers_ERR.jet JetFile: PrimaryConstructorModifiers_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: Properties.jet JetFile: Properties.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
@@ -1,5 +1,4 @@
JetFile: PropertiesFollowedByInitializers.jet JetFile: PropertiesFollowedByInitializers.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: Properties_ERR.jet JetFile: Properties_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
@@ -1,5 +1,4 @@
JetFile: QuotedIdentifiers.jet JetFile: QuotedIdentifiers.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: RootNamespace.jet JetFile: RootNamespace.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -1,5 +1,4 @@
JetFile: SemicolonAfterIf.jet JetFile: SemicolonAfterIf.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: ShortAnnotations.jet JetFile: ShortAnnotations.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
MODIFIER_LIST MODIFIER_LIST
ANNOTATION_ENTRY ANNOTATION_ENTRY
@@ -1,5 +1,4 @@
JetFile: SimpleClassMembers.jet JetFile: SimpleClassMembers.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: SimpleClassMembers_ERR.jet JetFile: SimpleClassMembers_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: SimpleExpressions.jet JetFile: SimpleExpressions.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: SimpleModifiers.jet JetFile: SimpleModifiers.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: SoftKeywords.jet JetFile: SoftKeywords.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
@@ -1,5 +1,4 @@
JetFile: SoftKeywordsInTypeArguments.jet JetFile: SoftKeywordsInTypeArguments.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: StringTemplates.jet JetFile: StringTemplates.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,7 +1,6 @@
JetFile: Super.jet JetFile: Super.jet
PsiComment(EOL_COMMENT)('// KT-156 Fix the this<Super> syntax') PsiComment(EOL_COMMENT)('// KT-156 Fix the this<Super> syntax')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: ThisType.jet JetFile: ThisType.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: TupleTypes.jet JetFile: TupleTypes.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: TupleTypes_ERR.jet JetFile: TupleTypes_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: TuplesWithLabeledEntries.jet JetFile: TuplesWithLabeledEntries.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
PROPERTY PROPERTY
@@ -1,5 +1,4 @@
JetFile: TypeAnnotations.jet JetFile: TypeAnnotations.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: TypeConstraints.jet JetFile: TypeConstraints.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
-1
View File
@@ -1,5 +1,4 @@
JetFile: TypeDef.jet JetFile: TypeDef.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
PsiElement(namespace)('package') PsiElement(namespace)('package')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
-1
View File
@@ -1,5 +1,4 @@
JetFile: TypeDef_ERR.jet JetFile: TypeDef_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
TYPEDEF TYPEDEF
@@ -1,5 +1,4 @@
JetFile: TypeExpressionAmbiguities_ERR.jet JetFile: TypeExpressionAmbiguities_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: TypeParametersBeforeName.jet JetFile: TypeParametersBeforeName.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: When.jet JetFile: When.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
-1
View File
@@ -1,5 +1,4 @@
JetFile: When_ERR.jet JetFile: When_ERR.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: AnonymousObjects.jet JetFile: AnonymousObjects.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN
@@ -1,5 +1,4 @@
JetFile: BinaryTree.jet JetFile: BinaryTree.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
CLASS CLASS
@@ -1,5 +1,4 @@
JetFile: BitArith.jet JetFile: BitArith.jet
NAMESPACE
NAMESPACE_HEADER NAMESPACE_HEADER
<empty list> <empty list>
FUN FUN

Some files were not shown because too many files have changed in this diff Show More