- call multifile class members (compiling against binaries)
- inline multifile class members HACK? scope-based part/facade resolution
This commit is contained in:
+12
-5
@@ -61,12 +61,19 @@ public class LazyJavaPackageScope(
|
||||
|
||||
private val partToFacade = c.storageManager.createLazyValue {
|
||||
val result = hashMapOf<String, String>()
|
||||
for (kotlinClass in kotlinBinaryClasses()) {
|
||||
kotlinClasses@for (kotlinClass in kotlinBinaryClasses()) {
|
||||
val header = kotlinClass.classHeader
|
||||
if (header.kind == KotlinClassHeader.Kind.MULTIFILE_CLASS_PART) {
|
||||
val partName = kotlinClass.classId.shortClassName.asString()
|
||||
val facadeName = header.multifileClassName ?: ""
|
||||
result[partName] = facadeName
|
||||
when (header.kind ) {
|
||||
KotlinClassHeader.Kind.MULTIFILE_CLASS_PART -> {
|
||||
val partName = kotlinClass.classId.shortClassName.asString()
|
||||
val facadeName = header.multifileClassName ?: continue@kotlinClasses
|
||||
result[partName] = facadeName
|
||||
}
|
||||
KotlinClassHeader.Kind.FILE_FACADE -> {
|
||||
val fileFacadeName = kotlinClass.classId.shortClassName.asString()
|
||||
result[fileFacadeName] = fileFacadeName
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
result
|
||||
|
||||
@@ -28,6 +28,12 @@ import org.jetbrains.kotlin.utils.Printer
|
||||
public abstract class AbstractScopeAdapter : JetScope {
|
||||
protected abstract val workerScope: JetScope
|
||||
|
||||
public fun getActualScope(): JetScope =
|
||||
if (workerScope is AbstractScopeAdapter)
|
||||
(workerScope as AbstractScopeAdapter).getActualScope()
|
||||
else
|
||||
workerScope
|
||||
|
||||
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> {
|
||||
return workerScope.getImplicitReceiversHierarchy()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user