@@ -210,10 +210,6 @@ open class KotlinUsesExtractor(
210210 // `typeArgs` can be null to describe a raw generic type.
211211 // For non-generic types it will be zero-length list.
212212 fun useClassInstance (c : IrClass , typeArgs : List <IrTypeArgument >? , inReceiverContext : Boolean = false): UseClassInstanceResult {
213- if (c.isAnonymousObject) {
214- logger.error(" Unexpected access to anonymous class instance" )
215- }
216-
217213 val substituteClass = getJavaEquivalentClass(c)
218214
219215 val extractClass = substituteClass ? : c
@@ -418,10 +414,11 @@ open class KotlinUsesExtractor(
418414 }
419415
420416 val fqName = replacedClass.fqNameWhenAvailable
421- val signature = if (fqName == null ) {
417+ val signature = if (replacedClass.isAnonymousObject) {
418+ null
419+ } else if (fqName == null ) {
422420 logger.error(" Unable to find signature/fqName for ${replacedClass.name} " )
423- // TODO: Should we return null here instead?
424- " <no signature available>"
421+ null
425422 } else {
426423 fqName.asString()
427424 }
@@ -497,16 +494,6 @@ open class KotlinUsesExtractor(
497494 // `args` can be null to describe a raw generic type.
498495 // For non-generic types it will be zero-length list.
499496 fun useSimpleTypeClass (c : IrClass , args : List <IrTypeArgument >? , hasQuestionMark : Boolean ): TypeResults {
500- if (c.isAnonymousObject) {
501- args?.let {
502- if (it.isNotEmpty() && ! isUnspecialised(c, it, logger)) {
503- logger.error(" Unexpected specialised instance of generic anonymous class" )
504- }
505- }
506-
507- return useAnonymousClass(c)
508- }
509-
510497 val classInstanceResult = useClassInstance(c, args)
511498 val javaClassId = classInstanceResult.typeResult.id
512499 val kotlinQualClassName = getUnquotedClassLabel(c, args).classLabel
@@ -795,7 +782,7 @@ open class KotlinUsesExtractor(
795782 extractFileClass(dp)
796783 }
797784 is IrClass ->
798- if (classTypeArguments != null && ! dp.isAnonymousObject ) {
785+ if (classTypeArguments != null ) {
799786 useClassInstance(dp, classTypeArguments, inReceiverContext).typeResult.id
800787 } else {
801788 val replacedType = tryReplaceParcelizeRawType(dp)
@@ -1411,20 +1398,24 @@ open class KotlinUsesExtractor(
14111398 private fun getUnquotedClassLabel (c : IrClass , argsIncludingOuterClasses : List <IrTypeArgument >? ): ClassLabelResults {
14121399 val pkg = c.packageFqName?.asString() ? : " "
14131400 val cls = c.name.asString()
1414- val label = when (val parent = c.parent) {
1415- is IrClass -> {
1416- " ${getUnquotedClassLabel(parent, listOf ()).classLabel} \$ $cls "
1417- }
1418- is IrFunction -> {
1419- " {${useFunction<DbMethod >(parent)} }.$cls "
1420- }
1421- is IrField -> {
1422- " {${useField(parent)} }.$cls "
1423- }
1424- else -> {
1425- if (pkg.isEmpty()) cls else " $pkg .$cls "
1426- }
1427- }
1401+ val label =
1402+ if (c.isAnonymousObject)
1403+ " {${useAnonymousClass(c).javaResult.id} }"
1404+ else
1405+ when (val parent = c.parent) {
1406+ is IrClass -> {
1407+ " ${getUnquotedClassLabel(parent, listOf ()).classLabel} \$ $cls "
1408+ }
1409+ is IrFunction -> {
1410+ " {${useFunction<DbMethod >(parent)} }.$cls "
1411+ }
1412+ is IrField -> {
1413+ " {${useField(parent)} }.$cls "
1414+ }
1415+ else -> {
1416+ if (pkg.isEmpty()) cls else " $pkg .$cls "
1417+ }
1418+ }
14281419
14291420 val reorderedArgs = orderTypeArgsLeftToRight(c, argsIncludingOuterClasses)
14301421 val typeArgLabels = reorderedArgs?.map { getTypeArgumentLabel(it) }
@@ -1435,31 +1426,24 @@ open class KotlinUsesExtractor(
14351426 " "
14361427 else
14371428 typeArgLabels.takeLast(c.typeParameters.size).joinToString(prefix = " <" , postfix = " >" , separator = " ," ) { it.shortName }
1429+ val shortNamePrefix = if (c.isAnonymousObject) " " else cls
14381430
14391431 return ClassLabelResults (
14401432 label + (typeArgLabels?.joinToString(separator = " " ) { " ;{${it.id} }" } ? : " <>" ),
1441- cls + typeArgsShortName
1433+ shortNamePrefix + typeArgsShortName
14421434 )
14431435 }
14441436
14451437 // `args` can be null to describe a raw generic type.
14461438 // For non-generic types it will be zero-length list.
14471439 fun getClassLabel (c : IrClass , argsIncludingOuterClasses : List <IrTypeArgument >? ): ClassLabelResults {
1448- if (c.isAnonymousObject) {
1449- logger.error(" Label generation should not be requested for an anonymous class" )
1450- }
1451-
14521440 val unquotedLabel = getUnquotedClassLabel(c, argsIncludingOuterClasses)
14531441 return ClassLabelResults (
14541442 " @\" class;${unquotedLabel.classLabel} \" " ,
14551443 unquotedLabel.shortName)
14561444 }
14571445
14581446 fun useClassSource (c : IrClass ): Label <out DbClassorinterface > {
1459- if (c.isAnonymousObject) {
1460- return useAnonymousClass(c).javaResult.id.cast<DbClass >()
1461- }
1462-
14631447 // For source classes, the label doesn't include any type arguments
14641448 val classTypeResult = addClassLabel(c, listOf ())
14651449 return classTypeResult.id
0 commit comments