Skip to content

Commit 7602165

Browse files
authored
Merge pull request #92 from Snapchat/lf/revert-nsobject-in-protocols
Make NSObject based protocols optional
2 parents 14c8aef + ca15c6c commit 7602165

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

src/source/Main.scala

+5
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ object Main {
8484
var objcppFunctionPrologueFile: Option[String] = None
8585
var objcppDisableExceptionTranslation: Boolean = false
8686
var objcFileIdentStyleOptional: Option[IdentConverter] = None
87+
var objcStrictProtocol: Boolean = true
8788
var objcppNamespace: String = "djinni_generated"
8889
var objcBaseLibIncludePrefix: String = ""
8990
var wasmOutFolder: Option[File] = None
@@ -202,6 +203,9 @@ object Main {
202203
.text("Disable generating Objective-C class init helper method.")
203204
opt[Boolean]("objc-closed-enums").valueName("<true/false>").foreach(x => objcClosedEnums = x)
204205
.text("All generated Objective-C enums will be NS_CLOSED_ENUM (default: false). ")
206+
opt[Boolean]("objc-strict-protocols")
207+
.valueName("<true/false>").foreach(x => objcStrictProtocol = x)
208+
.text("All generated @protocol will implement <NSObject> (default: true). ")
205209
note("")
206210
opt[File]("objcpp-out").valueName("<out-folder>").foreach(x => objcppOutFolder = Some(x))
207211
.text("The output folder for private Objective-C++ files (Generator disabled if unspecified).")
@@ -416,6 +420,7 @@ object Main {
416420
objcGenProtocol,
417421
objcDisableClassCtor,
418422
objcClosedEnums,
423+
objcStrictProtocol,
419424
wasmOutFolder,
420425
wasmIncludePrefix,
421426
wasmIncludeCppPrefix,

src/source/ObjcGenerator.scala

+6-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,12 @@ class ObjcGenerator(spec: Spec) extends BaseObjcGenerator(spec) {
135135

136136
w.wl
137137
writeDoc(w, doc)
138-
if (useProtocol(i.ext, spec)) w.wl(s"@protocol $self <NSObject>") else w.wl(s"@interface $self : NSObject")
138+
if (useProtocol(i.ext, spec)) {
139+
val baseProtocol = if (spec.objcStrictProtocol) " <NSObject>" else ""
140+
w.wl(s"@protocol $self$baseProtocol")
141+
} else {
142+
w.wl(s"@interface $self : NSObject")
143+
}
139144

140145
for (m <- i.methods) {
141146
if (!m.static || (!spec.objcGenProtocol && m.lang.objc)) {

src/source/generator.scala

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ package object generatorTools {
8888
objcGenProtocol: Boolean,
8989
objcDisableClassCtor: Boolean,
9090
objcClosedEnums: Boolean,
91+
objcStrictProtocol: Boolean,
9192
wasmOutFolder: Option[File],
9293
wasmIncludePrefix: String,
9394
wasmIncludeCppPrefix: String,

0 commit comments

Comments
 (0)