Skip to content

Commit aef3300

Browse files
authored
Merge pull request #14 from zayass/feature/fix-warnings
Fix warnings in generated code
2 parents edafdd5 + 6db5023 commit aef3300

4 files changed

Lines changed: 80 additions & 60 deletions

File tree

compiler/src/main/java/com/readdle/codegen/SwiftBlockDescriptor.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -157,32 +157,32 @@ File generateCode() throws IOException {
157157
swiftWriter.emitStatement(String.format("let java_%s: JNIArgumentProtocol", param.name));
158158
}
159159

160-
swiftWriter.emitStatement("do {");
161-
for (int i = 0; i < params.size(); i++) {
162-
SwiftParamDescriptor param = params.get(i);
163-
if (param.isOptional) {
164-
swiftWriter.emitStatement(String.format("if let %s = $%s {", param.name, i + ""));
165-
swiftWriter.emitStatement(String.format("java_%s = try %s.javaObject()", param.name, param.name));
166-
swiftWriter.emitStatement("} else {");
167-
swiftWriter.emitStatement(String.format("java_%s = jnull()", param.name));
168-
swiftWriter.emitStatement("}");
169-
}
170-
else {
171-
swiftWriter.emitStatement(String.format("java_%s = try $%s.javaObject()", param.name, i + ""));
160+
if (params.size() > 0) {
161+
swiftWriter.emitStatement("do {");
162+
for (int i = 0; i < params.size(); i++) {
163+
SwiftParamDescriptor param = params.get(i);
164+
if (param.isOptional) {
165+
swiftWriter.emitStatement(String.format("if let %s = $%s {", param.name, i + ""));
166+
swiftWriter.emitStatement(String.format("java_%s = try %s.javaObject()", param.name, param.name));
167+
swiftWriter.emitStatement("} else {");
168+
swiftWriter.emitStatement(String.format("java_%s = jnull()", param.name));
169+
swiftWriter.emitStatement("}");
170+
} else {
171+
swiftWriter.emitStatement(String.format("java_%s = try $%s.javaObject()", param.name, i + ""));
172+
}
172173
}
173-
}
174174

175-
swiftWriter.emitStatement("}");
176-
swiftWriter.emitStatement("catch {");
177-
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
178-
if (returnSwiftType == null) {
179-
swiftWriter.emitStatement("assert(false, errorString)");
180-
swiftWriter.emitStatement("return");
181-
}
182-
else {
183-
swiftWriter.emitStatement("fatalError(errorString)");
175+
swiftWriter.emitStatement("}");
176+
swiftWriter.emitStatement("catch {");
177+
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
178+
if (returnSwiftType == null) {
179+
swiftWriter.emitStatement("assert(false, errorString)");
180+
swiftWriter.emitStatement("return");
181+
} else {
182+
swiftWriter.emitStatement("fatalError(errorString)");
183+
}
184+
swiftWriter.emitStatement("}");
184185
}
185-
swiftWriter.emitStatement("}");
186186

187187
String jniMethodTemplate;
188188
if (returnSwiftType != null) {
@@ -207,7 +207,7 @@ File generateCode() throws IOException {
207207

208208
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
209209
if (isThrown) {
210-
swiftWriter.emitStatement("throw NSError(domain: \"JavaException\", code: 1)");
210+
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
211211
}
212212
else {
213213
swiftWriter.emitStatement("fatalError(\"JavaException\")");

compiler/src/main/java/com/readdle/codegen/SwiftCallbackFuncDescriptor.java

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,27 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
9696
swiftWriter.emitEmptyLine();
9797
swiftWriter.emit(String.format("public %s func %s(", isStatic ? "static" : "", swiftMethodName));
9898
for (int i = 0; i < params.size(); i++) {
99+
boolean isFirst = i == 0;
100+
99101
SwiftParamDescriptor param = params.get(i);
102+
103+
String paramLabel = paramNames.get(i);
104+
String paramName = param.name;
100105
String paramType = param.swiftType.swiftType + (param.isOptional ? "?" : "");
101-
if (i == 0) {
102-
swiftWriter.emit(paramNames.get(i) + " " + param.name + ": " + paramType);
106+
107+
String paramString;
108+
if (paramLabel.equals(paramName)) {
109+
paramString = paramName;
110+
}
111+
else {
112+
paramString = paramLabel + " " + paramName;
113+
}
114+
115+
if (isFirst) {
116+
swiftWriter.emit(paramString + ": " + paramType);
103117
}
104118
else {
105-
swiftWriter.emit(", " + paramNames.get(i) + " " + param.name + ": " + paramType);
119+
swiftWriter.emit(", " + paramString + ": " + paramType);
106120
}
107121
}
108122

@@ -126,32 +140,32 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
126140
}
127141
swiftWriter.emitStatement("}");
128142

129-
swiftWriter.emitStatement("do {");
130-
for (SwiftParamDescriptor param : params) {
131-
if (param.isOptional) {
132-
swiftWriter.emitStatement(String.format("if let %1$s = %1$s {", param.name));
133-
swiftWriter.emitStatement(String.format("java%1$s = try %1$s.javaObject()", param.name));
134-
swiftWriter.emitStatement("}");
135-
}
136-
else {
137-
swiftWriter.emitStatement(String.format("java%s = try %s.javaObject()", param.name, param.name));
143+
if (params.size() > 0) {
144+
swiftWriter.emitStatement("do {");
145+
for (SwiftParamDescriptor param : params) {
146+
if (param.isOptional) {
147+
swiftWriter.emitStatement(String.format("if let %1$s = %1$s {", param.name));
148+
swiftWriter.emitStatement(String.format("java%1$s = try %1$s.javaObject()", param.name));
149+
swiftWriter.emitStatement("}");
150+
} else {
151+
swiftWriter.emitStatement(String.format("java%s = try %s.javaObject()", param.name, param.name));
152+
}
138153
}
139-
}
140154

141-
swiftWriter.emitStatement("}");
142-
swiftWriter.emitStatement("catch {");
143-
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
144-
if (returnSwiftType == null) {
145-
swiftWriter.emitStatement("assert(false, errorString)");
146-
swiftWriter.emitStatement("return");
147-
}
148-
else if (isReturnTypeOptional) {
149-
swiftWriter.emitStatement("assert(false, errorString)");
150-
swiftWriter.emitStatement("return nil");
151-
} else {
152-
swiftWriter.emitStatement("fatalError(errorString)");
155+
swiftWriter.emitStatement("}");
156+
swiftWriter.emitStatement("catch {");
157+
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
158+
if (returnSwiftType == null) {
159+
swiftWriter.emitStatement("assert(false, errorString)");
160+
swiftWriter.emitStatement("return");
161+
} else if (isReturnTypeOptional) {
162+
swiftWriter.emitStatement("assert(false, errorString)");
163+
swiftWriter.emitStatement("return nil");
164+
} else {
165+
swiftWriter.emitStatement("fatalError(errorString)");
166+
}
167+
swiftWriter.emitStatement("}");
153168
}
154-
swiftWriter.emitStatement("}");
155169

156170
String jniMethodTemplate;
157171
if (returnSwiftType != null) {
@@ -181,7 +195,7 @@ else if (isReturnTypeOptional) {
181195
swiftWriter.emit(") else {");
182196
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
183197
if (isThrown) {
184-
swiftWriter.emitStatement("throw NSError(domain: \"JavaException\", code: 1)");
198+
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
185199
}
186200
else {
187201
swiftWriter.emitStatement("fatalError(\"Don't support exception here!\")");
@@ -201,7 +215,7 @@ else if (isReturnTypeOptional) {
201215

202216
swiftWriter.emitStatement("if let throwable = JNI.ExceptionCheck() {");
203217
if (isThrown) {
204-
swiftWriter.emitStatement("throw NSError(domain: \"JavaException\", code: 1)");
218+
swiftWriter.emitStatement("throw Error.from(javaObject: throwable)");
205219
}
206220
else {
207221
swiftWriter.emitStatement("fatalError(\"JavaException\")");

compiler/src/main/java/com/readdle/codegen/SwiftFuncDescriptor.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
9595
swiftWriter.emitStatement(String.format("let %s: %s%s", param.name, param.swiftType.swiftType, param.isOptional ? "?" : ""));
9696
}
9797

98-
swiftWriter.emitStatement("do {");
98+
boolean shouldCatchPreamble = params.size() > 0 || !isStatic;
99+
if (shouldCatchPreamble) {
100+
swiftWriter.emitStatement("do {");
101+
}
99102

100103
if (!isStatic) {
101104
swiftWriter.emitStatement(String.format("swiftSelf = try %s.from(javaObject: this)", swiftType));
@@ -113,12 +116,15 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
113116
swiftWriter.emitStatement(String.format("%1$s = try %2$s.from(javaObject: j%1$s)", param.name, param.swiftType.swiftConstructorType));
114117
}
115118
}
116-
swiftWriter.emitStatement("}");
117-
swiftWriter.emitStatement("catch {");
118-
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
119-
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
120-
swiftWriter.emitStatement(String.format("return%s", returnSwiftType != null ? " nil" : ""));
121-
swiftWriter.emitStatement("}");
119+
120+
if (shouldCatchPreamble) {
121+
swiftWriter.emitStatement("}");
122+
swiftWriter.emitStatement("catch {");
123+
swiftWriter.emitStatement("let errorString = String(reflecting: type(of: error)) + String(describing: error)");
124+
swiftWriter.emitStatement("_ = JNI.api.ThrowNew(JNI.env, SwiftRuntimeErrorClass, errorString)");
125+
swiftWriter.emitStatement(String.format("return%s", returnSwiftType != null ? " nil" : ""));
126+
swiftWriter.emitStatement("}");
127+
}
122128

123129
if (isThrown) {
124130
swiftWriter.emitStatement("do {");

compiler/src/main/java/com/readdle/codegen/SwiftReferenceDescriptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ File generateCode() throws IOException {
165165
swiftWriter.emitEmptyLine();
166166
swiftWriter.emitStatement("// Unbalanced retain");
167167
swiftWriter.emitStatement("public func retain() {");
168-
swiftWriter.emitStatement("Unmanaged.passUnretained(self).retain()");
168+
swiftWriter.emitStatement("_ = Unmanaged.passUnretained(self).retain()");
169169
swiftWriter.emitStatement("}");
170170

171171
swiftWriter.endExtension();

0 commit comments

Comments
 (0)