Index for top level objects
This commit is contained in:
@@ -75,6 +75,15 @@ public class JetObjectDeclaration extends JetNamedDeclarationStub<PsiJetObjectSt
|
||||
return JetPsiUtil.getFQName(this);
|
||||
}
|
||||
|
||||
public boolean isTopLevel() {
|
||||
PsiJetObjectStub stub = getStub();
|
||||
if (stub != null) {
|
||||
return stub.isTopLevel();
|
||||
}
|
||||
|
||||
return getParent() instanceof JetFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiElement getNameIdentifier() {
|
||||
JetObjectDeclarationName nameAsDeclaration = getNameAsDeclaration();
|
||||
|
||||
@@ -27,4 +27,5 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
public interface PsiJetObjectStub extends NamedStub<JetObjectDeclaration> {
|
||||
@Nullable
|
||||
FqName getFQName();
|
||||
boolean isTopLevel();
|
||||
}
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ import java.io.IOException;
|
||||
* @author Nikolay Krasko
|
||||
*/
|
||||
public class JetFileElementType extends IStubFileElementType<PsiJetFileStub> {
|
||||
public static final int STUB_VERSION = 17;
|
||||
public static final int STUB_VERSION = 18;
|
||||
|
||||
public JetFileElementType() {
|
||||
super("jet.FILE", JetLanguage.INSTANCE);
|
||||
|
||||
+4
-2
@@ -69,7 +69,7 @@ public class JetObjectElementType extends JetStubElementType<PsiJetObjectStub, J
|
||||
assert name != null;
|
||||
|
||||
FqName fqName = psi.getFqName();
|
||||
return new PsiJetObjectStubImpl(JetStubElementTypes.OBJECT_DECLARATION, parentStub, name, fqName);
|
||||
return new PsiJetObjectStubImpl(JetStubElementTypes.OBJECT_DECLARATION, parentStub, name, fqName, psi.isTopLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,6 +77,7 @@ public class JetObjectElementType extends JetStubElementType<PsiJetObjectStub, J
|
||||
dataStream.writeName(stub.getName());
|
||||
FqName fqName = stub.getFQName();
|
||||
dataStream.writeName(fqName != null ? fqName.toString() : null);
|
||||
dataStream.writeBoolean(stub.isTopLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,8 +85,9 @@ public class JetObjectElementType extends JetStubElementType<PsiJetObjectStub, J
|
||||
StringRef name = dataStream.readName();
|
||||
StringRef fqNameStr = dataStream.readName();
|
||||
FqName fqName = fqNameStr != null ? new FqName(fqNameStr.toString()) : null;
|
||||
boolean isTopLevel = dataStream.readBoolean();
|
||||
|
||||
return new PsiJetObjectStubImpl(JetStubElementTypes.OBJECT_DECLARATION, parentStub, name, fqName);
|
||||
return new PsiJetObjectStubImpl(JetStubElementTypes.OBJECT_DECLARATION, parentStub, name, fqName, isTopLevel);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+17
-4
@@ -32,24 +32,28 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
public class PsiJetObjectStubImpl extends StubBase<JetObjectDeclaration> implements PsiJetObjectStub {
|
||||
private final StringRef name;
|
||||
private final FqName fqName;
|
||||
private final boolean isTopLevel;
|
||||
|
||||
public PsiJetObjectStubImpl(
|
||||
@NotNull IStubElementType elementType,
|
||||
@NotNull StubElement parent,
|
||||
@NotNull String name,
|
||||
@Nullable FqName fqName) {
|
||||
this(elementType, parent, StringRef.fromString(name), fqName);
|
||||
@Nullable FqName fqName,
|
||||
boolean isTopLevel) {
|
||||
this(elementType, parent, StringRef.fromString(name), fqName, isTopLevel);
|
||||
}
|
||||
|
||||
public PsiJetObjectStubImpl(
|
||||
@NotNull IStubElementType elementType,
|
||||
@NotNull StubElement parent,
|
||||
@NotNull StringRef name,
|
||||
@Nullable FqName fqName) {
|
||||
@Nullable FqName fqName,
|
||||
boolean isTopLevel) {
|
||||
super(parent, elementType);
|
||||
|
||||
this.name = name;
|
||||
this.fqName = fqName;
|
||||
this.isTopLevel = isTopLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,13 +67,22 @@ public class PsiJetObjectStubImpl extends StubBase<JetObjectDeclaration> impleme
|
||||
return fqName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTopLevel() {
|
||||
return isTopLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
builder.append("PsiJetObjectStubImpl[");
|
||||
builder.append("name=").append(getName());
|
||||
|
||||
if (isTopLevel) {
|
||||
builder.append("top ");
|
||||
}
|
||||
|
||||
builder.append("name=").append(getName());
|
||||
builder.append(" fqName=").append(fqName != null ? fqName.toString() : "null");
|
||||
builder.append("]");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user