- The information on is the file a script is stored in the file stub

- Correct information about type of kotlin file stub type
This commit is contained in:
Nikolay Krasko
2012-06-22 19:51:02 +04:00
parent 8646748e46
commit 429c2f307e
5 changed files with 26 additions and 24 deletions
@@ -94,6 +94,11 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer {
} }
public boolean isScript() { public boolean isScript() {
PsiJetFileStub stub = (PsiJetFileStub)getStub();
if (stub != null) {
return stub.isScript();
}
return getScript() != null; return getScript() != null;
} }
@@ -16,16 +16,13 @@
package org.jetbrains.jet.lang.psi.stubs; package org.jetbrains.jet.lang.psi.stubs;
import com.intellij.psi.impl.java.stubs.StubPsiFactory; import com.intellij.psi.stubs.PsiFileStub;
import com.intellij.psi.stubs.PsiClassHolderFileStub;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
/** /**
* @author Nikolay Krasko * @author Nikolay Krasko
*/ */
public interface PsiJetFileStub extends PsiClassHolderFileStub<JetFile> { public interface PsiJetFileStub extends PsiFileStub<JetFile> {
String getPackageName(); String getPackageName();
boolean isScript();
StubPsiFactory getPsiFactory();
void setPsiFactory(StubPsiFactory factory);
} }
@@ -38,7 +38,7 @@ import java.io.IOException;
* @author Nikolay Krasko * @author Nikolay Krasko
*/ */
public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> { public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
public static final int STUB_VERSION = 12; public static final int STUB_VERSION = 13;
public JetFileElementType() { public JetFileElementType() {
super("jet.FILE", JetLanguage.INSTANCE); super("jet.FILE", JetLanguage.INSTANCE);
@@ -63,12 +63,14 @@ public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
public void serialize(final PsiJetFileStub stub, final StubOutputStream dataStream) public void serialize(final PsiJetFileStub stub, final StubOutputStream dataStream)
throws IOException { throws IOException {
dataStream.writeName(stub.getPackageName()); dataStream.writeName(stub.getPackageName());
dataStream.writeBoolean(stub.isScript());
} }
@Override @Override
public PsiJetFileStub deserialize(final StubInputStream dataStream, final StubElement parentStub) throws IOException { public PsiJetFileStub deserialize(final StubInputStream dataStream, final StubElement parentStub) throws IOException {
StringRef packName = dataStream.readName(); StringRef packName = dataStream.readName();
return new PsiJetFileStubImpl(null, packName); boolean isScript = dataStream.readBoolean();
return new PsiJetFileStubImpl(null, packName, isScript);
} }
@Override @Override
@@ -34,6 +34,6 @@ public class JetFileStubBuilder extends DefaultStubBuilder {
} }
JetFile jetFile = (JetFile) file; JetFile jetFile = (JetFile) file;
return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName()); return new PsiJetFileStubImpl(jetFile, jetFile.getPackageName(), jetFile.isScript());
} }
} }
@@ -16,12 +16,12 @@
package org.jetbrains.jet.lang.psi.stubs.impl; 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.stubs.PsiFileStubImpl;
import com.intellij.psi.tree.IStubFileElementType;
import com.intellij.util.io.StringRef; import com.intellij.util.io.StringRef;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub; import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
/** /**
* @author Nikolay Krasko * @author Nikolay Krasko
@@ -29,15 +29,16 @@ import org.jetbrains.jet.lang.psi.stubs.PsiJetFileStub;
public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJetFileStub { public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJetFileStub {
private final StringRef packageName; 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); super(jetFile);
this.packageName = packageName; this.packageName = packageName;
this.isScript = isScript;
} }
public PsiJetFileStubImpl(JetFile jetFile, String packageName) { public PsiJetFileStubImpl(JetFile jetFile, String packageName, boolean isScript) {
this(jetFile, StringRef.fromString(packageName)); this(jetFile, StringRef.fromString(packageName), isScript);
} }
@Override @Override
@@ -46,18 +47,13 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJ
} }
@Override @Override
public StubPsiFactory getPsiFactory() { public boolean isScript() {
return psiFactory; return isScript;
} }
@Override @Override
public void setPsiFactory(StubPsiFactory factory) { public IStubFileElementType getType() {
psiFactory = factory; return JetStubElementTypes.FILE;
}
@Override
public PsiClass[] getClasses() {
return new PsiClass[0];
} }
@Override @Override
@@ -65,6 +61,8 @@ public class PsiJetFileStubImpl extends PsiFileStubImpl<JetFile> implements PsiJ
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append("PsiJetFileStubImpl["); builder.append("PsiJetFileStubImpl[");
builder.append("package=").append(getPackageName()); builder.append("package=").append(getPackageName());
builder.append("]"); builder.append("]");