store imported FQ name in import directive stub
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
+1
-1
@@ -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";
|
||||
|
||||
|
||||
+5
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+3
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user