@@ -32,6 +32,7 @@ import com.google.devtools.ksp.symbol.KSFunctionDeclaration
3232import com.google.devtools.ksp.symbol.KSType
3333import com.google.devtools.ksp.symbol.Modifier
3434import com.google.devtools.ksp.symbol.Origin
35+ import com.google.devtools.ksp.symbol.Variance
3536import com.google.devtools.ksp.validate
3637import com.google.gson.Gson
3738import com.squareup.kotlinpoet.AnnotationSpec
@@ -594,7 +595,7 @@ class AndroidAopSymbolProcessor(private val codeGenerator: CodeGenerator,
594595 var collectClassName = if (isClazz){
595596 if (symbol.origin == Origin .KOTLIN ){
596597 val checkType = " ${parameter.type.resolve()} "
597- logger.error(" =====$checkType " )
598+ // logger.error("=====$checkType")
598599 if (regexIsEmpty){
599600 if (! checkKotlinType(checkType)){
600601 throw IllegalArgumentException (" $exceptionHintPreText 的 参数的泛型设置的不对" )
@@ -606,37 +607,50 @@ class AndroidAopSymbolProcessor(private val codeGenerator: CodeGenerator,
606607 }
607608 }else if (symbol.origin == Origin .JAVA ){
608609// logger.error("$exceptionHintPreText---${parameter.type}")
609- val checkType = " ${parameter.type} "
610- logger.error(" =====$checkType ==${parameter.type.resolve()} " )
611- val paramName = parameter.name?.asString() ? : " <anonymous>"
610+ // val checkType = "${parameter.type}"
612611 val typeRef = parameter.type
613612 val resolvedType = typeRef.resolve()
614613
615- // 打印参数名和类型全名
616- logger.error(" Parameter: $paramName , type: ${resolvedType.declaration.qualifiedName?.asString()} " )
617-
618- // 获取泛型参数列表
619- val typeArgs = resolvedType.arguments
620- if (typeArgs.isEmpty()) {
621- logger.error(" No generic parameters" )
622- } else {
623- logger.error(" Generic parameters:" )
624- for ((index, arg) in typeArgs.withIndex()) {
625- // arg 是 KSTypeArgument
626- val argType = arg.type?.resolve()
627- val argStr = argType?.declaration?.qualifiedName?.asString() ? : " StarProjection or Unknown"
628- logger.error(" [$index ]: $argStr " )
629- }
630- }
631- if (regexIsEmpty){
632- if (! checkJavaType(checkType)){
633- throw IllegalArgumentException (" $exceptionJavaHintPreText 的 参数的泛型设置的不对" )
614+ // logger.error("Parameter: $paramName, type: ${resolvedType.declaration.qualifiedName?.asString()}")
615+ if (resolvedType.arguments.size == 1 ){
616+ val arg = resolvedType.arguments[0 ]
617+ val variance = arg.variance
618+ // val type = arg.type?.resolve()
619+
620+ // val typeName = type?.declaration?.qualifiedName?.asString() ?: ""
621+ //
622+ // val varianceStr = when (variance) {
623+ // Variance.INVARIANT -> "invariant (T)"
624+ // Variance.COVARIANT -> "covariant (out T) -> ? extends"
625+ // Variance.CONTRAVARIANT -> "contravariant (in T) -> ? super"
626+ // else -> "unknown"
627+ // }
628+ // logger.error("$typeName, variance: $varianceStr")
629+
630+ if (regexIsEmpty){
631+ if (variance != Variance .COVARIANT ){
632+ throw IllegalArgumentException (" $exceptionJavaHintPreText 的 参数的泛型设置的不对" )
633+ }
634+ }else {
635+ if (variance == Variance .CONTRAVARIANT ){
636+ throw IllegalArgumentException (" $exceptionJavaHintPreText 的 参数的泛型设置的不对" )
637+ }
634638 }
639+
640+
635641 }else {
636- if (checkJavaType1(checkType)){
637- throw IllegalArgumentException (" $exceptionJavaHintPreText 的 参数的泛型设置的不对" )
638- }
642+ throw IllegalArgumentException (" $exceptionJavaHintPreText 的 参数的泛型设置的不对,必须设置1个泛型" )
639643 }
644+
645+ // if (regexIsEmpty){
646+ // if (!checkJavaType(checkType)){
647+ // throw IllegalArgumentException("$exceptionJavaHintPreText 的 参数的泛型设置的不对")
648+ // }
649+ // }else{
650+ // if (checkJavaType1(checkType)){
651+ // throw IllegalArgumentException("$exceptionJavaHintPreText 的 参数的泛型设置的不对")
652+ // }
653+ // }
640654 }
641655 val element = parameter.type.element
642656 if (element != null ){
0 commit comments