diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java index 11f26878528..e0ac973a34c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java @@ -94,6 +94,11 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer { } public boolean isScript() { + PsiJetFileStub stub = (PsiJetFileStub)getStub(); + if (stub != null) { + return stub.isScript(); + } + return getScript() != null; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java index 93a48d8e319..7defba45fc1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetFileStub.java @@ -16,16 +16,13 @@ package org.jetbrains.jet.lang.psi.stubs; -import com.intellij.psi.impl.java.stubs.StubPsiFactory; -import com.intellij.psi.stubs.PsiClassHolderFileStub; +import com.intellij.psi.stubs.PsiFileStub; import org.jetbrains.jet.lang.psi.JetFile; /** * @author Nikolay Krasko */ -public interface PsiJetFileStub extends PsiClassHolderFileStub { +public interface PsiJetFileStub extends PsiFileStub { String getPackageName(); - - StubPsiFactory getPsiFactory(); - void setPsiFactory(StubPsiFactory factory); + boolean isScript(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java index 6e9778e93c0..5d7f57f5d27 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileElementType.java @@ -38,7 +38,7 @@ import java.io.IOException; * @author Nikolay Krasko */ public class JetFileElementType extends IStubFileElementType { - public static final int STUB_VERSION = 12; + public static final int STUB_VERSION = 13; public JetFileElementType() { super("jet.FILE", JetLanguage.INSTANCE); @@ -63,12 +63,14 @@ public class JetFileElementType extends IStubFileElementType { public void serialize(final PsiJetFileStub stub, final StubOutputStream dataStream) throws IOException { dataStream.writeName(stub.getPackageName()); + dataStream.writeBoolean(stub.isScript()); } @Override public PsiJetFileStub deserialize(final StubInputStream dataStream, final StubElement parentStub) throws IOException { StringRef packName = dataStream.readName(); - return new PsiJetFileStubImpl(null, packName); + boolean isScript = dataStream.readBoolean(); + return new PsiJetFileStubImpl(null, packName, isScript); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java index cbc870bf152..047256c24ac 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetFileStubBuilder.java @@ -34,6 +34,6 @@ public class JetFileStubBuilder extends DefaultStubBuilder { } JetFile jetFile = (JetFile) file; - return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName()); + return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName(), jetFile.isScript()); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java index ec1518ebb38..902809a8b9f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetFileStubImpl.java @@ -16,12 +16,12 @@ package org.jetbrains.jet.lang.psi.stubs.impl; -import com.intellij.psi.PsiClass; -import com.intellij.psi.impl.java.stubs.StubPsiFactory; import com.intellij.psi.stubs.PsiFileStubImpl; +import com.intellij.psi.tree.IStubFileElementType; import com.intellij.util.io.StringRef; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub; +import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes; /** * @author Nikolay Krasko @@ -29,15 +29,16 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub; public class PsiJetFileStubImpl extends PsiFileStubImpl implements PsiJetFileStub { private final StringRef packageName; - private StubPsiFactory psiFactory; + private final boolean isScript; - public PsiJetFileStubImpl(JetFile jetFile, StringRef packageName) { + public PsiJetFileStubImpl(JetFile jetFile, StringRef packageName, boolean isScript) { super(jetFile); this.packageName = packageName; + this.isScript = isScript; } - public PsiJetFileStubImpl(JetFile jetFile, String packageName) { - this(jetFile, StringRef.fromString(packageName)); + public PsiJetFileStubImpl(JetFile jetFile, String packageName, boolean isScript) { + this(jetFile, StringRef.fromString(packageName), isScript); } @Override @@ -46,18 +47,13 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl implements PsiJ } @Override - public StubPsiFactory getPsiFactory() { - return psiFactory; + public boolean isScript() { + return isScript; } @Override - public void setPsiFactory(StubPsiFactory factory) { - psiFactory = factory; - } - - @Override - public PsiClass[] getClasses() { - return new PsiClass[0]; + public IStubFileElementType getType() { + return JetStubElementTypes.FILE; } @Override @@ -65,6 +61,8 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl implements PsiJ StringBuilder builder = new StringBuilder(); builder.append("PsiJetFileStubImpl["); + + builder.append("package=").append(getPackageName()); builder.append("]");