1414import org .openzen .zenscript .codemodel .type .BasicTypeID ;
1515import org .openzen .zenscript .codemodel .type .GlobalTypeRegistry ;
1616import org .openzen .zenscript .codemodel .scope .TypeScope ;
17- import org .openzen .zenscript .codemodel .type .StoredType ;
18- import org .openzen .zenscript .codemodel .type .storage .AutoStorageTag ;
19- import org .openzen .zenscript .codemodel .type .storage .StorageTag ;
17+ import org .openzen .zenscript .codemodel .type .TypeID ;
2018
2119/**
2220 *
2321 * @author Hoofdgebruiker
2422 */
2523public class FunctionHeader {
2624 public final TypeParameter [] typeParameters ;
27- private StoredType returnType ;
25+ private TypeID returnType ;
2826 public final FunctionParameter [] parameters ;
29- public final StoredType thrownType ;
30- public final StorageTag storage ;
31-
27+ public final TypeID thrownType ;
28+
3229 public final int minParameters ;
3330 public final int maxParameters ;
3431 public final boolean hasUnknowns ;
3532
36- public FunctionHeader (StoredType returnType ) {
33+ public FunctionHeader (TypeID returnType ) {
3734 if (returnType == null )
3835 throw new NullPointerException ();
3936
4037 this .typeParameters = TypeParameter .NONE ;
4138 this .returnType = returnType ;
4239 this .parameters = FunctionParameter .NONE ;
4340 this .thrownType = null ;
44- this .storage = null ;
4541
4642 minParameters = 0 ;
4743 maxParameters = 0 ;
48- hasUnknowns = returnType .type == BasicTypeID .UNDETERMINED ;
49- }
50-
51- public FunctionHeader (BasicTypeID returnType ) {
52- this (returnType .stored );
44+ hasUnknowns = returnType == BasicTypeID .UNDETERMINED ;
5345 }
5446
55- public FunctionHeader (StoredType returnType , StoredType ... parameterTypes ) {
47+ public FunctionHeader (TypeID returnType , TypeID ... parameterTypes ) {
5648 if (returnType == null )
5749 throw new NullPointerException ();
5850
5951 this .typeParameters = TypeParameter .NONE ;
6052 this .returnType = returnType ;
6153 this .parameters = new FunctionParameter [parameterTypes .length ];
6254 this .thrownType = null ;
63- this .storage = null ;
6455
6556 for (int i = 0 ; i < parameterTypes .length ; i ++)
6657 parameters [i ] = new FunctionParameter (parameterTypes [i ], null );
@@ -70,30 +61,21 @@ public FunctionHeader(StoredType returnType, StoredType... parameterTypes) {
7061 hasUnknowns = hasUnknowns (parameterTypes , returnType );
7162 }
7263
73- public FunctionHeader (BasicTypeID returnType , StoredType ... parameterTypes ) {
74- this (returnType .stored , parameterTypes );
75- }
76-
77- public FunctionHeader (StoredType returnType , FunctionParameter ... parameters ) {
64+ public FunctionHeader (TypeID returnType , FunctionParameter ... parameters ) {
7865 if (returnType == null )
7966 throw new NullPointerException ();
8067
8168 this .typeParameters = TypeParameter .NONE ;
8269 this .returnType = returnType ;
8370 this .parameters = parameters ;
8471 this .thrownType = null ;
85- this .storage = null ;
8672
8773 minParameters = getMinParameters (parameters );
8874 maxParameters = getMaxParameters (parameters );
8975 hasUnknowns = hasUnknowns (parameters , returnType );
9076 }
9177
92- public FunctionHeader (BasicTypeID returnType , FunctionParameter ... parameters ) {
93- this (returnType .stored , parameters );
94- }
95-
96- public FunctionHeader (TypeParameter [] typeParameters , StoredType returnType , StoredType thrownType , StorageTag storage , FunctionParameter ... parameters ) {
78+ public FunctionHeader (TypeParameter [] typeParameters , TypeID returnType , TypeID thrownType , FunctionParameter ... parameters ) {
9779 if (returnType == null )
9880 throw new NullPointerException ();
9981 if (typeParameters == null )
@@ -103,7 +85,6 @@ public FunctionHeader(TypeParameter[] typeParameters, StoredType returnType, Sto
10385 this .returnType = returnType ;
10486 this .parameters = parameters ;
10587 this .thrownType = thrownType ;
106- this .storage = storage ;
10788
10889 minParameters = getMinParameters (parameters );
10990 maxParameters = getMaxParameters (parameters );
@@ -148,18 +129,18 @@ public boolean[] useTypeParameters() {
148129 return useTypeParameters ;
149130 }
150131
151- public StoredType getReturnType () {
132+ public TypeID getReturnType () {
152133 return returnType ;
153134 }
154135
155- public void setReturnType (StoredType returnType ) {
136+ public void setReturnType (TypeID returnType ) {
156137 if (returnType == null )
157138 throw new NullPointerException ();
158139
159140 this .returnType = returnType ;
160141 }
161142
162- public StoredType getParameterType (boolean isVariadic , int index ) {
143+ public TypeID getParameterType (boolean isVariadic , int index ) {
163144 return getParameter (isVariadic , index ).type ;
164145 }
165146
@@ -188,7 +169,7 @@ public FunctionHeader normalize(GlobalTypeRegistry registry) {
188169 FunctionParameter [] normalizedParameters = new FunctionParameter [parameters .length ];
189170 for (int i = 0 ; i < normalizedParameters .length ; i ++)
190171 normalizedParameters [i ] = parameters [i ].normalize (registry );
191- return new FunctionHeader (typeParameters , returnType .getNormalized (), thrownType == null ? null : thrownType .getNormalized (), storage , normalizedParameters );
172+ return new FunctionHeader (typeParameters , returnType .getNormalized (), thrownType == null ? null : thrownType .getNormalized (), normalizedParameters );
192173 }
193174
194175 public int getNumberOfTypeParameters () {
@@ -205,28 +186,24 @@ public boolean hasAnyDefaultValues() {
205186
206187 public FunctionHeader inferFromOverride (GlobalTypeRegistry registry , FunctionHeader overridden ) {
207188 TypeParameter [] resultTypeParameters = typeParameters ;
208- StoredType resultReturnType = this .returnType ;
209- if (resultReturnType . type == BasicTypeID .UNDETERMINED )
189+ TypeID resultReturnType = this .returnType ;
190+ if (resultReturnType == BasicTypeID .UNDETERMINED )
210191 resultReturnType = overridden .returnType ;
211-
212- StoredType resultThrownType = this .thrownType ;
192+
193+ TypeID resultThrownType = this .thrownType ;
213194 if (resultThrownType == null && overridden .thrownType != null )
214195 resultThrownType = overridden .thrownType ;
215196
216197 FunctionParameter [] resultParameters = Arrays .copyOf (parameters , parameters .length );
217198 for (int i = 0 ; i < resultParameters .length ; i ++) {
218- if (resultParameters [i ].type . type == BasicTypeID .UNDETERMINED ) {
199+ if (resultParameters [i ].type == BasicTypeID .UNDETERMINED ) {
219200 FunctionParameter parameter = resultParameters [i ];
220201 FunctionParameter original = overridden .parameters [i ];
221202 resultParameters [i ] = new FunctionParameter (original .type , parameter .name , parameter .defaultValue , original .variadic );
222203 }
223204 }
224205
225- StorageTag resultStorage = this .storage ;
226- if (resultStorage == null )
227- resultStorage = overridden .storage ;
228-
229- return new FunctionHeader (resultTypeParameters , resultReturnType , resultThrownType , resultStorage , resultParameters );
206+ return new FunctionHeader (resultTypeParameters , resultReturnType , resultThrownType , resultParameters );
230207 }
231208
232209 public boolean matchesExactly (CodePosition position , CallArguments arguments , TypeScope scope ) {
@@ -266,8 +243,6 @@ public String getCanonicalWithoutReturnType() {
266243 }
267244 result .append ('>' );
268245 }
269- if (storage != null && storage != AutoStorageTag .INSTANCE )
270- result .append ('`' ).append (storage );
271246 result .append ('(' );
272247 for (int i = 0 ; i < parameters .length ; i ++) {
273248 if (i > 0 )
@@ -279,7 +254,7 @@ public String getCanonicalWithoutReturnType() {
279254 }
280255
281256 public String getCanonical () {
282- return getCanonicalWithoutReturnType () + returnType .type . toString ();
257+ return getCanonicalWithoutReturnType () + returnType .toString ();
283258 }
284259
285260 public boolean hasInferenceBlockingTypeParameters (TypeParameter [] parameters ) {
@@ -307,11 +282,11 @@ public boolean canOverride(TypeScope scope, FunctionHeader other) {
307282 throw new NullPointerException ();
308283 if (parameters .length != other .parameters .length )
309284 return false ;
310- if (returnType . type != BasicTypeID .UNDETERMINED && !scope .getTypeMembers (returnType ).canCastImplicit (other .returnType ))
285+ if (returnType != BasicTypeID .UNDETERMINED && !scope .getTypeMembers (returnType ).canCastImplicit (other .returnType ))
311286 return false ;
312287
313288 for (int i = 0 ; i < parameters .length ; i ++) {
314- if (parameters [i ].type . type == BasicTypeID .UNDETERMINED )
289+ if (parameters [i ].type == BasicTypeID .UNDETERMINED )
315290 continue ;
316291
317292 if (parameters [i ].variadic != other .parameters [i ].variadic )
@@ -376,7 +351,7 @@ public boolean isSimilarTo(FunctionHeader other) {
376351
377352 public FunctionHeader instanceForCall (CodePosition position , GlobalTypeRegistry registry , CallArguments arguments ) {
378353 if (arguments .getNumberOfTypeArguments () > 0 ) {
379- Map <TypeParameter , StoredType > typeParameters = StoredType .getMapping (this .typeParameters , arguments .typeArguments );
354+ Map <TypeParameter , TypeID > typeParameters = TypeID .getMapping (this .typeParameters , arguments .typeArguments );
380355 return instance (new GenericMapper (position , registry , typeParameters ));
381356 } else {
382357 return this ;
@@ -385,45 +360,45 @@ public FunctionHeader instanceForCall(CodePosition position, GlobalTypeRegistry
385360
386361 public FunctionHeader withGenericArguments (GenericMapper mapper ) {
387362 if (typeParameters .length > 0 )
388- mapper = mapper .getInner (mapper .position , mapper .registry , StoredType .getSelfMapping (mapper .registry , typeParameters ));
363+ mapper = mapper .getInner (mapper .position , mapper .registry , TypeID .getSelfMapping (mapper .registry , typeParameters ));
389364
390365 return instance (mapper );
391366 }
392367
393368 private FunctionHeader instance (GenericMapper mapper ) {
394- StoredType returnType = this .returnType .instance (mapper );
369+ TypeID returnType = this .returnType .instance (mapper );
395370 FunctionParameter [] parameters = new FunctionParameter [this .parameters .length ];
396371 for (int i = 0 ; i < parameters .length ; i ++) {
397372 parameters [i ] = this .parameters [i ].withGenericArguments (mapper );
398373 }
399- return new FunctionHeader (typeParameters , returnType , thrownType == null ? null : thrownType .instance (mapper ), storage , parameters );
374+ return new FunctionHeader (typeParameters , returnType , thrownType == null ? null : thrownType .instance (mapper ), parameters );
400375 }
401376
402- public FunctionHeader fillGenericArguments (CodePosition position , TypeScope scope , StoredType [] arguments ) {
377+ public FunctionHeader fillGenericArguments (CodePosition position , TypeScope scope , TypeID [] arguments ) {
403378 if (arguments == null || arguments .length == 0 )
404379 return this ;
405380
406- Map <TypeParameter , StoredType > typeArguments = StoredType .getMapping (typeParameters , arguments );
381+ Map <TypeParameter , TypeID > typeArguments = TypeID .getMapping (typeParameters , arguments );
407382 GenericMapper mapper = scope .getLocalTypeParameters ().getInner (position , scope .getTypeRegistry (), typeArguments );
408-
409- StoredType returnType = this .returnType .instance (mapper );
383+
384+ TypeID returnType = this .returnType .instance (mapper );
410385 FunctionParameter [] parameters = new FunctionParameter [this .parameters .length ];
411386 for (int i = 0 ; i < parameters .length ; i ++) {
412387 parameters [i ] = this .parameters [i ].withGenericArguments (mapper );
413388 }
414- return new FunctionHeader (TypeParameter .NONE , returnType , thrownType == null ? null : thrownType .instance (mapper ), storage , parameters );
389+ return new FunctionHeader (TypeParameter .NONE , returnType , thrownType == null ? null : thrownType .instance (mapper ), parameters );
415390 }
416391
417392 public FunctionHeader forTypeParameterInference () {
418- return new FunctionHeader (BasicTypeID .UNDETERMINED . stored , parameters );
393+ return new FunctionHeader (BasicTypeID .UNDETERMINED , parameters );
419394 }
420395
421396 public FunctionHeader forLambda (FunctionHeader lambdaHeader ) {
422397 FunctionParameter [] parameters = new FunctionParameter [lambdaHeader .parameters .length ];
423398 for (int i = 0 ; i < lambdaHeader .parameters .length ; i ++)
424399 parameters [i ] = new FunctionParameter (this .parameters [i ].type , lambdaHeader .parameters [i ].name );
425400
426- return new FunctionHeader (typeParameters , returnType , thrownType , storage , parameters );
401+ return new FunctionHeader (typeParameters , returnType , thrownType , parameters );
427402 }
428403
429404 public FunctionParameter getVariadicParameter () {
@@ -489,23 +464,23 @@ private static int getMaxParameters(FunctionParameter[] parameters) {
489464 return parameters [parameters .length - 1 ].variadic ? Integer .MAX_VALUE : parameters .length ;
490465 }
491466
492- private static boolean hasUnknowns (StoredType [] types , StoredType returnType ) {
493- if (returnType . type == BasicTypeID .UNDETERMINED )
467+ private static boolean hasUnknowns (TypeID [] types , TypeID returnType ) {
468+ if (returnType == BasicTypeID .UNDETERMINED )
494469 return true ;
495470
496- for (StoredType type : types )
497- if (type . type == BasicTypeID .UNDETERMINED )
471+ for (TypeID type : types )
472+ if (type == BasicTypeID .UNDETERMINED )
498473 return true ;
499474
500475 return false ;
501476 }
502477
503- private static boolean hasUnknowns (FunctionParameter [] parameters , StoredType returnType ) {
504- if (returnType . type == BasicTypeID .UNDETERMINED )
478+ private static boolean hasUnknowns (FunctionParameter [] parameters , TypeID returnType ) {
479+ if (returnType == BasicTypeID .UNDETERMINED )
505480 return true ;
506481
507482 for (FunctionParameter parameter : parameters )
508- if (parameter .type . type == BasicTypeID .UNDETERMINED )
483+ if (parameter .type == BasicTypeID .UNDETERMINED )
509484 return true ;
510485
511486 return false ;
0 commit comments