56
56
import java .util .ArrayList ;
57
57
import java .util .Arrays ;
58
58
import java .util .Collection ;
59
+ import java .util .Comparator ;
59
60
import java .util .HashMap ;
60
61
import java .util .List ;
61
62
import java .util .Map ;
@@ -1029,18 +1030,6 @@ private DeclaredTypeDescriptor createDeclaredType(
1029
1030
}
1030
1031
checkArgument (typeBinding .isClass () || typeBinding .isInterface () || typeBinding .isEnum ());
1031
1032
1032
- Supplier <ImmutableList <MethodDescriptor >> declaredMethods =
1033
- () ->
1034
- Arrays .stream (typeBinding .getDeclaredMethods ())
1035
- .map (this ::createMethodDescriptor )
1036
- .collect (toImmutableList ());
1037
-
1038
- Supplier <ImmutableList <FieldDescriptor >> declaredFields =
1039
- () ->
1040
- Arrays .stream (typeBinding .getDeclaredFields ())
1041
- .map (this ::createFieldDescriptor )
1042
- .collect (toImmutableList ());
1043
-
1044
1033
TypeDeclaration typeDeclaration = createDeclarationForType (typeBinding .getTypeDeclaration ());
1045
1034
1046
1035
DeclaredTypeDescriptor enclosingTypeDescriptor =
@@ -1065,8 +1054,10 @@ private DeclaredTypeDescriptor createDeclaredType(
1065
1054
DeclaredTypeDescriptor .class ))
1066
1055
.setTypeArgumentDescriptors (
1067
1056
getTypeArgumentTypeDescriptors (typeBinding , inNullMarkedScope ))
1068
- .setDeclaredFieldDescriptorsFactory (declaredFields )
1069
- .setDeclaredMethodDescriptorsFactory (declaredMethods )
1057
+ .setDeclaredFieldDescriptorsFactory (
1058
+ () -> createFieldDescriptorsOrderedById (typeBinding .getDeclaredFields ()))
1059
+ .setDeclaredMethodDescriptorsFactory (
1060
+ () -> createMethodDescriptors (typeBinding .getDeclaredMethods ()))
1070
1061
.setSingleAbstractMethodDescriptorFactory (() -> getFunctionInterfaceMethod (typeBinding ))
1071
1062
.build ();
1072
1063
putTypeDescriptorInCache (inNullMarkedScope , typeBinding , typeDescriptor );
@@ -1175,19 +1166,6 @@ public TypeDeclaration createDeclarationForType(final ITypeBinding typeBinding)
1175
1166
boolean isAbstract = isAbstract (typeBinding );
1176
1167
boolean isFinal = isFinal (typeBinding );
1177
1168
1178
- Supplier <ImmutableList <MethodDescriptor >> declaredMethods =
1179
- () ->
1180
- Arrays .stream (typeBinding .getDeclaredMethods ())
1181
- .map (this ::createMethodDescriptor )
1182
- .collect (toImmutableList ());
1183
- ;
1184
-
1185
- Supplier <ImmutableList <FieldDescriptor >> declaredFields =
1186
- () ->
1187
- Arrays .stream (typeBinding .getDeclaredFields ())
1188
- .map (this ::createFieldDescriptor )
1189
- .collect (toImmutableList ());
1190
-
1191
1169
boolean isNullMarked = isNullMarked (typeBinding );
1192
1170
IBinding declaringMemberBinding = getDeclaringMethodOrFieldBinding (typeBinding );
1193
1171
@@ -1242,17 +1220,12 @@ public TypeDeclaration createDeclarationForType(final ITypeBinding typeBinding)
1242
1220
.map (TypeVariable ::toNonNullable )
1243
1221
.collect (toImmutableList ()))
1244
1222
.setVisibility (getVisibility (typeBinding ))
1245
- .setDeclaredMethodDescriptorsFactory (declaredMethods )
1246
- .setDeclaredFieldDescriptorsFactory (declaredFields )
1223
+ .setDeclaredMethodDescriptorsFactory (
1224
+ () -> createMethodDescriptors (typeBinding .getDeclaredMethods ()))
1225
+ .setDeclaredFieldDescriptorsFactory (
1226
+ () -> createFieldDescriptorsOrderedById (typeBinding .getDeclaredFields ()))
1247
1227
.setMemberTypeDeclarationsFactory (
1248
- () -> {
1249
- if (typeBinding .getDeclaredTypes () == null ) {
1250
- return ImmutableList .of ();
1251
- }
1252
- return Arrays .stream (typeBinding .getDeclaredTypes ())
1253
- .map (this ::createDeclarationForType )
1254
- .collect (ImmutableList .toImmutableList ());
1255
- })
1228
+ () -> createTypeDeclarations (typeBinding .getDeclaredTypes ()))
1256
1229
.setUnusableByJsSuppressed (
1257
1230
JsInteropAnnotationUtils .isUnusableByJsSuppressed (typeBinding ))
1258
1231
.setDeprecated (isDeprecated (typeBinding ))
@@ -1261,6 +1234,29 @@ public TypeDeclaration createDeclarationForType(final ITypeBinding typeBinding)
1261
1234
return typeDeclaration ;
1262
1235
}
1263
1236
1237
+ private ImmutableList <MethodDescriptor > createMethodDescriptors (IMethodBinding [] methodBindings ) {
1238
+ return Arrays .stream (methodBindings )
1239
+ .map (this ::createMethodDescriptor )
1240
+ .collect (toImmutableList ());
1241
+ }
1242
+
1243
+ private ImmutableList <FieldDescriptor > createFieldDescriptorsOrderedById (
1244
+ IVariableBinding [] fieldBindings ) {
1245
+ return Arrays .stream (fieldBindings )
1246
+ .sorted (Comparator .comparing (IVariableBinding ::getVariableId ))
1247
+ .map (this ::createFieldDescriptor )
1248
+ .collect (toImmutableList ());
1249
+ }
1250
+
1251
+ private ImmutableList <TypeDeclaration > createTypeDeclarations (ITypeBinding [] typeBindings ) {
1252
+ if (typeBindings == null ) {
1253
+ return ImmutableList .of ();
1254
+ }
1255
+ return Arrays .stream (typeBindings )
1256
+ .map (this ::createDeclarationForType )
1257
+ .collect (ImmutableList .toImmutableList ());
1258
+ }
1259
+
1264
1260
private boolean isNullMarked (ITypeBinding typeBinding ) {
1265
1261
return hasNullMarkedAnnotation (typeBinding )
1266
1262
|| packageAnnotationsResolver .isNullMarked (typeBinding .getPackage ().getName ());
0 commit comments