- InnerClasses & EnclosingMethod attributes for local classes
in multifile part members - invocation of multifile part/facade members (TODO: deserialized descriptor case) - inlining of multifile part/facade members (TODO: inline against binaries case)
This commit is contained in:
+20
-3
@@ -22,12 +22,29 @@ import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
|
||||
public interface JvmFileClassesProvider {
|
||||
public fun getFileClassFqName(file: JetFile): FqName
|
||||
public fun getFileClassInfo(file: JetFile): JvmFileClassInfo
|
||||
|
||||
public fun getFileClassFqName(file: JetFile): FqName =
|
||||
getFileClassInfo(file).fileClassFqName
|
||||
|
||||
public fun getFileClassInternalName(file: JetFile): String =
|
||||
JvmClassName.byFqNameWithoutInnerClasses(getFileClassFqName(file)).internalName
|
||||
getFileClassFqName(file).getInternalName()
|
||||
|
||||
public fun getFileClassType(file: JetFile): Type =
|
||||
Type.getObjectType(getFileClassInternalName(file))
|
||||
getFileClassFqName(file).getClassType()
|
||||
|
||||
public fun getFacadeClassFqName(file: JetFile): FqName =
|
||||
getFileClassInfo(file).facadeClassFqName
|
||||
|
||||
public fun getFacadeClassInternalName(file: JetFile): String =
|
||||
getFacadeClassFqName(file).getInternalName()
|
||||
|
||||
public fun getFacadeClassType(file: JetFile): Type =
|
||||
getFacadeClassFqName(file).getClassType()
|
||||
}
|
||||
|
||||
private fun FqName.getInternalName(): String =
|
||||
JvmClassName.byFqNameWithoutInnerClasses(this).internalName
|
||||
|
||||
private fun FqName.getClassType(): Type =
|
||||
Type.getObjectType(getInternalName())
|
||||
|
||||
+2
-2
@@ -21,6 +21,6 @@ import org.jetbrains.kotlin.psi.JetFile
|
||||
|
||||
|
||||
public object NoResolveFileClassesProvider : JvmFileClassesProvider {
|
||||
override fun getFileClassFqName(file: JetFile): FqName =
|
||||
JvmFileClassUtil.getFileClassInfo(file, JvmFileClassUtil.parseJvmNameOnFileNoResolve(file)).fileClassFqName
|
||||
override fun getFileClassInfo(file: JetFile): JvmFileClassInfo =
|
||||
JvmFileClassUtil.getFileClassInfo(file, JvmFileClassUtil.parseJvmNameOnFileNoResolve(file))
|
||||
}
|
||||
Reference in New Issue
Block a user