Fix debugger tests.
- Index binaries by facade class fqName - Fix DebuggerUtils: should understand new facades - Refactor IDELightClassGenerationSupport - Add facadeSimpleName to KotlinFileStub
This commit is contained in:
committed by
Michael Bogdanov
parent
f9901f6075
commit
5ca8f7409a
+3
-1
@@ -59,7 +59,7 @@ import java.util.*
|
||||
getPackagePartFqName(facadeClassFqName.parent(), file.name)
|
||||
|
||||
public @jvmStatic fun getPackagePartFqName(packageFqName: FqName, fileName: String): FqName {
|
||||
val partClassName = getPartClassName(FileUtil.getNameWithoutExtension(fileName))
|
||||
val partClassName = getFilePartShortName(fileName)
|
||||
return packageFqName.child(Name.identifier(partClassName))
|
||||
}
|
||||
|
||||
@@ -91,4 +91,6 @@ import java.util.*
|
||||
public @jvmStatic fun getFilesForPart(partFqName: FqName, files: Collection<JetFile>): List<JetFile> =
|
||||
getFilesWithCallables(files).filter { getPackagePartFqName(it) == partFqName }
|
||||
|
||||
public @jvmStatic fun getFilePartShortName(fileName: String): String =
|
||||
getPartClassName(FileUtil.getNameWithoutExtension(fileName))
|
||||
}
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.psi.*
|
||||
|
||||
public interface KotlinFileStub : PsiFileStub<JetFile> {
|
||||
public fun getPackageFqName(): FqName
|
||||
public fun getFacadeSimpleName(): String?
|
||||
public fun isScript(): Boolean
|
||||
public fun findImportsByAlias(alias: String): List<KotlinImportDirectiveStub>
|
||||
}
|
||||
|
||||
+3
-1
@@ -68,6 +68,7 @@ public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
|
||||
public void serialize(@NotNull KotlinFileStub stub, @NotNull StubOutputStream dataStream)
|
||||
throws IOException {
|
||||
dataStream.writeName(stub.getPackageFqName().asString());
|
||||
dataStream.writeName(stub.getFacadeSimpleName());
|
||||
dataStream.writeBoolean(stub.isScript());
|
||||
}
|
||||
|
||||
@@ -76,7 +77,8 @@ public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
|
||||
public KotlinFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
|
||||
StringRef packageFqNameAsString = dataStream.readName();
|
||||
boolean isScript = dataStream.readBoolean();
|
||||
return new KotlinFileStubImpl(null, packageFqNameAsString, isScript);
|
||||
StringRef facadeSimpleName = dataStream.readName();
|
||||
return new KotlinFileStubImpl(null, packageFqNameAsString, facadeSimpleName, isScript);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,14 +28,19 @@ import org.jetbrains.kotlin.psi.stubs.KotlinFileStub
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinImportDirectiveStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
|
||||
public class KotlinFileStubImpl(jetFile: JetFile?, private val packageName: StringRef, private val isScript: Boolean)// SCRIPT: PsiJetFileStubImpl knows about scripting
|
||||
: PsiFileStubImpl<JetFile>(jetFile), KotlinFileStub, PsiClassHolderFileStub<JetFile> {
|
||||
// SCRIPT: PsiJetFileStubImpl knows about scripting
|
||||
public class KotlinFileStubImpl(
|
||||
jetFile: JetFile?,
|
||||
private val packageName: StringRef,
|
||||
private val facadeShortName: StringRef?,
|
||||
private val isScript: Boolean
|
||||
) : PsiFileStubImpl<JetFile>(jetFile), KotlinFileStub, PsiClassHolderFileStub<JetFile> {
|
||||
|
||||
public constructor(jetFile: JetFile?, packageName: String, isScript: Boolean)
|
||||
: this(jetFile, StringRef.fromString(packageName)!!, isScript) {
|
||||
}
|
||||
: this(jetFile, StringRef.fromString(packageName)!!, null, isScript)
|
||||
|
||||
override fun getPackageFqName(): FqName = FqName(StringRef.toString(packageName)!!)
|
||||
override fun getFacadeSimpleName(): String? = StringRef.toString(facadeShortName)
|
||||
override fun isScript(): Boolean = isScript
|
||||
override fun getType(): IStubFileElementType<KotlinFileStub> = JetStubElementTypes.FILE
|
||||
|
||||
@@ -49,4 +54,18 @@ public class KotlinFileStubImpl(jetFile: JetFile?, private val packageName: Stri
|
||||
val importList = childrenStubs.firstOrNull { it.stubType == JetStubElementTypes.IMPORT_LIST } ?: return emptyList()
|
||||
return importList.childrenStubs.filterIsInstance<KotlinImportDirectiveStub>().filter { it.getAliasName() == alias }
|
||||
}
|
||||
|
||||
companion object {
|
||||
public fun forPackageStub(packageFqName: FqName, isScript: Boolean): KotlinFileStubImpl =
|
||||
KotlinFileStubImpl(null,
|
||||
StringRef.fromString(packageFqName.asString())!!,
|
||||
null,
|
||||
isScript)
|
||||
|
||||
public fun forFileFacadeStub(facadeFqName: FqName, isScript: Boolean): KotlinFileStubImpl =
|
||||
KotlinFileStubImpl(null,
|
||||
StringRef.fromString(facadeFqName.parent().asString())!!,
|
||||
StringRef.fromString(facadeFqName.shortName().asString())!!,
|
||||
isScript)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user