Skip to content

Commit 0867c63

Browse files
committed
Dev: separate java and swift method names in FunctionDescriptor
1 parent f337bc9 commit 0867c63

File tree

1 file changed

+35
-30
lines changed

1 file changed

+35
-30
lines changed

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

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.io.IOException;
66
import java.util.ArrayList;
7-
import java.util.Arrays;
7+
import java.util.Collections;
88
import java.util.LinkedList;
99
import java.util.List;
1010

@@ -14,26 +14,32 @@
1414

1515
class SwiftFuncDescriptor implements JavaSwiftProcessor.WritableElement {
1616

17-
String name;
17+
private String javaMethodName;
18+
private String swiftMethodName;
1819

19-
boolean isStatic;
20-
boolean isThrown;
20+
private boolean isStatic;
21+
private boolean isThrown;
2122

2223
private SwiftEnvironment.Type returnSwiftType;
2324
private boolean isReturnTypeOptional;
2425

25-
private String description;
26-
27-
private List<SwiftParamDescriptor> params = new LinkedList<>();
28-
private List<String> paramNames = new LinkedList<>();
26+
private List<SwiftParamDescriptor> params;
27+
private List<String> paramNames;
2928

3029
SwiftFuncDescriptor(ExecutableElement executableElement) {
31-
this.name = executableElement.getSimpleName().toString();
30+
String elementName = executableElement.getSimpleName().toString();
31+
this.javaMethodName = elementName;
32+
this.swiftMethodName = elementName;
33+
3234
this.isStatic = executableElement.getModifiers().contains(Modifier.STATIC);
3335
this.isThrown = executableElement.getThrownTypes() != null && executableElement.getThrownTypes().size() > 0;
3436
this.returnSwiftType = SwiftEnvironment.parseJavaType(executableElement.getReturnType().toString());
3537
this.isReturnTypeOptional = JavaSwiftProcessor.isNullable(executableElement);
3638

39+
int paramsSize = executableElement.getParameters().size();
40+
this.params = new ArrayList<>(paramsSize);
41+
this.paramNames = new ArrayList<>(paramsSize);
42+
3743
for (VariableElement variableElement : executableElement.getParameters()) {
3844
params.add(new SwiftParamDescriptor(variableElement));
3945
}
@@ -44,33 +50,32 @@ class SwiftFuncDescriptor implements JavaSwiftProcessor.WritableElement {
4450
String funcFullName = swiftFunc.value();
4551
int paramStart = funcFullName.indexOf("(");
4652
int paramEnd = funcFullName.indexOf(")");
47-
if (paramStart > 0 && paramEnd > 0 && paramEnd > paramStart) {
48-
this.name = funcFullName.substring(0, paramStart);
49-
String arguments = funcFullName.substring(paramStart + 1, paramEnd);
50-
String[] paramNames = arguments.split(":");
51-
if (paramNames.length == params.size()) {
52-
for (String paramName : paramNames) {
53-
this.paramNames.add(paramName + ": ");
54-
}
55-
}
56-
else {
57-
throw new IllegalArgumentException("Wrong count of arguments in func name");
58-
}
59-
}
60-
else {
53+
54+
if (paramStart <= 0 || paramEnd <= 0 || paramEnd <= paramStart) {
6155
throw new IllegalArgumentException("Wrong func name");
6256
}
57+
58+
this.swiftMethodName = funcFullName.substring(0, paramStart);
59+
60+
String arguments = funcFullName.substring(paramStart + 1, paramEnd);
61+
String[] paramNames = arguments.split(":");
62+
63+
if (paramNames.length != params.size()) {
64+
throw new IllegalArgumentException("Wrong count of arguments in func name");
65+
}
66+
67+
for (String paramName : paramNames) {
68+
this.paramNames.add(paramName + ": ");
69+
}
6370
}
6471
else {
65-
for (int i = 0; i < params.size(); i++) {
66-
paramNames.add("");
67-
}
72+
paramNames = Collections.nCopies(params.size(), "");
6873
}
6974
}
7075

7176
@Override
7277
public void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType) throws IOException {
73-
String swiftFuncName = "Java_" + javaFullName.replace("/", "_").replace("$", "_00024") + "_" + name;
78+
String swiftFuncName = "Java_" + javaFullName.replace("/", "_").replace("$", "_00024") + "_" + javaMethodName;
7479

7580
swiftWriter.emitEmptyLine();
7681
swiftWriter.emitStatement(String.format("@_silgen_name(\"%s\")", swiftFuncName));
@@ -124,7 +129,7 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
124129
returnSwiftType != null ? "let result = " : "",
125130
isThrown ? "try " : "",
126131
isStatic ? swiftType : "swiftSelf",
127-
name));
132+
swiftFuncName));
128133

129134
for (int i = 0; i < params.size(); i++) {
130135
SwiftParamDescriptor param = params.get(i);
@@ -170,12 +175,12 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
170175
@Override
171176
public String toString() {
172177
return "SwiftFuncDescriptor{" +
173-
"name='" + name + '\'' +
178+
"javaMethodName='" + javaMethodName + '\'' +
179+
", swiftMethodName='" + swiftMethodName + '\'' +
174180
", isStatic=" + isStatic +
175181
", isThrown=" + isThrown +
176182
", returnSwiftType='" + returnSwiftType + '\'' +
177183
", isReturnTypeOptional=" + isReturnTypeOptional +
178-
", description='" + description + '\'' +
179184
", params=" + params +
180185
'}';
181186
}

0 commit comments

Comments
 (0)