Remove unsafe cast function usages from compiler plugins
This commit is contained in:
committed by
Space Team
parent
fd9b19ee49
commit
0d8d91f803
+2
-3
@@ -36,7 +36,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
class ParcelableIrTransformer(private val context: IrPluginContext, private val androidSymbols: AndroidSymbols) :
|
||||
@@ -128,7 +127,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
|
||||
}
|
||||
|
||||
declaration.functions.find {
|
||||
it.descriptor.safeAs<ParcelableSyntheticComponent>()?.componentKind == ParcelableSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS
|
||||
(it.descriptor as? ParcelableSyntheticComponent)?.componentKind == ParcelableSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS
|
||||
}?.let { stub ->
|
||||
symbolMap[stub.symbol] = describeContents.symbol
|
||||
declaration.declarations.remove(stub)
|
||||
@@ -183,7 +182,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
|
||||
}
|
||||
|
||||
declaration.functions.find {
|
||||
it.descriptor.safeAs<ParcelableSyntheticComponent>()?.componentKind == ParcelableSyntheticComponent.ComponentKind.WRITE_TO_PARCEL
|
||||
(it.descriptor as? ParcelableSyntheticComponent)?.componentKind == ParcelableSyntheticComponent.ComponentKind.WRITE_TO_PARCEL
|
||||
}?.let { stub ->
|
||||
symbolMap[stub.symbol] = writeToParcel.symbol
|
||||
declaration.declarations.remove(stub)
|
||||
|
||||
+2
-2
@@ -43,7 +43,6 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.propertyIfAccessor
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||
abstract class AndroidIrExtension : IrGenerationExtension {
|
||||
@@ -54,7 +53,8 @@ abstract class AndroidIrExtension : IrGenerationExtension {
|
||||
override fun resolveSymbol(symbol: IrSymbol, context: TranslationPluginContext): IrDeclaration? =
|
||||
if (symbol !is IrSimpleFunctionSymbol ||
|
||||
(symbol.descriptor !is AndroidSyntheticFunction
|
||||
&& symbol.descriptor.safeAs<PropertyGetterDescriptor>()?.correspondingProperty !is AndroidSyntheticProperty)) {
|
||||
&& (symbol.descriptor as? PropertyGetterDescriptor)?.correspondingProperty !is AndroidSyntheticProperty)
|
||||
) {
|
||||
super.resolveSymbol(symbol, context)
|
||||
} else {
|
||||
// Replace android synthetic functions with stubs, since they are essentially intrinsics and will be replaced in the plugin
|
||||
|
||||
Reference in New Issue
Block a user