Allow '+new' in produced framework for classes with empty constructor

This commit is contained in:
Svyatoslav Scherbina
2018-03-07 13:25:46 +03:00
committed by SvyatoslavScherbina
parent 79b0dc5652
commit 9e8d784dac
@@ -244,9 +244,13 @@ internal class ObjCExportHeaderGenerator(val context: Context) {
val presentConstructors = mutableSetOf<String>()
descriptor.constructors.filter { mapper.shouldBeExposed(it) }.forEach {
if (!descriptor.isArray) presentConstructors += getSelector(it)
val selector = getSelector(it)
if (!descriptor.isArray) presentConstructors += selector
+"${getSignature(it, it)};"
if (selector == "init") {
+"+ (instancetype)new OBJC_SWIFT_UNAVAILABLE(\"use object initializers instead\");"
}
+""
}
@@ -278,8 +282,13 @@ internal class ObjCExportHeaderGenerator(val context: Context) {
// Hide "unimplemented" super constructors:
superClass?.constructors?.filter { mapper.shouldBeExposed(it) }?.forEach {
if (getSelector(it) !in presentConstructors) {
val selector = getSelector(it)
if (selector !in presentConstructors) {
+"${getSignature(it, it)} __attribute__((unavailable));"
if (selector == "init") {
+"+(instancetype) new __attribute__((unavailable));"
}
+""
// TODO: consider adding exception-throwing impls for these.
}