[Interop][StubIr] Add classifier property to AnnotationStub

to make translation to metadata easier
This commit is contained in:
Sergey Bogolepov
2019-11-15 16:35:24 +07:00
committed by Sergey Bogolepov
parent a194ec18e7
commit cd07dec326
@@ -113,29 +113,54 @@ interface AnnotationHolder {
val annotations: List<AnnotationStub> val annotations: List<AnnotationStub>
} }
sealed class AnnotationStub { sealed class AnnotationStub(val classifier: Classifier) {
sealed class ObjC : AnnotationStub() {
object ConsumesReceiver : ObjC() sealed class ObjC(classifier: Classifier) : AnnotationStub(classifier) {
object ReturnsRetained : ObjC() object ConsumesReceiver :
class Method(val selector: String, val encoding: String, val isStret: Boolean = false) : ObjC() ObjC(cCallClassifier.nested("ConsumesReceiver"))
class Factory(val selector: String, val encoding: String, val isStret: Boolean = false) : ObjC()
object Consumed : ObjC() object ReturnsRetained :
class Constructor(val selector: String, val designated: Boolean) : ObjC() ObjC(cCallClassifier.nested("ReturnsRetained"))
class ExternalClass(val protocolGetter: String = "", val binaryName: String = "") : ObjC()
class Method(val selector: String, val encoding: String, val isStret: Boolean = false) :
ObjC(Classifier.topLevel(cinteropPackage, "ObjCMethod"))
class Factory(val selector: String, val encoding: String, val isStret: Boolean = false) :
ObjC(Classifier.topLevel(cinteropPackage, "ObjCFactory"))
object Consumed :
ObjC(cCallClassifier.nested("Consumed"))
class Constructor(val selector: String, val designated: Boolean) :
ObjC(Classifier.topLevel(cinteropPackage, "ObjCConstructor"))
class ExternalClass(val protocolGetter: String = "", val binaryName: String = "") :
ObjC(Classifier.topLevel(cinteropPackage, "ExternalClass"))
} }
sealed class CCall : AnnotationStub() { sealed class CCall(classifier: Classifier) : AnnotationStub(classifier) {
object CString : CCall() object CString : CCall(cCallClassifier.nested("CString"))
object WCString : CCall() object WCString : CCall(cCallClassifier.nested("WCString"))
class Symbol(val symbolName: String) : CCall() class Symbol(val symbolName: String) : CCall(cCallClassifier)
} }
class CStruct(val struct: String) : AnnotationStub() class CStruct(val struct: String) :
class CNaturalStruct(val members: List<StructMember>) : AnnotationStub() AnnotationStub(Classifier.topLevel(cinteropInternalPackage, "CStruct"))
class CLength(val length: Long) : AnnotationStub() class CNaturalStruct(val members: List<StructMember>) :
AnnotationStub(Classifier.topLevel(cinteropPackage, "CNaturalStruct"))
class Deprecated(val message: String, val replaceWith: String) : AnnotationStub() class CLength(val length: Long) :
AnnotationStub(Classifier.topLevel(cinteropPackage, "CLength"))
class Deprecated(val message: String, val replaceWith: String) :
AnnotationStub(Classifier.topLevel("kotlin", "Deprecated"))
private companion object {
const val cinteropInternalPackage = "kotlinx.cinterop.internal"
const val cinteropPackage = "kotlinx.cinterop"
val cCallClassifier = Classifier.topLevel(cinteropInternalPackage, "CCall")
}
} }
/** /**