[Analysis API] Run code fragment compilation tests against libraries

This commit is contained in:
Yan Zhulanow
2023-08-22 15:56:16 +09:00
committed by Space Team
parent dbb7e788b2
commit 4b80c2197f
45 changed files with 425 additions and 105 deletions
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.IrFileEntry
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.IrErrorType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -62,6 +61,8 @@ data class DumpIrTreeOptions(
val printFlagsInDeclarationReferences: Boolean = true,
val printSignatures: Boolean = false,
val printTypeAbbreviations: Boolean = true,
val printModuleName: Boolean = true,
val printFilePath: Boolean = true,
)
private fun IrFile.shouldSkipDump(): Boolean {
@@ -241,14 +241,22 @@ class RenderIrElementVisitor(private val options: DumpIrTreeOptions = DumpIrTree
override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): String =
"?DECLARATION? ${declaration::class.java.simpleName} $declaration"
override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String =
"MODULE_FRAGMENT name:${declaration.name}"
override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String {
return buildString {
append("MODULE_FRAGMENT")
if (options.printModuleName) {
append(" name:").append(declaration.name)
}
}
}
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): String =
"EXTERNAL_PACKAGE_FRAGMENT fqName:${declaration.packageFqName}"
override fun visitFile(declaration: IrFile, data: Nothing?): String =
"FILE fqName:${declaration.packageFqName} fileName:${declaration.path}"
override fun visitFile(declaration: IrFile, data: Nothing?): String {
val fileName = if (options.printFilePath) declaration.path else declaration.name
return "FILE fqName:${declaration.packageFqName} fileName:$fileName"
}
override fun visitFunction(declaration: IrFunction, data: Nothing?): String =
declaration.runTrimEnd {