KSP 示例
Get all member functions
fun KSClassDeclaration.getDeclaredFunctions(): Sequence<KSFunctionDeclaration> = declarations.filterIsInstance<KSFunctionDeclaration>()
Check whether a class or function is local
fun KSDeclaration.isLocal(): Boolean = parentDeclaration != null && parentDeclaration !is KSClassDeclaration
Find the actual class or interface declaration that the type alias points to
fun KSTypeAlias.findActualType(): KSClassDeclaration { val resolvedType = this.type.resolve().declaration return if (resolvedType is KSTypeAlias) { resolvedType.findActualType() } else { resolvedType as KSClassDeclaration }}
Collect suppressed names in a file annotation
// @file:kotlin.Suppress("Example1", "Example2")fun KSFile.suppressedNames(): Sequence<String> = annotations .filter { it.shortName.asString() == "Suppress" && it.annotationType.resolve().declaration.qualifiedName?.asString() == "kotlin.Suppress" }.flatMap { it.arguments.flatMap { (it.value as Array<String>).toList() } }