44
55import java .io .IOException ;
66import java .util .ArrayList ;
7- import java .util .Arrays ;
7+ import java .util .Collections ;
88import java .util .LinkedList ;
99import java .util .List ;
1010
1414
1515class 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