17
17
18
18
import static com .google .common .base .Preconditions .checkState ;
19
19
import static java .util .stream .Collectors .toCollection ;
20
- import static jsinterop .generator .model .PredefinedTypeReference .ARRAY_STAMPER ;
21
- import static jsinterop .generator .model .PredefinedTypeReference .JS ;
20
+ import static jsinterop .generator .model .PredefinedTypes .ARRAY_STAMPER ;
21
+ import static jsinterop .generator .model .PredefinedTypes .JS ;
22
+ import static jsinterop .generator .model .PredefinedTypes .OBJECT ;
22
23
23
24
import com .google .common .collect .ImmutableList ;
24
25
import com .google .common .collect .ImmutableSet ;
44
45
import jsinterop .generator .model .ModelVisitor ;
45
46
import jsinterop .generator .model .Parameter ;
46
47
import jsinterop .generator .model .ParametrizedTypeReference ;
47
- import jsinterop .generator .model .PredefinedTypeReference ;
48
48
import jsinterop .generator .model .Program ;
49
49
import jsinterop .generator .model .ReturnStatement ;
50
50
import jsinterop .generator .model .Type ;
65
65
* </ul>
66
66
*/
67
67
public class BuiltInClosureTypeCleaner implements ModelVisitor {
68
- private static final String OBJECT = "Object" ;
69
-
70
68
@ Override
71
69
public void applyTo (Program program ) {
72
70
program .accept (
@@ -84,10 +82,10 @@ public void exitType(Type type) {
84
82
type .getFields ().stream ()
85
83
.filter (f -> "length" .equals (f .getName ()))
86
84
.collect (MoreCollectors .onlyElement ()));
87
- } else if ("Array" .equals (nativeFqn )) {
85
+ } else if (Objects .equals (nativeFqn , "Array" )) {
88
86
cleanArrayType (type );
89
87
addJavaArrayHelperMethods (type );
90
- } else if (OBJECT .equals (nativeFqn )) {
88
+ } else if (Objects .equals (nativeFqn , "Object" )) {
91
89
// JsCompiler uses a hardcoded definition for the Object type, one with two type
92
90
// parameters (from IObject). That makes the resulting java type to be generated as
93
91
// the following parametrized type:
@@ -138,10 +136,9 @@ private static void addJavaArrayHelperMethods(Type jsArrayType) {
138
136
asArray .setBody (
139
137
new ReturnStatement (
140
138
MethodInvocation .builder ()
141
- .setInvocationTarget (new TypeQualifier (ARRAY_STAMPER ))
139
+ .setInvocationTarget (new TypeQualifier (ARRAY_STAMPER . getReference () ))
142
140
.setMethodName ("stampJavaTypeInfo" )
143
- .setArgumentTypes (
144
- PredefinedTypeReference .OBJECT , new ArrayTypeReference (arrayTypeParameter ))
141
+ .setArgumentTypes (OBJECT .getReference (), new ArrayTypeReference (arrayTypeParameter ))
145
142
.setArguments (new LiteralExpression ("this" ), new LiteralExpression ("reference" ))
146
143
.build ()));
147
144
jsArrayType .addMethod (asArray );
@@ -165,9 +162,9 @@ PredefinedTypeReference.OBJECT, new ArrayTypeReference(arrayTypeParameter))
165
162
from .setBody (
166
163
new ReturnStatement (
167
164
MethodInvocation .builder ()
168
- .setInvocationTarget (new TypeQualifier (JS ))
165
+ .setInvocationTarget (new TypeQualifier (JS . getReference () ))
169
166
.setMethodName ("uncheckedCast" )
170
- .setArgumentTypes (PredefinedTypeReference . OBJECT )
167
+ .setArgumentTypes (OBJECT . getReference () )
171
168
.setArguments (new LiteralExpression ("array" ))
172
169
.build ()));
173
170
jsArrayType .addMethod (from );
@@ -308,8 +305,7 @@ private static void cleanArrayConcatMethod(Type arrayType) {
308
305
(ParametrizedTypeReference ) concatMethod .getReturnType ();
309
306
checkState (
310
307
concatReturnType .getActualTypeArguments ().size () == 1
311
- && PredefinedTypeReference .OBJECT .equals (
312
- concatReturnType .getActualTypeArguments ().get (0 )));
308
+ && concatReturnType .getActualTypeArguments ().get (0 ).isReferenceTo (OBJECT ));
313
309
concatMethod .setReturnType (
314
310
new ParametrizedTypeReference (
315
311
concatReturnType .getMainType (), ImmutableList .of (arrayValueTypeParameter )));
@@ -322,7 +318,7 @@ private static void cleanArrayConcatMethod(Type arrayType) {
322
318
private static void improveArrayMethodTyping (Method m , TypeReference arrayTypeParameter ) {
323
319
checkState (m .getParameters ().size () == 1 );
324
320
Parameter firstParameter = m .getParameters ().get (0 );
325
- checkState (PredefinedTypeReference . OBJECT . equals ( firstParameter .getType ()));
321
+ checkState (firstParameter .getType (). isReferenceTo ( OBJECT ));
326
322
m .getParameters ()
327
323
.set (0 , firstParameter .toBuilder ().setName ("items" ).setType (arrayTypeParameter ).build ());
328
324
}
0 commit comments