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:
Dmitry Petrov
2015-09-01 17:31:43 +03:00
committed by Michael Bogdanov
parent f9901f6075
commit 5ca8f7409a
15 changed files with 185 additions and 98 deletions
@@ -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>
}
@@ -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)
}
}