I got this issue when trying to custom context for kotlin multiplatform
Actual typealias 'ApplicationContext' has no corresponding expected declaration
The following declaration is incompatible because modality is different:
public final expect class ApplicationContext
androidMain
import android.app.Application
actual typealias ApplicationContext = Application
commonMain
expect class ApplicationContext
iosMain
import platform.UIKit.UIView
actual typealias ApplicationContext = UIView
CodePudding user response:
The expect
class structure should match the class you're typealiasing to.
Android's context
class is an abstract
class
public abstract class Context {}
So the modality error comes from there.
You would need the expect
class to be abstract
as well to fix that particular error
expect abstract class ApplicationContext
Making it abstract
would break modality for UIView
as it's not abstract
. So what you're trying to do is not possible in a straightforward manner.
You would need to think about a different strategy for what you're trying to achieve.