- 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() {
PsiJetFileStub stub = (PsiJetFileStub)getStub();
if (stub != null) {
return stub.isScript();
}
return getScript() != null;
}
@@ -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<JetFile> {
public interface PsiJetFileStub extends PsiFileStub<JetFile> {
String getPackageName();
StubPsiFactory getPsiFactory();
void setPsiFactory(StubPsiFactory factory);
boolean isScript();
}
@@ -38,7 +38,7 @@ import java.io.IOException;
* @author Nikolay Krasko
*/
public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
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<PsiJetFileStub> {
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
@@ -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());
}
}
@@ -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<JetFile> 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<JetFile> 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<JetFile> implements PsiJ
StringBuilder builder = new StringBuilder();
builder.append("PsiJetFileStubImpl[");
builder.append("package=").append(getPackageName());
builder.append("]");