store imported FQ name in import directive stub

This commit is contained in:
Dmitry Jemerov
2015-08-05 17:14:14 +02:00
parent 2429ff00f6
commit cca7f08400
5 changed files with 21 additions and 4 deletions
@@ -97,10 +97,20 @@ public class JetImportDirective extends JetElementImplStub<KotlinImportDirective
return getNode().findChildByType(JetTokens.MUL) != null;
}
@Nullable
@IfNotParsed
public FqName getImportedFqName() {
KotlinImportDirectiveStub stub = getStub();
if (stub != null) {
return stub.getImportedFqName();
}
return fqNameFromExpression(getImportedReference());
}
@Nullable
@IfNotParsed
public ImportPath getImportPath() {
FqName importFqn = fqNameFromExpression(getImportedReference());
FqName importFqn = getImportedFqName();
if (importFqn == null) {
return null;
}
@@ -65,6 +65,7 @@ public interface KotlinFunctionStub : KotlinCallableStubBase<JetNamedFunction> {
public interface KotlinImportDirectiveStub : StubElement<JetImportDirective> {
public fun isAbsoluteInRootPackage(): Boolean
public fun isAllUnder(): Boolean
public fun getImportedFqName(): FqName
public fun getAliasName(): String?
public fun isValid(): Boolean
}
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.psi.stubs.impl.KotlinFileStubImpl;
import java.io.IOException;
public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
public static final int STUB_VERSION = 50;
public static final int STUB_VERSION = 51;
private static final String NAME = "kotlin.FILE";
@@ -35,15 +35,17 @@ public class JetImportDirectiveElementType extends JetStubElementType<KotlinImpo
@Override
public KotlinImportDirectiveStub createStub(@NotNull JetImportDirective psi, StubElement parentStub) {
StringRef fqName = StringRef.fromString(psi.getImportedFqName().asString());
StringRef aliasName = StringRef.fromString(psi.getAliasName());
return new KotlinImportDirectiveStubImpl(parentStub, psi.isAbsoluteInRootPackage(), psi.isAllUnder(),
aliasName, psi.isValidImport());
fqName, aliasName, psi.isValidImport());
}
@Override
public void serialize(@NotNull KotlinImportDirectiveStub stub, @NotNull StubOutputStream dataStream) throws IOException {
dataStream.writeBoolean(stub.isAbsoluteInRootPackage());
dataStream.writeBoolean(stub.isAllUnder());
dataStream.writeName(stub.getImportedFqName().asString());
dataStream.writeName(stub.getAliasName());
dataStream.writeBoolean(stub.isValid());
}
@@ -53,8 +55,9 @@ public class JetImportDirectiveElementType extends JetStubElementType<KotlinImpo
public KotlinImportDirectiveStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
boolean isAbsoluteInRootPackage = dataStream.readBoolean();
boolean isAllUnder = dataStream.readBoolean();
StringRef importedName = dataStream.readName();
StringRef aliasName = dataStream.readName();
boolean isValid = dataStream.readBoolean();
return new KotlinImportDirectiveStubImpl(parentStub, isAbsoluteInRootPackage, isAllUnder, aliasName, isValid);
return new KotlinImportDirectiveStubImpl(parentStub, isAbsoluteInRootPackage, isAllUnder, importedName, aliasName, isValid);
}
}
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.psi.stubs.impl
import com.intellij.psi.PsiElement
import com.intellij.psi.stubs.StubElement
import com.intellij.util.io.StringRef
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetImportDirective
import org.jetbrains.kotlin.psi.stubs.KotlinImportDirectiveStub
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
@@ -27,11 +28,13 @@ public class KotlinImportDirectiveStubImpl(
parent: StubElement<PsiElement>,
private val isAbsoluteInRootPackage: Boolean,
private val isAllUnder: Boolean,
private val importedFqName: StringRef,
private val aliasName: StringRef?,
private val isValid: Boolean) : KotlinStubBaseImpl<JetImportDirective>(parent, JetStubElementTypes.IMPORT_DIRECTIVE), KotlinImportDirectiveStub {
override fun isAbsoluteInRootPackage(): Boolean = isAbsoluteInRootPackage
override fun isAllUnder(): Boolean = isAllUnder
override fun getImportedFqName(): FqName = FqName(StringRef.toString(importedFqName)!!)
override fun getAliasName(): String? = StringRef.toString(aliasName)
override fun isValid(): Boolean = isValid
}