Browse Source

Merge branch 'feature/remove-stored-types' into feature/remove-storedtypes

Stan Hebben 4 years ago
parent
commit
7c0db135d6
100 changed files with 309 additions and 522 deletions
  1. 0
    1
      CodeFormatter/src/main/java/org/openzen/zenscript/formatter/ExpressionFormatter.java
  2. 4
    4
      CodeFormatter/src/main/java/org/openzen/zenscript/formatter/FormattingUtils.java
  3. 1
    12
      CodeFormatter/src/main/java/org/openzen/zenscript/formatter/TypeFormatter.java
  4. 44
    72
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/FunctionHeader.java
  5. 6
    11
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/FunctionParameter.java
  6. 14
    14
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/GenericMapper.java
  7. 3
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/GenericName.java
  8. 1
    42
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/HighLevelDefinition.java
  9. 1
    8
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/ModuleSpace.java
  10. 1
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/SemanticModule.java
  11. 1
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/NativeAnnotationDefinition.java
  12. 4
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/PreconditionAnnotationDefinition.java
  13. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/PreconditionForMethod.java
  14. 1
    8
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/FileResolutionContext.java
  15. 2
    11
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/LocalTypeResolutionContext.java
  16. 1
    18
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/ModuleTypeResolutionContext.java
  17. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/StatementContext.java
  18. 8
    8
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/TypeContext.java
  19. 2
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/TypeResolutionContext.java
  20. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/ExpansionDefinition.java
  21. 1
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/FunctionDefinition.java
  22. 0
    9
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/InterfaceDefinition.java
  23. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/VariantDefinition.java
  24. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/AndAndExpression.java
  25. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ArrayExpression.java
  26. 8
    8
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CallArguments.java
  27. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CapturedExpression.java
  28. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CapturedThisExpression.java
  29. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CompareExpression.java
  30. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConditionalExpression.java
  31. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantBoolExpression.java
  32. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantByteExpression.java
  33. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantCharExpression.java
  34. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantDoubleExpression.java
  35. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantFloatExpression.java
  36. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantIntExpression.java
  37. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantLongExpression.java
  38. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantSByteExpression.java
  39. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantShortExpression.java
  40. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantStringExpression.java
  41. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUIntExpression.java
  42. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantULongExpression.java
  43. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUShortExpression.java
  44. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUSizeExpression.java
  45. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstructorSuperCallExpression.java
  46. 5
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstructorThisCallExpression.java
  47. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/DummyExpression.java
  48. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/EnumConstantExpression.java
  49. 17
    19
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/Expression.java
  50. 2
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionSymbol.java
  51. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionVisitor.java
  52. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionVisitorWithContext.java
  53. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/FunctionExpression.java
  54. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/GetFieldExpression.java
  55. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/GetStaticFieldExpression.java
  56. 3
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/InvalidExpression.java
  57. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/IsExpression.java
  58. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MakeConstExpression.java
  59. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MapExpression.java
  60. 6
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MatchExpression.java
  61. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/NewExpression.java
  62. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/NullExpression.java
  63. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/OrOrExpression.java
  64. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/PanicExpression.java
  65. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/RangeExpression.java
  66. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/SameObjectExpression.java
  67. 0
    46
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/StorageCastExpression.java
  68. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/SupertypeCastExpression.java
  69. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ThisExpression.java
  70. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ThrowExpression.java
  71. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryConvertExpression.java
  72. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryRethrowAsExceptionExpression.java
  73. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryRethrowAsResultExpression.java
  74. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/VariantValueExpression.java
  75. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/WrapOptionalExpression.java
  76. 2
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/ParameterSuperBound.java
  77. 3
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/ParameterTypeBound.java
  78. 0
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/TypeParameter.java
  79. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/CasterMember.java
  80. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ConstMember.java
  81. 1
    1
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ConstructorMember.java
  82. 4
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/FieldMember.java
  83. 3
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/FunctionalMember.java
  84. 6
    6
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/GetterMember.java
  85. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/IDefinitionMember.java
  86. 6
    7
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ImplementationMember.java
  87. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/InnerDefinition.java
  88. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/InnerDefinitionMember.java
  89. 6
    7
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/IteratorMember.java
  90. 5
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/PropertyMember.java
  91. 4
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/SetterMember.java
  92. 2
    3
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/StaticInitializerMember.java
  93. 5
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/CasterMemberRef.java
  94. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/ConstMemberRef.java
  95. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/DefinitionMemberRef.java
  96. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/FieldMemberRef.java
  97. 3
    4
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/FunctionalMemberRef.java
  98. 2
    2
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/GetterMemberRef.java
  99. 5
    5
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/ImplementationMemberRef.java
  100. 0
    0
      CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/IteratorMemberRef.java

+ 0
- 1
CodeFormatter/src/main/java/org/openzen/zenscript/formatter/ExpressionFormatter.java View File

70
 import org.openzen.zenscript.codemodel.expression.SetterExpression;
70
 import org.openzen.zenscript.codemodel.expression.SetterExpression;
71
 import org.openzen.zenscript.codemodel.expression.StaticGetterExpression;
71
 import org.openzen.zenscript.codemodel.expression.StaticGetterExpression;
72
 import org.openzen.zenscript.codemodel.expression.StaticSetterExpression;
72
 import org.openzen.zenscript.codemodel.expression.StaticSetterExpression;
73
-import org.openzen.zenscript.codemodel.expression.StorageCastExpression;
74
 import org.openzen.zenscript.codemodel.expression.SupertypeCastExpression;
73
 import org.openzen.zenscript.codemodel.expression.SupertypeCastExpression;
75
 import org.openzen.zenscript.codemodel.expression.ThisExpression;
74
 import org.openzen.zenscript.codemodel.expression.ThisExpression;
76
 import org.openzen.zenscript.codemodel.expression.ThrowExpression;
75
 import org.openzen.zenscript.codemodel.expression.ThrowExpression;

+ 4
- 4
CodeFormatter/src/main/java/org/openzen/zenscript/formatter/FormattingUtils.java View File

30
 import org.openzen.zenscript.codemodel.statement.VarStatement;
30
 import org.openzen.zenscript.codemodel.statement.VarStatement;
31
 import org.openzen.zenscript.codemodel.statement.WhileStatement;
31
 import org.openzen.zenscript.codemodel.statement.WhileStatement;
32
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
32
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
33
-import org.openzen.zenscript.codemodel.type.StoredType;
33
+import org.openzen.zenscript.codemodel.type.TypeID;
34
 
34
 
35
 /**
35
 /**
36
  *
36
  *
78
 			if (parameter.variadic)
78
 			if (parameter.variadic)
79
 				result.append("...");
79
 				result.append("...");
80
 			
80
 			
81
-			if (!settings.showAnyInFunctionHeaders || !parameter.type.isBasic(BasicTypeID.UNDETERMINED)) {
81
+			if (!settings.showAnyInFunctionHeaders || parameter.type != BasicTypeID.UNDETERMINED) {
82
 				result.append(" as ");
82
 				result.append(" as ");
83
 				result.append(typeFormatter.format(header.getReturnType()));
83
 				result.append(typeFormatter.format(header.getReturnType()));
84
 			}
84
 			}
86
 			parameterIndex++;
86
 			parameterIndex++;
87
 		}
87
 		}
88
 		result.append(")");
88
 		result.append(")");
89
-		if (!settings.showAnyInFunctionHeaders || !header.getReturnType().isBasic(BasicTypeID.UNDETERMINED)) {
89
+		if (!settings.showAnyInFunctionHeaders || header.getReturnType() != BasicTypeID.UNDETERMINED) {
90
 			result.append(" as ");
90
 			result.append(" as ");
91
 			result.append(typeFormatter.format(header.getReturnType()));
91
 			result.append(typeFormatter.format(header.getReturnType()));
92
 		}
92
 		}
128
 			result.append("<");
128
 			result.append("<");
129
 			
129
 			
130
 			int index = 0;
130
 			int index = 0;
131
-			for (StoredType typeArgument : arguments.typeArguments) {
131
+			for (TypeID typeArgument : arguments.typeArguments) {
132
 				if (index > 0)
132
 				if (index > 0)
133
 					result.append(", ");
133
 					result.append(", ");
134
 				result.append(typeFormatter.format(typeArgument));
134
 				result.append(typeFormatter.format(typeArgument));

+ 1
- 12
CodeFormatter/src/main/java/org/openzen/zenscript/formatter/TypeFormatter.java View File

20
 import org.openzen.zenscript.codemodel.type.GenericTypeID;
20
 import org.openzen.zenscript.codemodel.type.GenericTypeID;
21
 import org.openzen.zenscript.codemodel.type.IteratorTypeID;
21
 import org.openzen.zenscript.codemodel.type.IteratorTypeID;
22
 import org.openzen.zenscript.codemodel.type.RangeTypeID;
22
 import org.openzen.zenscript.codemodel.type.RangeTypeID;
23
-import org.openzen.zenscript.codemodel.type.StoredType;
24
-import org.openzen.zenscript.codemodel.type.StringTypeID;
25
 import org.openzen.zenscript.codemodel.type.TypeID;
23
 import org.openzen.zenscript.codemodel.type.TypeID;
26
 import stdlib.Chars;
24
 import stdlib.Chars;
27
 import org.openzen.zenscript.codemodel.type.TypeVisitor;
25
 import org.openzen.zenscript.codemodel.type.TypeVisitor;
42
 	public String format(TypeID type) {
40
 	public String format(TypeID type) {
43
 		return type.accept(this);
41
 		return type.accept(this);
44
 	}
42
 	}
45
-	
46
-	public String format(StoredType type) {
47
-		return type.type.accept(this) + (type.getSpecifiedStorage() == null ? "" : "`" + type.getSpecifiedStorage().toString());
48
-	}
49
 
43
 
50
 	@Override
44
 	@Override
51
 	public String visitBasic(BasicTypeID basic) {
45
 	public String visitBasic(BasicTypeID basic) {
52
 		return basic.name;
46
 		return basic.name;
53
 	}
47
 	}
54
-	
55
-	@Override
56
-	public String visitString(StringTypeID string) {
57
-		return "string";
58
-	}
59
 
48
 
60
 	@Override
49
 	@Override
61
 	public String visitArray(ArrayTypeID array) {
50
 	public String visitArray(ArrayTypeID array) {
97
 		result.append(importedName);
86
 		result.append(importedName);
98
 		result.append("<");
87
 		result.append("<");
99
 		int index = 0;
88
 		int index = 0;
100
-		for (StoredType typeParameter : definition.typeArguments) {
89
+		for (TypeID typeParameter : definition.typeArguments) {
101
 			if (index > 0)
90
 			if (index > 0)
102
 				result.append(", ");
91
 				result.append(", ");
103
 			
92
 			

+ 44
- 72
CodeModel/src/main/java/org/openzen/zenscript/codemodel/FunctionHeader.java View File

15
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
15
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
16
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
16
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
17
 import org.openzen.zenscript.codemodel.scope.TypeScope;
17
 import org.openzen.zenscript.codemodel.scope.TypeScope;
18
-import org.openzen.zenscript.codemodel.type.StoredType;
19
-import org.openzen.zenscript.codemodel.type.storage.AutoStorageTag;
20
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
18
+import org.openzen.zenscript.codemodel.type.TypeID;
21
 
19
 
22
 /**
20
 /**
23
  *
21
  *
25
  */
23
  */
26
 public class FunctionHeader {
24
 public class FunctionHeader {
27
 	public final TypeParameter[] typeParameters;
25
 	public final TypeParameter[] typeParameters;
28
-	private StoredType returnType;
26
+	private TypeID returnType;
29
 	public final FunctionParameter[] parameters;
27
 	public final FunctionParameter[] parameters;
30
-	public final StoredType thrownType;
31
-	public final StorageTag storage;
32
-	
28
+	public final TypeID thrownType;
29
+
33
 	public final int minParameters;
30
 	public final int minParameters;
34
 	public final int maxParameters;
31
 	public final int maxParameters;
35
 	public final boolean hasUnknowns;
32
 	public final boolean hasUnknowns;
36
 	
33
 	
37
-	public FunctionHeader(StoredType returnType) {
34
+	public FunctionHeader(TypeID returnType) {
38
 		if (returnType == null)
35
 		if (returnType == null)
39
 			throw new NullPointerException();
36
 			throw new NullPointerException();
40
 		
37
 		
42
 		this.returnType = returnType;
39
 		this.returnType = returnType;
43
 		this.parameters = FunctionParameter.NONE;
40
 		this.parameters = FunctionParameter.NONE;
44
 		this.thrownType = null;
41
 		this.thrownType = null;
45
-		this.storage = null;
46
 		
42
 		
47
 		minParameters = 0;
43
 		minParameters = 0;
48
 		maxParameters = 0;
44
 		maxParameters = 0;
49
-		hasUnknowns = returnType.type == BasicTypeID.UNDETERMINED;
50
-	}
51
-	
52
-	public FunctionHeader(BasicTypeID returnType) {
53
-		this(returnType.stored);
45
+		hasUnknowns = returnType == BasicTypeID.UNDETERMINED;
54
 	}
46
 	}
55
 	
47
 	
56
-	public FunctionHeader(StoredType returnType, StoredType... parameterTypes) {
48
+	public FunctionHeader(TypeID returnType, TypeID... parameterTypes) {
57
 		if (returnType == null)
49
 		if (returnType == null)
58
 			throw new NullPointerException();
50
 			throw new NullPointerException();
59
 		
51
 		
61
 		this.returnType = returnType;
53
 		this.returnType = returnType;
62
 		this.parameters = new FunctionParameter[parameterTypes.length];
54
 		this.parameters = new FunctionParameter[parameterTypes.length];
63
 		this.thrownType = null;
55
 		this.thrownType = null;
64
-		this.storage = null;
65
 		
56
 		
66
 		for (int i = 0; i < parameterTypes.length; i++)
57
 		for (int i = 0; i < parameterTypes.length; i++)
67
 			parameters[i] = new FunctionParameter(parameterTypes[i], null);
58
 			parameters[i] = new FunctionParameter(parameterTypes[i], null);
71
 		hasUnknowns = hasUnknowns(parameterTypes, returnType);
62
 		hasUnknowns = hasUnknowns(parameterTypes, returnType);
72
 	}
63
 	}
73
 	
64
 	
74
-	public FunctionHeader(BasicTypeID returnType, StoredType... parameterTypes) {
75
-		this(returnType.stored, parameterTypes);
76
-	}
77
-	
78
-	public FunctionHeader(StoredType returnType, FunctionParameter... parameters) {
65
+	public FunctionHeader(TypeID returnType, FunctionParameter... parameters) {
79
 		if (returnType == null)
66
 		if (returnType == null)
80
 			throw new NullPointerException();
67
 			throw new NullPointerException();
81
 		
68
 		
83
 		this.returnType = returnType;
70
 		this.returnType = returnType;
84
 		this.parameters = parameters;
71
 		this.parameters = parameters;
85
 		this.thrownType = null;
72
 		this.thrownType = null;
86
-		this.storage = null;
87
 		
73
 		
88
 		minParameters = getMinParameters(parameters);
74
 		minParameters = getMinParameters(parameters);
89
 		maxParameters = getMaxParameters(parameters);
75
 		maxParameters = getMaxParameters(parameters);
90
 		hasUnknowns = hasUnknowns(parameters, returnType);
76
 		hasUnknowns = hasUnknowns(parameters, returnType);
91
 	}
77
 	}
92
 	
78
 	
93
-	public FunctionHeader(BasicTypeID returnType, FunctionParameter... parameters) {
94
-		this(returnType.stored, parameters);
95
-	}
96
-	
97
-	public FunctionHeader(TypeParameter[] typeParameters, StoredType returnType, StoredType thrownType, StorageTag storage, FunctionParameter... parameters) {
79
+	public FunctionHeader(TypeParameter[] typeParameters, TypeID returnType, TypeID thrownType, FunctionParameter... parameters) {
98
 		if (returnType == null)
80
 		if (returnType == null)
99
 			throw new NullPointerException();
81
 			throw new NullPointerException();
100
 		if (typeParameters == null)
82
 		if (typeParameters == null)
104
 		this.returnType = returnType;
86
 		this.returnType = returnType;
105
 		this.parameters = parameters;
87
 		this.parameters = parameters;
106
 		this.thrownType = thrownType;
88
 		this.thrownType = thrownType;
107
-		this.storage = storage;
108
 		
89
 		
109
 		minParameters = getMinParameters(parameters);
90
 		minParameters = getMinParameters(parameters);
110
 		maxParameters = getMaxParameters(parameters);
91
 		maxParameters = getMaxParameters(parameters);
149
 		return useTypeParameters;
130
 		return useTypeParameters;
150
 	}
131
 	}
151
 	
132
 	
152
-	public StoredType getReturnType() {
133
+	public TypeID getReturnType() {
153
 		return returnType;
134
 		return returnType;
154
 	}
135
 	}
155
 	
136
 	
156
-	public void setReturnType(StoredType returnType) {
137
+	public void setReturnType(TypeID returnType) {
157
 		if (returnType == null)
138
 		if (returnType == null)
158
 			throw new NullPointerException();
139
 			throw new NullPointerException();
159
 		
140
 		
160
 		this.returnType = returnType;
141
 		this.returnType = returnType;
161
 	}
142
 	}
162
 	
143
 	
163
-	public StoredType getParameterType(boolean isVariadic, int index) {
144
+	public TypeID getParameterType(boolean isVariadic, int index) {
164
 		return getParameter(isVariadic, index).type;
145
 		return getParameter(isVariadic, index).type;
165
 	}
146
 	}
166
 	
147
 	
167
 	public FunctionParameter getParameter(boolean isVariadic, int index) {
148
 	public FunctionParameter getParameter(boolean isVariadic, int index) {
168
 		if (isVariadic && index >= parameters.length - 1) {
149
 		if (isVariadic && index >= parameters.length - 1) {
169
 			final FunctionParameter parameter = parameters[parameters.length - 1];
150
 			final FunctionParameter parameter = parameters[parameters.length - 1];
170
-			if(parameter.type.type instanceof ArrayTypeID) {
171
-				return new FunctionParameter(((ArrayTypeID) parameter.type.type).elementType, parameter.name);
151
+			if(parameter.type instanceof ArrayTypeID) {
152
+				return new FunctionParameter(((ArrayTypeID) parameter.type).elementType, parameter.name);
172
 			}
153
 			}
173
 			return parameter;
154
 			return parameter;
174
 		} else {
155
 		} else {
193
 		FunctionParameter[] normalizedParameters = new FunctionParameter[parameters.length];
174
 		FunctionParameter[] normalizedParameters = new FunctionParameter[parameters.length];
194
 		for (int i = 0; i < normalizedParameters.length; i++)
175
 		for (int i = 0; i < normalizedParameters.length; i++)
195
 			normalizedParameters[i] = parameters[i].normalize(registry);
176
 			normalizedParameters[i] = parameters[i].normalize(registry);
196
-		return new FunctionHeader(typeParameters, returnType.getNormalized(), thrownType == null ? null : thrownType.getNormalized(), storage, normalizedParameters);
177
+		return new FunctionHeader(typeParameters, returnType.getNormalized(), thrownType == null ? null : thrownType.getNormalized(), normalizedParameters);
197
 	}
178
 	}
198
 	
179
 	
199
 	public int getNumberOfTypeParameters() {
180
 	public int getNumberOfTypeParameters() {
210
 	
191
 	
211
 	public FunctionHeader inferFromOverride(GlobalTypeRegistry registry, FunctionHeader overridden) {
192
 	public FunctionHeader inferFromOverride(GlobalTypeRegistry registry, FunctionHeader overridden) {
212
 		TypeParameter[] resultTypeParameters = typeParameters;
193
 		TypeParameter[] resultTypeParameters = typeParameters;
213
-		StoredType resultReturnType = this.returnType;
214
-		if (resultReturnType.type == BasicTypeID.UNDETERMINED)
194
+		TypeID resultReturnType = this.returnType;
195
+		if (resultReturnType == BasicTypeID.UNDETERMINED)
215
 			resultReturnType = overridden.returnType;
196
 			resultReturnType = overridden.returnType;
216
-		
217
-		StoredType resultThrownType = this.thrownType;
197
+
198
+		TypeID resultThrownType = this.thrownType;
218
 		if (resultThrownType == null && overridden.thrownType != null)
199
 		if (resultThrownType == null && overridden.thrownType != null)
219
 			resultThrownType = overridden.thrownType;
200
 			resultThrownType = overridden.thrownType;
220
 		
201
 		
221
 		FunctionParameter[] resultParameters = Arrays.copyOf(parameters, parameters.length);
202
 		FunctionParameter[] resultParameters = Arrays.copyOf(parameters, parameters.length);
222
 		for (int i = 0; i < resultParameters.length; i++) {
203
 		for (int i = 0; i < resultParameters.length; i++) {
223
-			if (resultParameters[i].type.type == BasicTypeID.UNDETERMINED) {
204
+			if (resultParameters[i].type == BasicTypeID.UNDETERMINED) {
224
 				FunctionParameter parameter = resultParameters[i];
205
 				FunctionParameter parameter = resultParameters[i];
225
 				FunctionParameter original = overridden.parameters[i];
206
 				FunctionParameter original = overridden.parameters[i];
226
 				resultParameters[i] = new FunctionParameter(original.type, parameter.name, parameter.defaultValue, original.variadic);
207
 				resultParameters[i] = new FunctionParameter(original.type, parameter.name, parameter.defaultValue, original.variadic);
227
 			}
208
 			}
228
 		}
209
 		}
229
 		
210
 		
230
-		StorageTag resultStorage = this.storage;
231
-		if (resultStorage == null)
232
-			resultStorage = overridden.storage;
233
-		
234
-		return new FunctionHeader(resultTypeParameters, resultReturnType, resultThrownType, resultStorage, resultParameters);
211
+		return new FunctionHeader(resultTypeParameters, resultReturnType, resultThrownType, resultParameters);
235
 	}
212
 	}
236
 	
213
 	
237
 	public boolean matchesExactly(CodePosition position, CallArguments arguments, TypeScope scope) {
214
 	public boolean matchesExactly(CodePosition position, CallArguments arguments, TypeScope scope) {
285
 			}
262
 			}
286
 			result.append('>');
263
 			result.append('>');
287
 		}
264
 		}
288
-		if (storage != null && storage != AutoStorageTag.INSTANCE)
289
-			result.append('`').append(storage);
290
 		result.append('(');
265
 		result.append('(');
291
 		for (int i = 0; i < parameters.length; i++) {
266
 		for (int i = 0; i < parameters.length; i++) {
292
 			if (i > 0)
267
 			if (i > 0)
298
 	}
273
 	}
299
 	
274
 	
300
 	public String getCanonical() {
275
 	public String getCanonical() {
301
-		return getCanonicalWithoutReturnType() + returnType.type.toString();
276
+		return getCanonicalWithoutReturnType() + returnType.toString();
302
 	}
277
 	}
303
 	
278
 	
304
 	public boolean hasInferenceBlockingTypeParameters(TypeParameter[] parameters) {
279
 	public boolean hasInferenceBlockingTypeParameters(TypeParameter[] parameters) {
326
 			throw new NullPointerException();
301
 			throw new NullPointerException();
327
 		if (parameters.length != other.parameters.length)
302
 		if (parameters.length != other.parameters.length)
328
 			return false;
303
 			return false;
329
-		if (returnType.type != BasicTypeID.UNDETERMINED && !scope.getTypeMembers(returnType).canCastImplicit(other.returnType))
304
+		if (returnType != BasicTypeID.UNDETERMINED && !scope.getTypeMembers(returnType).canCastImplicit(other.returnType))
330
 			return false;
305
 			return false;
331
 		
306
 		
332
 		for (int i = 0; i < parameters.length; i++) {
307
 		for (int i = 0; i < parameters.length; i++) {
333
-			if (parameters[i].type.type == BasicTypeID.UNDETERMINED)
308
+			if (parameters[i].type == BasicTypeID.UNDETERMINED)
334
 				continue;
309
 				continue;
335
 			
310
 			
336
 			if (parameters[i].variadic != other.parameters[i].variadic)
311
 			if (parameters[i].variadic != other.parameters[i].variadic)
395
 	
370
 	
396
 	public FunctionHeader instanceForCall(CodePosition position, GlobalTypeRegistry registry, CallArguments arguments) {
371
 	public FunctionHeader instanceForCall(CodePosition position, GlobalTypeRegistry registry, CallArguments arguments) {
397
 		if (arguments.getNumberOfTypeArguments() > 0) {
372
 		if (arguments.getNumberOfTypeArguments() > 0) {
398
-			Map<TypeParameter, StoredType> typeParameters = StoredType.getMapping(this.typeParameters, arguments.typeArguments);
373
+			Map<TypeParameter, TypeID> typeParameters = TypeID.getMapping(this.typeParameters, arguments.typeArguments);
399
 			return instance(new GenericMapper(position, registry, typeParameters));
374
 			return instance(new GenericMapper(position, registry, typeParameters));
400
 		} else {
375
 		} else {
401
 			return this;
376
 			return this;
404
 	
379
 	
405
 	public FunctionHeader withGenericArguments(GenericMapper mapper) {
380
 	public FunctionHeader withGenericArguments(GenericMapper mapper) {
406
 		if (typeParameters.length > 0)
381
 		if (typeParameters.length > 0)
407
-			mapper = mapper.getInner(mapper.position, mapper.registry, StoredType.getSelfMapping(mapper.registry, typeParameters));
382
+			mapper = mapper.getInner(mapper.position, mapper.registry, TypeID.getSelfMapping(mapper.registry, typeParameters));
408
 		
383
 		
409
 		return instance(mapper);
384
 		return instance(mapper);
410
 	}
385
 	}
411
 	
386
 	
412
 	private FunctionHeader instance(GenericMapper mapper) {
387
 	private FunctionHeader instance(GenericMapper mapper) {
413
-		StoredType returnType = this.returnType.instance(mapper);
388
+		TypeID returnType = this.returnType.instance(mapper);
414
 		FunctionParameter[] parameters = new FunctionParameter[this.parameters.length];
389
 		FunctionParameter[] parameters = new FunctionParameter[this.parameters.length];
415
 		for (int i = 0; i < parameters.length; i++) {
390
 		for (int i = 0; i < parameters.length; i++) {
416
 			parameters[i] = this.parameters[i].withGenericArguments(mapper);
391
 			parameters[i] = this.parameters[i].withGenericArguments(mapper);
417
 		}
392
 		}
418
-		return new FunctionHeader(typeParameters, returnType, thrownType == null ? null : thrownType.instance(mapper), storage, parameters);
393
+		return new FunctionHeader(typeParameters, returnType, thrownType == null ? null : thrownType.instance(mapper), parameters);
419
 	}
394
 	}
420
 	
395
 	
421
-	public FunctionHeader fillGenericArguments(CodePosition position, TypeScope scope, StoredType[] arguments) {
396
+	public FunctionHeader fillGenericArguments(CodePosition position, TypeScope scope, TypeID[] arguments) {
422
 		if (arguments == null || arguments.length == 0)
397
 		if (arguments == null || arguments.length == 0)
423
 			return this;
398
 			return this;
424
 		
399
 		
425
-		Map<TypeParameter, StoredType> typeArguments = StoredType.getMapping(typeParameters, arguments);
400
+		Map<TypeParameter, TypeID> typeArguments = TypeID.getMapping(typeParameters, arguments);
426
 		GenericMapper mapper = scope.getLocalTypeParameters().getInner(position, scope.getTypeRegistry(), typeArguments);
401
 		GenericMapper mapper = scope.getLocalTypeParameters().getInner(position, scope.getTypeRegistry(), typeArguments);
427
-		
428
-		StoredType returnType = this.returnType.instance(mapper);
402
+
403
+		TypeID returnType = this.returnType.instance(mapper);
429
 		FunctionParameter[] parameters = new FunctionParameter[this.parameters.length];
404
 		FunctionParameter[] parameters = new FunctionParameter[this.parameters.length];
430
 		for (int i = 0; i < parameters.length; i++) {
405
 		for (int i = 0; i < parameters.length; i++) {
431
 			parameters[i] = this.parameters[i].withGenericArguments(mapper);
406
 			parameters[i] = this.parameters[i].withGenericArguments(mapper);
432
 		}
407
 		}
433
-		return new FunctionHeader(TypeParameter.NONE, returnType, thrownType == null ? null : thrownType.instance(mapper), storage, parameters);
408
+		return new FunctionHeader(TypeParameter.NONE, returnType, thrownType == null ? null : thrownType.instance(mapper), parameters);
434
 	}
409
 	}
435
 	
410
 	
436
 	public FunctionHeader forTypeParameterInference() {
411
 	public FunctionHeader forTypeParameterInference() {
437
-		return new FunctionHeader(BasicTypeID.UNDETERMINED.stored, parameters);
412
+		return new FunctionHeader(BasicTypeID.UNDETERMINED, parameters);
438
 	}
413
 	}
439
 	
414
 	
440
 	public FunctionHeader forLambda(FunctionHeader lambdaHeader) {
415
 	public FunctionHeader forLambda(FunctionHeader lambdaHeader) {
442
 		for (int i = 0; i < lambdaHeader.parameters.length; i++)
417
 		for (int i = 0; i < lambdaHeader.parameters.length; i++)
443
 			parameters[i] = new FunctionParameter(this.parameters[i].type, lambdaHeader.parameters[i].name);
418
 			parameters[i] = new FunctionParameter(this.parameters[i].type, lambdaHeader.parameters[i].name);
444
 		
419
 		
445
-		return new FunctionHeader(typeParameters, returnType, thrownType, storage, parameters);
420
+		return new FunctionHeader(typeParameters, returnType, thrownType, parameters);
446
 	}
421
 	}
447
 	
422
 	
448
 	public FunctionParameter getVariadicParameter() {
423
 	public FunctionParameter getVariadicParameter() {
508
 		return parameters[parameters.length - 1].variadic ? Integer.MAX_VALUE : parameters.length;
483
 		return parameters[parameters.length - 1].variadic ? Integer.MAX_VALUE : parameters.length;
509
 	}
484
 	}
510
 	
485
 	
511
-	private static boolean hasUnknowns(StoredType[] types, StoredType returnType) {
512
-		if (returnType.type == BasicTypeID.UNDETERMINED)
486
+	private static boolean hasUnknowns(TypeID[] types, TypeID returnType) {
487
+		if (returnType == BasicTypeID.UNDETERMINED)
513
 			return true;
488
 			return true;
514
 		
489
 		
515
-		for (StoredType type : types)
516
-			if (type.type == BasicTypeID.UNDETERMINED)
490
+		for (TypeID type : types)
491
+			if (type == BasicTypeID.UNDETERMINED)
517
 				return true;
492
 				return true;
518
 		
493
 		
519
 		return false;
494
 		return false;
520
 	}
495
 	}
521
 	
496
 	
522
-	private static boolean hasUnknowns(FunctionParameter[] parameters, StoredType returnType) {
523
-		if (returnType.type == BasicTypeID.UNDETERMINED)
497
+	private static boolean hasUnknowns(FunctionParameter[] parameters, TypeID returnType) {
498
+		if (returnType == BasicTypeID.UNDETERMINED)
524
 			return true;
499
 			return true;
525
 		
500
 		
526
 		for (FunctionParameter parameter : parameters)
501
 		for (FunctionParameter parameter : parameters)
527
-			if (parameter.type.type == BasicTypeID.UNDETERMINED)
502
+			if (parameter.type == BasicTypeID.UNDETERMINED)
528
 				return true;
503
 				return true;
529
 		
504
 		
530
 		return false;
505
 		return false;
555
             return false;
530
             return false;
556
         if(!Arrays.equals(parameters, that.parameters))
531
         if(!Arrays.equals(parameters, that.parameters))
557
             return false;
532
             return false;
558
-        if(!Objects.equals(thrownType, that.thrownType))
559
-            return false;
560
-        return Objects.equals(storage, that.storage);
561
-    }
533
+		return thrownType == that.thrownType;
534
+	}
562
     
535
     
563
     @Override
536
     @Override
564
     public int hashCode() {
537
     public int hashCode() {
566
         result = 31 * result + returnType.hashCode();
539
         result = 31 * result + returnType.hashCode();
567
         result = 31 * result + Arrays.hashCode(parameters);
540
         result = 31 * result + Arrays.hashCode(parameters);
568
         result = 31 * result + (thrownType != null ? thrownType.hashCode() : 0);
541
         result = 31 * result + (thrownType != null ? thrownType.hashCode() : 0);
569
-        result = 31 * result + (storage != null ? storage.hashCode() : 0);
570
         result = 31 * result + minParameters;
542
         result = 31 * result + minParameters;
571
         result = 31 * result + maxParameters;
543
         result = 31 * result + maxParameters;
572
         result = 31 * result + (hasUnknowns ? 1 : 0);
544
         result = 31 * result + (hasUnknowns ? 1 : 0);

+ 6
- 11
CodeModel/src/main/java/org/openzen/zenscript/codemodel/FunctionParameter.java View File

8
 import java.util.Objects;
8
 import java.util.Objects;
9
 import org.openzen.zencode.shared.Taggable;
9
 import org.openzen.zencode.shared.Taggable;
10
 import org.openzen.zenscript.codemodel.expression.Expression;
10
 import org.openzen.zenscript.codemodel.expression.Expression;
11
-import org.openzen.zenscript.codemodel.type.BasicTypeID;
12
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
11
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
13
-import org.openzen.zenscript.codemodel.type.StoredType;
14
 import org.openzen.zenscript.codemodel.annotations.ParameterAnnotation;
12
 import org.openzen.zenscript.codemodel.annotations.ParameterAnnotation;
13
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
14
 
16
 /**
15
 /**
17
  *
16
  *
21
 	public static final FunctionParameter[] NONE = new FunctionParameter[0];
20
 	public static final FunctionParameter[] NONE = new FunctionParameter[0];
22
 	
21
 	
23
 	public ParameterAnnotation[] annotations;
22
 	public ParameterAnnotation[] annotations;
24
-	public final StoredType type;
23
+	public final TypeID type;
25
 	public final String name;
24
 	public final String name;
26
 	public Expression defaultValue;
25
 	public Expression defaultValue;
27
 	public final boolean variadic;
26
 	public final boolean variadic;
28
 	
27
 	
29
-	public FunctionParameter(StoredType type) {
28
+	public FunctionParameter(TypeID type) {
30
 		this.annotations = ParameterAnnotation.NONE;
29
 		this.annotations = ParameterAnnotation.NONE;
31
 		this.type = type;
30
 		this.type = type;
32
 		this.name = "";
31
 		this.name = "";
34
 		this.variadic = false;
33
 		this.variadic = false;
35
 	}
34
 	}
36
 	
35
 	
37
-	public FunctionParameter(BasicTypeID type) {
38
-		this(type.stored);
39
-	}
40
-	
41
-	public FunctionParameter(StoredType type, String name) {
36
+	public FunctionParameter(TypeID type, String name) {
42
 		this.annotations = ParameterAnnotation.NONE;
37
 		this.annotations = ParameterAnnotation.NONE;
43
 		this.type = type;
38
 		this.type = type;
44
 		this.name = name;
39
 		this.name = name;
46
 		this.variadic = false;
41
 		this.variadic = false;
47
 	}
42
 	}
48
 	
43
 	
49
-	public FunctionParameter(StoredType type, String name, Expression defaultValue, boolean variadic) {
44
+	public FunctionParameter(TypeID type, String name, Expression defaultValue, boolean variadic) {
50
 		this.annotations = ParameterAnnotation.NONE;
45
 		this.annotations = ParameterAnnotation.NONE;
51
 		this.type = type;
46
 		this.type = type;
52
 		this.name = name;
47
 		this.name = name;
61
 	}
56
 	}
62
 	
57
 	
63
 	public FunctionParameter withGenericArguments(GenericMapper mapper) {
58
 	public FunctionParameter withGenericArguments(GenericMapper mapper) {
64
-		StoredType instanced = type.instance(mapper);
59
+		TypeID instanced = type.instance(mapper);
65
 		if (instanced.equals(type))
60
 		if (instanced.equals(type))
66
 			return this;
61
 			return this;
67
 		
62
 		

+ 14
- 14
CodeModel/src/main/java/org/openzen/zenscript/codemodel/GenericMapper.java View File

21
     
21
     
22
     public final CodePosition position;
22
     public final CodePosition position;
23
     public final GlobalTypeRegistry registry;
23
     public final GlobalTypeRegistry registry;
24
-    private final Map<TypeParameter, StoredType> mapping;
24
+    private final Map<TypeParameter, TypeID> mapping;
25
     
25
     
26
-    public GenericMapper(CodePosition position, GlobalTypeRegistry registry, Map<TypeParameter, StoredType> mapping) {
26
+    public GenericMapper(CodePosition position, GlobalTypeRegistry registry, Map<TypeParameter, TypeID> mapping) {
27
         if(mapping == null)
27
         if(mapping == null)
28
             throw new IllegalArgumentException();
28
             throw new IllegalArgumentException();
29
         
29
         
32
         this.mapping = mapping;
32
         this.mapping = mapping;
33
     }
33
     }
34
     
34
     
35
-    public Map<TypeParameter, StoredType> getMapping() {
35
+    public Map<TypeParameter, TypeID> getMapping() {
36
         return mapping;
36
         return mapping;
37
     }
37
     }
38
     
38
     
39
-    public StoredType map(StoredType original) {
39
+    public TypeID map(TypeID original) {
40
         return mapping.isEmpty() ? original : original.instance(this);
40
         return mapping.isEmpty() ? original : original.instance(this);
41
     }
41
     }
42
     
42
     
43
-    public StoredType[] map(StoredType[] original) {
43
+    public TypeID[] map(TypeID[] original) {
44
         if(mapping.isEmpty() || original.length == 0)
44
         if(mapping.isEmpty() || original.length == 0)
45
             return original;
45
             return original;
46
         
46
         
47
-        StoredType[] mapped = new StoredType[original.length];
47
+        TypeID[] mapped = new TypeID[original.length];
48
         for(int i = 0; i < original.length; i++)
48
         for(int i = 0; i < original.length; i++)
49
             mapped[i] = original[i].instance(this);
49
             mapped[i] = original[i].instance(this);
50
         return mapped;
50
         return mapped;
51
     }
51
     }
52
     
52
     
53
-    public StoredType map(GenericTypeID type) {
53
+    public TypeID mapGeneric(GenericTypeID type) {
54
         //if (!mapping.containsKey(type.parameter))
54
         //if (!mapping.containsKey(type.parameter))
55
         //	throw new IllegalStateException("No mapping found for type " + type);
55
         //	throw new IllegalStateException("No mapping found for type " + type);
56
         
56
         
57
-        return mapping.containsKey(type.parameter) ? mapping.get(type.parameter) : type.stored();
57
+        return mapping.getOrDefault(type.parameter, type);
58
     }
58
     }
59
     
59
     
60
     public FunctionHeader map(FunctionHeader original) {
60
     public FunctionHeader map(FunctionHeader original) {
61
         return mapping.isEmpty() ? original : original.withGenericArguments(this);
61
         return mapping.isEmpty() ? original : original.withGenericArguments(this);
62
     }
62
     }
63
     
63
     
64
-    public GenericMapper getInner(CodePosition position, GlobalTypeRegistry registry, Map<TypeParameter, StoredType> mapping) {
65
-        Map<TypeParameter, StoredType> resultMap = new HashMap<>(this.mapping);
64
+    public GenericMapper getInner(CodePosition position, GlobalTypeRegistry registry, Map<TypeParameter, TypeID> mapping) {
65
+        Map<TypeParameter, TypeID> resultMap = new HashMap<>(this.mapping);
66
         mapping.forEach((typeParameter, storedType) -> {
66
         mapping.forEach((typeParameter, storedType) -> {
67
             if(resultMap.containsKey(typeParameter)) {
67
             if(resultMap.containsKey(typeParameter)) {
68
-                if(storedType.type instanceof GenericTypeID && ((GenericTypeID) storedType.type).parameter == typeParameter) {
68
+                if(storedType instanceof GenericTypeID && ((GenericTypeID) storedType).parameter == typeParameter) {
69
                     return;
69
                     return;
70
                 }
70
                 }
71
             }
71
             }
76
     }
76
     }
77
     
77
     
78
     public GenericMapper getInner(CodePosition position, GlobalTypeRegistry registry, TypeParameter[] parameters) {
78
     public GenericMapper getInner(CodePosition position, GlobalTypeRegistry registry, TypeParameter[] parameters) {
79
-        Map<TypeParameter, StoredType> resultMap = new HashMap<>(this.mapping);
79
+        Map<TypeParameter, TypeID> resultMap = new HashMap<>(this.mapping);
80
         for(TypeParameter parameter : parameters)
80
         for(TypeParameter parameter : parameters)
81
-            resultMap.put(parameter, new StoredType(registry.getGeneric(parameter), null));
81
+            resultMap.put(parameter, registry.getGeneric(parameter));
82
         return new GenericMapper(position, registry, resultMap);
82
         return new GenericMapper(position, registry, resultMap);
83
     }
83
     }
84
     
84
     
90
         StringBuilder result = new StringBuilder();
90
         StringBuilder result = new StringBuilder();
91
         result.append('{');
91
         result.append('{');
92
         boolean first = true;
92
         boolean first = true;
93
-        for(Map.Entry<TypeParameter, StoredType> entry : mapping.entrySet()) {
93
+        for(Map.Entry<TypeParameter, TypeID> entry : mapping.entrySet()) {
94
             if(first) {
94
             if(first) {
95
                 first = false;
95
                 first = false;
96
             } else {
96
             } else {

+ 3
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/GenericName.java View File

8
 import java.util.List;
8
 import java.util.List;
9
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
9
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
10
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
10
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
12
 import org.openzen.zenscript.codemodel.type.TypeID;
11
 import org.openzen.zenscript.codemodel.type.TypeID;
13
 
12
 
14
 /**
13
 /**
17
  */
16
  */
18
 public class GenericName {
17
 public class GenericName {
19
 	public final String name;
18
 	public final String name;
20
-	public final StoredType[] arguments;
19
+	public final TypeID[] arguments;
21
 	
20
 	
22
 	public GenericName(String name) {
21
 	public GenericName(String name) {
23
-		this(name, StoredType.NONE);
22
+		this(name, TypeID.NONE);
24
 	}
23
 	}
25
 	
24
 	
26
-	public GenericName(String name, StoredType[] arguments) {
25
+	public GenericName(String name, TypeID[] arguments) {
27
 		if (arguments == null)
26
 		if (arguments == null)
28
 			throw new NullPointerException("Arguments cannot be null");
27
 			throw new NullPointerException("Arguments cannot be null");
29
 		
28
 		

+ 1
- 42
CodeModel/src/main/java/org/openzen/zenscript/codemodel/HighLevelDefinition.java View File

46
 	
46
 	
47
 	public HighLevelDefinition outerDefinition;
47
 	public HighLevelDefinition outerDefinition;
48
 	private TypeID superType;
48
 	private TypeID superType;
49
-	
50
-	private boolean isDestructible = false;
51
-	
49
+
52
 	public HighLevelDefinition(CodePosition position, Module module, ZSPackage pkg, String name, int modifiers, HighLevelDefinition outerDefinition) {
50
 	public HighLevelDefinition(CodePosition position, Module module, ZSPackage pkg, String name, int modifiers, HighLevelDefinition outerDefinition) {
53
 		if (module == null)
51
 		if (module == null)
54
 			throw new NullPointerException();
52
 			throw new NullPointerException();
74
 	
72
 	
75
 	public void setSuperType(TypeID superType) {
73
 	public void setSuperType(TypeID superType) {
76
 		this.superType = superType;
74
 		this.superType = superType;
77
-		if (outerDefinition != null)
78
-			isDestructible |= outerDefinition.isDestructible;
79
 	}
75
 	}
80
 	
76
 	
81
 	public boolean isSubclassOf(HighLevelDefinition other) {
77
 	public boolean isSubclassOf(HighLevelDefinition other) {
122
 			collector.member(member);
118
 			collector.member(member);
123
 	}
119
 	}
124
 	
120
 	
125
-	public boolean isDestructible() {
126
-		Set<HighLevelDefinition> scanning = new HashSet<>();
127
-		return isDestructible(scanning);
128
-	}
129
-	
130
-	public boolean isDestructible(Set<HighLevelDefinition> scanning) {
131
-		if (scanning.contains(this))
132
-			return false;
133
-		
134
-		scanning.add(this);
135
-		
136
-		boolean isDestructible = false;
137
-		for (IDefinitionMember member : members) {
138
-			if (member instanceof DestructorMember)
139
-				isDestructible = true;
140
-			if (member instanceof FieldMember) {
141
-				FieldMember field = (FieldMember)member;
142
-				if (field.getType().isDestructible(scanning))
143
-					isDestructible = true;
144
-			}
145
-			if ((member instanceof ImplementationMember) && ((ImplementationMember)member).type.isDestructible())
146
-				isDestructible = true;
147
-		}
148
-		
149
-		scanning.remove(this);
150
-		return isDestructible;
151
-	}
152
-	
153
 	public void setTypeParameters(TypeParameter[] typeParameters) {
121
 	public void setTypeParameters(TypeParameter[] typeParameters) {
154
 		this.typeParameters = typeParameters;
122
 		this.typeParameters = typeParameters;
155
 	}
123
 	}
183
 	}
151
 	}
184
 	
152
 	
185
 	public void normalize(TypeScope scope) {
153
 	public void normalize(TypeScope scope) {
186
-		DestructorMember destructor = null;
187
 		List<FieldMember> fields = new ArrayList<>();
154
 		List<FieldMember> fields = new ArrayList<>();
188
 		
155
 		
189
 		for (IDefinitionMember member : members) {
156
 		for (IDefinitionMember member : members) {
190
 			member.normalize(scope);
157
 			member.normalize(scope);
191
 			
158
 			
192
-			if (member instanceof DestructorMember)
193
-				destructor = (DestructorMember)member;
194
 			if (member instanceof FieldMember)
159
 			if (member instanceof FieldMember)
195
 				fields.add((FieldMember)member);
160
 				fields.add((FieldMember)member);
196
 		}
161
 		}
197
 		
162
 		
198
-		if (isDestructible() && destructor == null && !(this instanceof ExpansionDefinition)) {
199
-			//System.out.println("Added destructor to " + position);
200
-			destructor = new DestructorMember(position, this, Modifiers.PUBLIC);
201
-			members.add(destructor);
202
-		}
203
-		
204
 		for (FieldMember field : fields) {
163
 		for (FieldMember field : fields) {
205
 			if (field.autoGetter != null)
164
 			if (field.autoGetter != null)
206
 				members.add(field.autoGetter);
165
 				members.add(field.autoGetter);

+ 1
- 8
CodeModel/src/main/java/org/openzen/zenscript/codemodel/ModuleSpace.java View File

19
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
19
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
20
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
20
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
21
 import org.openzen.zenscript.codemodel.type.ISymbol;
21
 import org.openzen.zenscript.codemodel.type.ISymbol;
22
-import org.openzen.zenscript.codemodel.type.storage.StorageType;
23
 
22
 
24
 /**
23
 /**
25
  *
24
  *
32
 	private final List<ExpansionDefinition> expansions = new ArrayList<>();
31
 	private final List<ExpansionDefinition> expansions = new ArrayList<>();
33
 	private final Map<String, ISymbol> globals = new HashMap<>();
32
 	private final Map<String, ISymbol> globals = new HashMap<>();
34
 	private final AnnotationDefinition[] annotations;
33
 	private final AnnotationDefinition[] annotations;
35
-	private final StorageType[] storageTypes;
36
 	private final Map<String, SemanticModule> modules = new HashMap<>();
34
 	private final Map<String, SemanticModule> modules = new HashMap<>();
37
 	
35
 	
38
-	public ModuleSpace(GlobalTypeRegistry registry, List<AnnotationDefinition> annotations, StorageType[] storageTypes) {
36
+	public ModuleSpace(GlobalTypeRegistry registry, List<AnnotationDefinition> annotations) {
39
 		this.registry = registry;
37
 		this.registry = registry;
40
 		
38
 		
41
 		annotations.add(NativeAnnotationDefinition.INSTANCE);
39
 		annotations.add(NativeAnnotationDefinition.INSTANCE);
42
 		annotations.add(PreconditionAnnotationDefinition.INSTANCE);
40
 		annotations.add(PreconditionAnnotationDefinition.INSTANCE);
43
 		this.annotations = annotations.toArray(new AnnotationDefinition[annotations.size()]);
41
 		this.annotations = annotations.toArray(new AnnotationDefinition[annotations.size()]);
44
-		this.storageTypes = storageTypes;
45
 	}
42
 	}
46
 	
43
 	
47
 	public void addModule(String name, SemanticModule dependency) throws CompileException {
44
 	public void addModule(String name, SemanticModule dependency) throws CompileException {
80
 	public AnnotationDefinition[] getAnnotations() {
77
 	public AnnotationDefinition[] getAnnotations() {
81
 		return annotations;
78
 		return annotations;
82
 	}
79
 	}
83
-	
84
-	public StorageType[] getStorageTypes() {
85
-		return storageTypes;
86
-	}
87
 }
80
 }

+ 1
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/SemanticModule.java View File

20
 import org.openzen.zenscript.codemodel.scope.FileScope;
20
 import org.openzen.zenscript.codemodel.scope.FileScope;
21
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
21
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
22
 import org.openzen.zenscript.codemodel.type.ISymbol;
22
 import org.openzen.zenscript.codemodel.type.ISymbol;
23
-import org.openzen.zenscript.codemodel.type.storage.StorageType;
24
 
23
 
25
 /**
24
 /**
26
  *
25
  *
44
 	public final GlobalTypeRegistry registry;
43
 	public final GlobalTypeRegistry registry;
45
 	public final List<ExpansionDefinition> expansions;
44
 	public final List<ExpansionDefinition> expansions;
46
 	public final AnnotationDefinition[] annotations;
45
 	public final AnnotationDefinition[] annotations;
47
-	public final StorageType[] storageTypes;
48
 	public final IZSLogger logger;
46
 	public final IZSLogger logger;
49
 	
47
 	
50
 	public SemanticModule(
48
 	public SemanticModule(
59
             GlobalTypeRegistry registry,
57
             GlobalTypeRegistry registry,
60
             List<ExpansionDefinition> expansions,
58
             List<ExpansionDefinition> expansions,
61
             AnnotationDefinition[] annotations,
59
             AnnotationDefinition[] annotations,
62
-            StorageType[] storageTypes,
63
             IZSLogger logger)
60
             IZSLogger logger)
64
 	{
61
 	{
65
 		this.name = module.name;
62
 		this.name = module.name;
76
 		this.registry = registry;
73
 		this.registry = registry;
77
 		this.expansions = expansions;
74
 		this.expansions = expansions;
78
 		this.annotations = annotations;
75
 		this.annotations = annotations;
79
-		this.storageTypes = storageTypes;
80
         this.logger = logger;
76
         this.logger = logger;
81
     }
77
     }
82
 	
78
 	
88
 		if (state != State.ASSEMBLED)
84
 		if (state != State.ASSEMBLED)
89
 			throw new IllegalStateException("Module is invalid");
85
 			throw new IllegalStateException("Module is invalid");
90
 		
86
 		
91
-		ModuleTypeResolutionContext context = new ModuleTypeResolutionContext(registry, annotations, storageTypes, rootPackage, null, globals);
87
+		ModuleTypeResolutionContext context = new ModuleTypeResolutionContext(registry, annotations, rootPackage, null, globals);
92
 		AnnotationProcessor annotationProcessor = new AnnotationProcessor(context, expansions);
88
 		AnnotationProcessor annotationProcessor = new AnnotationProcessor(context, expansions);
93
 		List<ScriptBlock> processedScripts = new ArrayList<>();
89
 		List<ScriptBlock> processedScripts = new ArrayList<>();
94
 		FileScope fileScope = new FileScope(context, expansions, globals, member -> {});
90
 		FileScope fileScope = new FileScope(context, expansions, globals, member -> {});
113
 				registry,
109
 				registry,
114
 				expansions,
110
 				expansions,
115
 				annotations,
111
 				annotations,
116
-				storageTypes,
117
                 logger);
112
                 logger);
118
 	}
113
 	}
119
 	
114
 	

+ 1
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/NativeAnnotationDefinition.java View File

20
 import org.openzen.zenscript.codemodel.serialization.CodeSerializationInput;
20
 import org.openzen.zenscript.codemodel.serialization.CodeSerializationInput;
21
 import org.openzen.zenscript.codemodel.statement.Statement;
21
 import org.openzen.zenscript.codemodel.statement.Statement;
22
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
22
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
23
-import org.openzen.zenscript.codemodel.type.StringTypeID;
24
 
23
 
25
 import java.util.Collections;
24
 import java.util.Collections;
26
 import java.util.List;
25
 import java.util.List;
33
 	public static final NativeAnnotationDefinition INSTANCE = new NativeAnnotationDefinition();
32
 	public static final NativeAnnotationDefinition INSTANCE = new NativeAnnotationDefinition();
34
 	
33
 	
35
 	private final List<FunctionHeader> INITIALIZERS = Collections.singletonList(
34
 	private final List<FunctionHeader> INITIALIZERS = Collections.singletonList(
36
-			new FunctionHeader(BasicTypeID.VOID, StringTypeID.UNIQUE));
35
+			new FunctionHeader(BasicTypeID.VOID, BasicTypeID.STRING));
37
 	
36
 	
38
 	private NativeAnnotationDefinition() {}
37
 	private NativeAnnotationDefinition() {}
39
 
38
 

+ 4
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/PreconditionAnnotationDefinition.java View File

27
 import org.openzen.zenscript.codemodel.statement.Statement;
27
 import org.openzen.zenscript.codemodel.statement.Statement;
28
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
28
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
29
 import org.openzen.zenscript.codemodel.GenericName;
29
 import org.openzen.zenscript.codemodel.GenericName;
30
-import org.openzen.zenscript.codemodel.type.StringTypeID;
31
-import org.openzen.zenscript.codemodel.type.storage.ValueStorageTag;
32
 
30
 
33
 /**
31
 /**
34
  *
32
  *
51
 	@Override
49
 	@Override
52
 	public List<FunctionHeader> getInitializers(BaseScope scope) {
50
 	public List<FunctionHeader> getInitializers(BaseScope scope) {
53
 		return Collections.singletonList(new FunctionHeader(
51
 		return Collections.singletonList(new FunctionHeader(
54
-				BasicTypeID.VOID.stored,
55
-				scope.getType(CodePosition.BUILTIN, enforcementLevelName).stored(),
56
-				BasicTypeID.BOOL.stored,
57
-				StringTypeID.UNIQUE));
52
+				BasicTypeID.VOID,
53
+				scope.getType(CodePosition.BUILTIN, enforcementLevelName),
54
+				BasicTypeID.BOOL,
55
+				BasicTypeID.STRING));
58
 	}
56
 	}
59
 
57
 
60
 	@Override
58
 	@Override

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/annotations/PreconditionForMethod.java View File

90
 			Expression inverseCondition = members.getGroup(OperatorType.NOT)
90
 			Expression inverseCondition = members.getGroup(OperatorType.NOT)
91
 					.call(position, scope, condition, CallArguments.EMPTY, false);
91
 					.call(position, scope, condition, CallArguments.EMPTY, false);
92
 
92
 
93
-			Statement throwStatement = new ExpressionStatement(position, new PanicExpression(position, BasicTypeID.VOID.stored, message));
93
+			Statement throwStatement = new ExpressionStatement(position, new PanicExpression(position, BasicTypeID.VOID, message));
94
 			List<Statement> statements = new ArrayList<>();
94
 			List<Statement> statements = new ArrayList<>();
95
 			statements.add(new IfStatement(position, inverseCondition, throwStatement, null));
95
 			statements.add(new IfStatement(position, inverseCondition, throwStatement, null));
96
 
96
 

+ 1
- 8
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/FileResolutionContext.java View File

16
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
16
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
17
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
17
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
18
 import org.openzen.zenscript.codemodel.type.InvalidTypeID;
18
 import org.openzen.zenscript.codemodel.type.InvalidTypeID;
19
-import org.openzen.zenscript.codemodel.type.StoredType;
20
 import org.openzen.zenscript.codemodel.type.TypeID;
19
 import org.openzen.zenscript.codemodel.type.TypeID;
21
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
22
 
20
 
23
 /**
21
 /**
24
  *
22
  *
80
 		
78
 		
81
 		return module.getType(position, name);
79
 		return module.getType(position, name);
82
 	}
80
 	}
83
-	
84
-	@Override
85
-	public StorageTag getStorageTag(CodePosition position, String name, String[] arguments) {
86
-		return module.getStorageTag(position, name, arguments);
87
-	}
88
 
81
 
89
 	@Override
82
 	@Override
90
-	public StoredType getThisType() {
83
+	public TypeID getThisType() {
91
 		return null;
84
 		return null;
92
 	}
85
 	}
93
 }
86
 }

+ 2
- 11
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/LocalTypeResolutionContext.java View File

13
 import org.openzen.zenscript.codemodel.GenericName;
13
 import org.openzen.zenscript.codemodel.GenericName;
14
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
14
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
16
-import org.openzen.zenscript.codemodel.type.StoredType;
17
 import org.openzen.zenscript.codemodel.type.TypeID;
16
 import org.openzen.zenscript.codemodel.type.TypeID;
18
-import org.openzen.zenscript.codemodel.type.storage.BorrowStorageTag;
19
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
20
 
17
 
21
 /**
18
 /**
22
  *
19
  *
66
 		
63
 		
67
 		return outer.getType(position, name);
64
 		return outer.getType(position, name);
68
 	}
65
 	}
69
-
70
-	@Override
71
-	public StorageTag getStorageTag(CodePosition position, String name, String[] parameters) {
72
-		return outer.getStorageTag(position, name, parameters);
73
-	}
74
 	
66
 	
75
 	@Override
67
 	@Override
76
-	public StoredType getThisType() {
68
+	public TypeID getThisType() {
77
 		if (type == null)
69
 		if (type == null)
78
 			return null;
70
 			return null;
79
 		
71
 		
80
-		TypeID self = getTypeRegistry().getForMyDefinition(type.load());
81
-		return self.stored(BorrowStorageTag.THIS);
72
+		return getTypeRegistry().getForMyDefinition(type.load());
82
 	}
73
 	}
83
 }
74
 }

+ 1
- 18
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/ModuleTypeResolutionContext.java View File

9
 import java.util.List;
9
 import java.util.List;
10
 import java.util.Map;
10
 import java.util.Map;
11
 import org.openzen.zencode.shared.CodePosition;
11
 import org.openzen.zencode.shared.CodePosition;
12
-import org.openzen.zencode.shared.CompileExceptionCode;
13
 import org.openzen.zenscript.codemodel.annotations.AnnotationDefinition;
12
 import org.openzen.zenscript.codemodel.annotations.AnnotationDefinition;
14
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
13
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
15
 import org.openzen.zenscript.codemodel.GenericName;
14
 import org.openzen.zenscript.codemodel.GenericName;
16
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
17
 import org.openzen.zenscript.codemodel.type.ISymbol;
16
 import org.openzen.zenscript.codemodel.type.ISymbol;
18
-import org.openzen.zenscript.codemodel.type.StoredType;
19
 import org.openzen.zenscript.codemodel.type.TypeID;
17
 import org.openzen.zenscript.codemodel.type.TypeID;
20
-import org.openzen.zenscript.codemodel.type.storage.InvalidStorageTag;
21
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
22
-import org.openzen.zenscript.codemodel.type.storage.StorageType;
23
 
18
 
24
 /**
19
 /**
25
  *
20
  *
28
 public class ModuleTypeResolutionContext implements TypeResolutionContext {
23
 public class ModuleTypeResolutionContext implements TypeResolutionContext {
29
 	private final GlobalTypeRegistry registry;
24
 	private final GlobalTypeRegistry registry;
30
 	private final Map<String, AnnotationDefinition> annotations = new HashMap<>();
25
 	private final Map<String, AnnotationDefinition> annotations = new HashMap<>();
31
-	private final Map<String, StorageType> storageTypes = new HashMap<>();
32
 	private final Map<String, ISymbol> globals;
26
 	private final Map<String, ISymbol> globals;
33
 	private final ZSPackage rootPackage;
27
 	private final ZSPackage rootPackage;
34
 	
28
 	
37
 	public ModuleTypeResolutionContext(
31
 	public ModuleTypeResolutionContext(
38
 			GlobalTypeRegistry registry,
32
 			GlobalTypeRegistry registry,
39
 			AnnotationDefinition[] annotations,
33
 			AnnotationDefinition[] annotations,
40
-			StorageType[] storageTypes,
41
 			ZSPackage rootPackage,
34
 			ZSPackage rootPackage,
42
 			CompilingPackage rootCompiling,
35
 			CompilingPackage rootCompiling,
43
 			Map<String, ISymbol> globals)
36
 			Map<String, ISymbol> globals)
49
 		
42
 		
50
 		for (AnnotationDefinition annotation : annotations)
43
 		for (AnnotationDefinition annotation : annotations)
51
 			this.annotations.put(annotation.getAnnotationName(), annotation);
44
 			this.annotations.put(annotation.getAnnotationName(), annotation);
52
-		for (StorageType storageType : storageTypes)
53
-			this.storageTypes.put(storageType.getName(), storageType);
54
 	}
45
 	}
55
 	
46
 	
56
 	@Override
47
 	@Override
83
 	}
74
 	}
84
 	
75
 	
85
 	@Override
76
 	@Override
86
-	public StorageTag getStorageTag(CodePosition position, String name, String[] arguments) {
87
-		if (!storageTypes.containsKey(name))
88
-			return new InvalidStorageTag(position, CompileExceptionCode.NO_SUCH_STORAGE_TYPE, "No such storage type: " + name);
89
-		
90
-		return storageTypes.get(name).instance(position, arguments);
91
-	}
92
-	
93
-	@Override
94
-	public StoredType getThisType() {
77
+	public TypeID getThisType() {
95
 		return null;
78
 		return null;
96
 	}
79
 	}
97
 }
80
 }

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/StatementContext.java View File

16
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
16
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
17
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
17
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
18
 import org.openzen.zenscript.codemodel.statement.VarStatement;
18
 import org.openzen.zenscript.codemodel.statement.VarStatement;
19
-import org.openzen.zenscript.codemodel.type.StoredType;
19
+import org.openzen.zenscript.codemodel.type.TypeID;
20
 
20
 
21
 /**
21
 /**
22
  *
22
  *
31
 	
31
 	
32
 	public VariantOptionSwitchValue variantOptionSwitchValue;
32
 	public VariantOptionSwitchValue variantOptionSwitchValue;
33
 	
33
 	
34
-	public StatementContext(CodePosition position, ModuleContext module, StoredType thisType) {
34
+	public StatementContext(CodePosition position, ModuleContext module, TypeID thisType) {
35
 		super(position, module, TypeParameter.NONE, thisType);
35
 		super(position, module, TypeParameter.NONE, thisType);
36
 		
36
 		
37
 		loops = LoopStatement.NONE;
37
 		loops = LoopStatement.NONE;
40
 		lambdaOuter = null;
40
 		lambdaOuter = null;
41
 	}
41
 	}
42
 	
42
 	
43
-	public StatementContext(CodePosition position, ModuleContext module, StoredType thisType, FunctionHeader header) {
43
+	public StatementContext(CodePosition position, ModuleContext module, TypeID thisType, FunctionHeader header) {
44
 		super(position, module, header.typeParameters, thisType);
44
 		super(position, module, header.typeParameters, thisType);
45
 		
45
 		
46
 		loops = LoopStatement.NONE;
46
 		loops = LoopStatement.NONE;

+ 8
- 8
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/TypeContext.java View File

11
 import org.openzen.zencode.shared.CodePosition;
11
 import org.openzen.zencode.shared.CodePosition;
12
 import org.openzen.zenscript.codemodel.GenericMapper;
12
 import org.openzen.zenscript.codemodel.GenericMapper;
13
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
13
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
15
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
16
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
16
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
17
 
17
 
22
 public class TypeContext {
22
 public class TypeContext {
23
 	protected final CodePosition position;
23
 	protected final CodePosition position;
24
 	protected final TypeParameter[] typeParameters;
24
 	protected final TypeParameter[] typeParameters;
25
-	public final StoredType thisType;
25
+	public final TypeID thisType;
26
 	private final LocalMemberCache memberCache;
26
 	private final LocalMemberCache memberCache;
27
 	public final ModuleContext moduleContext;
27
 	public final ModuleContext moduleContext;
28
 	
28
 	
29
-	public TypeContext(CodePosition position, ModuleContext context, TypeParameter[] parameters, StoredType thisType) {
29
+	public TypeContext(CodePosition position, ModuleContext context, TypeParameter[] parameters, TypeID thisType) {
30
 		this.position = position;
30
 		this.position = position;
31
 		this.typeParameters = parameters;
31
 		this.typeParameters = parameters;
32
 		this.thisType = thisType;
32
 		this.thisType = thisType;
34
 		moduleContext = context;
34
 		moduleContext = context;
35
 	}
35
 	}
36
 	
36
 	
37
-	public TypeContext(CodePosition position, TypeContext outer, StoredType thisType, TypeParameter... inner) {
37
+	public TypeContext(CodePosition position, TypeContext outer, TypeID thisType, TypeParameter... inner) {
38
 		this.position = position;
38
 		this.position = position;
39
 		typeParameters = concat(outer.typeParameters, inner);
39
 		typeParameters = concat(outer.typeParameters, inner);
40
 		this.thisType = thisType;
40
 		this.thisType = thisType;
42
 		memberCache = new LocalMemberCache(moduleContext.registry, moduleContext.expansions);
42
 		memberCache = new LocalMemberCache(moduleContext.registry, moduleContext.expansions);
43
 	}
43
 	}
44
 	
44
 	
45
-	public TypeContext(CodePosition position, TypeContext outer, StoredType thisType, List<TypeParameter> inner) {
46
-		this(position, outer, thisType, inner.toArray(new TypeParameter[inner.size()]));
45
+	public TypeContext(CodePosition position, TypeContext outer, TypeID thisType, List<TypeParameter> inner) {
46
+		this(position, outer, thisType, inner.toArray(TypeParameter.NONE));
47
 	}
47
 	}
48
 	
48
 	
49
 	public int getId(TypeParameter parameter) {
49
 	public int getId(TypeParameter parameter) {
58
 		return typeParameters[index];
58
 		return typeParameters[index];
59
 	}
59
 	}
60
 	
60
 	
61
-	public TypeMembers getTypeMembers(StoredType type) {
61
+	public TypeMembers getTypeMembers(TypeID type) {
62
 		return memberCache.get(type);
62
 		return memberCache.get(type);
63
 	}
63
 	}
64
 	
64
 	
65
 	public GenericMapper getMapper() {
65
 	public GenericMapper getMapper() {
66
-		Map<TypeParameter, StoredType> mapper = StoredType.getSelfMapping(moduleContext.registry, typeParameters);
66
+		Map<TypeParameter, TypeID> mapper = TypeID.getSelfMapping(moduleContext.registry, typeParameters);
67
 		return new GenericMapper(position, moduleContext.registry, mapper);
67
 		return new GenericMapper(position, moduleContext.registry, mapper);
68
 	}
68
 	}
69
 	
69
 	

+ 2
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/context/TypeResolutionContext.java View File

11
 import org.openzen.zenscript.codemodel.GenericName;
11
 import org.openzen.zenscript.codemodel.GenericName;
12
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
12
 import org.openzen.zenscript.codemodel.definition.ZSPackage;
13
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
13
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
15
 import org.openzen.zenscript.codemodel.type.TypeID;
14
 import org.openzen.zenscript.codemodel.type.TypeID;
16
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
17
 
15
 
18
 /**
16
 /**
19
  *
17
  *
27
 	AnnotationDefinition getAnnotation(String name);
25
 	AnnotationDefinition getAnnotation(String name);
28
 	
26
 	
29
 	TypeID getType(CodePosition position, List<GenericName> name);
27
 	TypeID getType(CodePosition position, List<GenericName> name);
30
-	
31
-	StorageTag getStorageTag(CodePosition position, String name, String[] parameters);
32
-	
33
-	StoredType getThisType();
28
+
29
+	TypeID getThisType();
34
 }
30
 }

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/ExpansionDefinition.java View File

8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
9
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
10
 import org.openzen.zenscript.codemodel.Module;
10
 import org.openzen.zenscript.codemodel.Module;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
11
+import org.openzen.zenscript.codemodel.type.TypeID;
12
 
12
 
13
 /**
13
 /**
14
  *
14
  *
15
  * @author Hoofdgebruiker
15
  * @author Hoofdgebruiker
16
  */
16
  */
17
 public class ExpansionDefinition extends HighLevelDefinition {
17
 public class ExpansionDefinition extends HighLevelDefinition {
18
-	public StoredType target;
18
+	public TypeID target;
19
 	
19
 	
20
 	public ExpansionDefinition(CodePosition position, Module module, ZSPackage pkg, int modifiers, HighLevelDefinition outerDefinition) {
20
 	public ExpansionDefinition(CodePosition position, Module module, ZSPackage pkg, int modifiers, HighLevelDefinition outerDefinition) {
21
 		super(position, module, pkg, null, modifiers, outerDefinition);
21
 		super(position, module, pkg, null, modifiers, outerDefinition);

+ 1
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/FunctionDefinition.java View File

17
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
17
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberGroup;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberGroup;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
20
-import org.openzen.zenscript.codemodel.type.storage.StaticStorageTag;
21
 
20
 
22
 /**
21
 /**
23
  *
22
  *
41
 	public void setHeader(GlobalTypeRegistry registry, FunctionHeader header) {
40
 	public void setHeader(GlobalTypeRegistry registry, FunctionHeader header) {
42
 		this.header = header;
41
 		this.header = header;
43
 		addMember(caller = new CallerMember(position, this, Modifiers.PUBLIC | Modifiers.STATIC, header, null));
42
 		addMember(caller = new CallerMember(position, this, Modifiers.PUBLIC | Modifiers.STATIC, header, null));
44
-		callerGroup.addMethod(new FunctionalMemberRef(caller, registry.getFunction(header).stored(StaticStorageTag.INSTANCE), GenericMapper.EMPTY), TypeMemberPriority.SPECIFIED);
43
+		callerGroup.addMethod(new FunctionalMemberRef(caller, registry.getFunction(header), GenericMapper.EMPTY), TypeMemberPriority.SPECIFIED);
45
 	}
44
 	}
46
 	
45
 	
47
 	public void setCode(Statement statement) {
46
 	public void setCode(Statement statement) {

+ 0
- 9
CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/InterfaceDefinition.java View File

27
 		baseInterfaces.add(baseInterface);
27
 		baseInterfaces.add(baseInterface);
28
 	}
28
 	}
29
 	
29
 	
30
-	@Override
31
-	public boolean isDestructible() {
32
-		for (TypeID baseInterface : baseInterfaces)
33
-			if (baseInterface.isDestructible())
34
-				return true;
35
-		
36
-		return super.isDestructible();
37
-	}
38
-	
39
 	@Override
30
 	@Override
40
 	public boolean isStatic() {
31
 	public boolean isStatic() {
41
 		return true;
32
 		return true;

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/definition/VariantDefinition.java View File

13
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
13
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
14
 import org.openzen.zenscript.codemodel.Module;
14
 import org.openzen.zenscript.codemodel.Module;
15
 import org.openzen.zenscript.codemodel.member.ref.VariantOptionRef;
15
 import org.openzen.zenscript.codemodel.member.ref.VariantOptionRef;
16
-import org.openzen.zenscript.codemodel.type.StoredType;
16
+import org.openzen.zenscript.codemodel.type.TypeID;
17
 
17
 
18
 /**
18
 /**
19
  *
19
  *
49
 		public final VariantDefinition variant;
49
 		public final VariantDefinition variant;
50
 		public final String name;
50
 		public final String name;
51
 		public final int ordinal;
51
 		public final int ordinal;
52
-		public final StoredType[] types;
52
+		public final TypeID[] types;
53
 		
53
 		
54
-		public Option(CodePosition position, VariantDefinition variant, String name, int ordinal, StoredType[] types) {
54
+		public Option(CodePosition position, VariantDefinition variant, String name, int ordinal, TypeID[] types) {
55
 			this.position = position;
55
 			this.position = position;
56
 			this.variant = variant;
56
 			this.variant = variant;
57
 			this.name = name;
57
 			this.name = name;
59
 			this.types = types;
59
 			this.types = types;
60
 		}
60
 		}
61
 		
61
 		
62
-		public VariantOptionRef instance(StoredType variantType, GenericMapper mapper) {
62
+		public VariantOptionRef instance(TypeID variantType, GenericMapper mapper) {
63
 			return new VariantOptionRef(this, variantType, mapper.map(types));
63
 			return new VariantOptionRef(this, variantType, mapper.map(types));
64
 		}
64
 		}
65
 	}
65
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/AndAndExpression.java View File

18
 	public final Expression right;
18
 	public final Expression right;
19
 	
19
 	
20
 	public AndAndExpression(CodePosition position, Expression left, Expression right) {
20
 	public AndAndExpression(CodePosition position, Expression left, Expression right) {
21
-		super(position, BasicTypeID.BOOL.stored, binaryThrow(position, left.thrownType, right.thrownType));
21
+		super(position, BasicTypeID.BOOL, binaryThrow(position, left.thrownType, right.thrownType));
22
 		
22
 		
23
 		this.left = left;
23
 		this.left = left;
24
 		this.right = right;
24
 		this.right = right;

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ArrayExpression.java View File

8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.type.ArrayTypeID;
10
 import org.openzen.zenscript.codemodel.type.ArrayTypeID;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
11
+import org.openzen.zenscript.codemodel.type.TypeID;
12
 
12
 
13
 /**
13
 /**
14
  *
14
  *
18
 	public final Expression[] expressions;
18
 	public final Expression[] expressions;
19
 	public final ArrayTypeID arrayType;
19
 	public final ArrayTypeID arrayType;
20
 	
20
 	
21
-	public ArrayExpression(CodePosition position, Expression[] expressions, StoredType type) {
21
+	public ArrayExpression(CodePosition position, Expression[] expressions, TypeID type) {
22
 		super(position, type, multiThrow(position, expressions));
22
 		super(position, type, multiThrow(position, expressions));
23
 		
23
 		
24
 		this.expressions = expressions;
24
 		this.expressions = expressions;
25
-		this.arrayType = (ArrayTypeID)type.type;
25
+		this.arrayType = (ArrayTypeID)type;
26
 	}
26
 	}
27
 
27
 
28
 	@Override
28
 	@Override

+ 8
- 8
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CallArguments.java View File

10
 import org.openzen.zencode.shared.CompileExceptionCode;
10
 import org.openzen.zencode.shared.CompileExceptionCode;
11
 import org.openzen.zenscript.codemodel.*;
11
 import org.openzen.zenscript.codemodel.*;
12
 import org.openzen.zenscript.codemodel.scope.TypeScope;
12
 import org.openzen.zenscript.codemodel.scope.TypeScope;
13
-import org.openzen.zenscript.codemodel.type.*;
13
+import org.openzen.zenscript.codemodel.type.TypeID;
14
 
14
 
15
 /**
15
 /**
16
  *
16
  *
17
  * @author Hoofdgebruiker
17
  * @author Hoofdgebruiker
18
  */
18
  */
19
 public class CallArguments {
19
 public class CallArguments {
20
-	public static final CallArguments EMPTY = new CallArguments(new Expression[0]);
20
+	public static final CallArguments EMPTY = new CallArguments(Expression.NONE);
21
 	
21
 	
22
-	public final StoredType[] typeArguments;
22
+	public final TypeID[] typeArguments;
23
 	public final Expression[] arguments;
23
 	public final Expression[] arguments;
24
 	
24
 	
25
 	public CallArguments(Expression... arguments) {
25
 	public CallArguments(Expression... arguments) {
26
-		this.typeArguments = StoredType.NONE;
26
+		this.typeArguments = TypeID.NONE;
27
 		this.arguments = arguments;
27
 		this.arguments = arguments;
28
 	}
28
 	}
29
 	
29
 	
30
-	public CallArguments(StoredType[] typeArguments, Expression[] arguments) {
30
+	public CallArguments(TypeID[] typeArguments, Expression[] arguments) {
31
 		if (typeArguments == null)
31
 		if (typeArguments == null)
32
-			typeArguments = StoredType.NONE;
32
+			typeArguments = TypeID.NONE;
33
 		if (arguments == null)
33
 		if (arguments == null)
34
 			throw new IllegalArgumentException("Arguments cannot be null!");
34
 			throw new IllegalArgumentException("Arguments cannot be null!");
35
 		
35
 		
37
 		this.arguments = arguments;
37
 		this.arguments = arguments;
38
 	}
38
 	}
39
 	
39
 	
40
-	public CallArguments(StoredType... dummy) {
41
-		this.typeArguments = StoredType.NONE;
40
+	public CallArguments(TypeID... dummy) {
41
+		this.typeArguments = TypeID.NONE;
42
 		this.arguments = new Expression[dummy.length];
42
 		this.arguments = new Expression[dummy.length];
43
 		for (int i = 0; i < dummy.length; i++)
43
 		for (int i = 0; i < dummy.length; i++)
44
 			arguments[i] = new DummyExpression(dummy[i]);
44
 			arguments[i] = new DummyExpression(dummy[i]);

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CapturedExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public abstract class CapturedExpression extends Expression {
16
 public abstract class CapturedExpression extends Expression {
17
 	public final LambdaClosure closure;
17
 	public final LambdaClosure closure;
18
 	
18
 	
19
-	public CapturedExpression(CodePosition position, StoredType type, LambdaClosure closure) {
19
+	public CapturedExpression(CodePosition position, TypeID type, LambdaClosure closure) {
20
 		super(position, type, null);
20
 		super(position, type, null);
21
 		
21
 		
22
 		this.closure = closure;
22
 		this.closure = closure;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CapturedThisExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
14
  * @author Hoofdgebruiker
14
  * @author Hoofdgebruiker
15
  */
15
  */
16
 public class CapturedThisExpression extends CapturedExpression {
16
 public class CapturedThisExpression extends CapturedExpression {
17
-	public CapturedThisExpression(CodePosition position, StoredType type, LambdaClosure closure) {
17
+	public CapturedThisExpression(CodePosition position, TypeID type, LambdaClosure closure) {
18
 		super(position, type, closure);
18
 		super(position, type, closure);
19
 	}
19
 	}
20
 
20
 

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/CompareExpression.java View File

24
 	public final CompareType comparison;
24
 	public final CompareType comparison;
25
 	
25
 	
26
 	public CompareExpression(CodePosition position, Expression left, Expression right, FunctionalMemberRef operator, CompareType comparison) {
26
 	public CompareExpression(CodePosition position, Expression left, Expression right, FunctionalMemberRef operator, CompareType comparison) {
27
-		super(position, BasicTypeID.BOOL.stored, binaryThrow(position, left.thrownType, right.thrownType));
27
+		super(position, BasicTypeID.BOOL, binaryThrow(position, left.thrownType, right.thrownType));
28
 		
28
 		
29
 		this.left = left;
29
 		this.left = left;
30
 		this.right = right;
30
 		this.right = right;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConditionalExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
23
 			Expression condition,
23
 			Expression condition,
24
 			Expression ifThen,
24
 			Expression ifThen,
25
 			Expression ifElse,
25
 			Expression ifElse,
26
-			StoredType type) {
26
+			TypeID type) {
27
 		super(position, type, binaryThrow(position, condition.thrownType, binaryThrow(position, ifThen.thrownType, ifElse.thrownType)));
27
 		super(position, type, binaryThrow(position, condition.thrownType, binaryThrow(position, ifThen.thrownType, ifElse.thrownType)));
28
 		
28
 		
29
 		if (!ifThen.type.equals(ifElse.type))
29
 		if (!ifThen.type.equals(ifElse.type))

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantBoolExpression.java View File

17
 	public final boolean value;
17
 	public final boolean value;
18
 	
18
 	
19
 	public ConstantBoolExpression(CodePosition position, boolean value) {
19
 	public ConstantBoolExpression(CodePosition position, boolean value) {
20
-		super(position, BasicTypeID.BOOL.stored, null);
20
+		super(position, BasicTypeID.BOOL, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantByteExpression.java View File

17
 	public final int value;
17
 	public final int value;
18
 	
18
 	
19
 	public ConstantByteExpression(CodePosition position, int value) {
19
 	public ConstantByteExpression(CodePosition position, int value) {
20
-		super(position, BasicTypeID.BYTE.stored, null);
20
+		super(position, BasicTypeID.BYTE, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantCharExpression.java View File

17
 	public final char value;
17
 	public final char value;
18
 	
18
 	
19
 	public ConstantCharExpression(CodePosition position, char value) {
19
 	public ConstantCharExpression(CodePosition position, char value) {
20
-		super(position, BasicTypeID.CHAR.stored, null);
20
+		super(position, BasicTypeID.CHAR, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantDoubleExpression.java View File

17
 	public final double value;
17
 	public final double value;
18
 	
18
 	
19
 	public ConstantDoubleExpression(CodePosition position, double value) {
19
 	public ConstantDoubleExpression(CodePosition position, double value) {
20
-		super(position, BasicTypeID.DOUBLE.stored, null);
20
+		super(position, BasicTypeID.DOUBLE, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantFloatExpression.java View File

17
 	public final float value;
17
 	public final float value;
18
 	
18
 	
19
 	public ConstantFloatExpression(CodePosition position, float value) {
19
 	public ConstantFloatExpression(CodePosition position, float value) {
20
-		super(position, BasicTypeID.FLOAT.stored, null);
20
+		super(position, BasicTypeID.FLOAT, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantIntExpression.java View File

17
 	public final int value;
17
 	public final int value;
18
 	
18
 	
19
 	public ConstantIntExpression(CodePosition position, int value) {
19
 	public ConstantIntExpression(CodePosition position, int value) {
20
-		super(position, BasicTypeID.INT.stored, null);
20
+		super(position, BasicTypeID.INT, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantLongExpression.java View File

18
 	public final long value;
18
 	public final long value;
19
 	
19
 	
20
 	public ConstantLongExpression(CodePosition position, long value) {
20
 	public ConstantLongExpression(CodePosition position, long value) {
21
-		super(position, BasicTypeID.LONG.stored, null);
21
+		super(position, BasicTypeID.LONG, null);
22
 		
22
 		
23
 		this.value = value;
23
 		this.value = value;
24
 	}
24
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantSByteExpression.java View File

17
 	public final byte value;
17
 	public final byte value;
18
 	
18
 	
19
 	public ConstantSByteExpression(CodePosition position, byte value) {
19
 	public ConstantSByteExpression(CodePosition position, byte value) {
20
-		super(position, BasicTypeID.SBYTE.stored, null);
20
+		super(position, BasicTypeID.SBYTE, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantShortExpression.java View File

17
 	public final short value;
17
 	public final short value;
18
 	
18
 	
19
 	public ConstantShortExpression(CodePosition position, short value) {
19
 	public ConstantShortExpression(CodePosition position, short value) {
20
-		super(position, BasicTypeID.SHORT.stored, null);
20
+		super(position, BasicTypeID.SHORT, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantStringExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StringTypeID;
10
+import org.openzen.zenscript.codemodel.type.BasicTypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
17
 	public final String value;
17
 	public final String value;
18
 	
18
 	
19
 	public ConstantStringExpression(CodePosition position, String value) {
19
 	public ConstantStringExpression(CodePosition position, String value) {
20
-		super(position, StringTypeID.STATIC, null);
20
+		super(position, BasicTypeID.STRING, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUIntExpression.java View File

17
 	public final int value;
17
 	public final int value;
18
 	
18
 	
19
 	public ConstantUIntExpression(CodePosition position, int value) {
19
 	public ConstantUIntExpression(CodePosition position, int value) {
20
-		super(position, BasicTypeID.UINT.stored, null);
20
+		super(position, BasicTypeID.UINT, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantULongExpression.java View File

17
 	public final long value;
17
 	public final long value;
18
 	
18
 	
19
 	public ConstantULongExpression(CodePosition position, long value) {
19
 	public ConstantULongExpression(CodePosition position, long value) {
20
-		super(position, BasicTypeID.ULONG.stored, null);
20
+		super(position, BasicTypeID.ULONG, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUShortExpression.java View File

17
 	public final int value;
17
 	public final int value;
18
 	
18
 	
19
 	public ConstantUShortExpression(CodePosition position, int value) {
19
 	public ConstantUShortExpression(CodePosition position, int value) {
20
-		super(position, BasicTypeID.USHORT.stored, null);
20
+		super(position, BasicTypeID.USHORT, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstantUSizeExpression.java View File

17
 	public final long value;
17
 	public final long value;
18
 	
18
 	
19
 	public ConstantUSizeExpression(CodePosition position, long value) {
19
 	public ConstantUSizeExpression(CodePosition position, long value) {
20
-		super(position, BasicTypeID.USIZE.stored, null);
20
+		super(position, BasicTypeID.USIZE, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;
23
 	}
23
 	}

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstructorSuperCallExpression.java View File

9
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
9
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
11
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
11
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
12
-import org.openzen.zenscript.codemodel.type.StoredType;
12
+import org.openzen.zenscript.codemodel.type.TypeID;
13
 
13
 
14
 /**
14
 /**
15
  *
15
  *
16
  * @author Hoofdgebruiker
16
  * @author Hoofdgebruiker
17
  */
17
  */
18
 public class ConstructorSuperCallExpression extends Expression {
18
 public class ConstructorSuperCallExpression extends Expression {
19
-	public final StoredType objectType;
19
+	public final TypeID objectType;
20
 	public final FunctionalMemberRef constructor;
20
 	public final FunctionalMemberRef constructor;
21
 	public final CallArguments arguments;
21
 	public final CallArguments arguments;
22
 	
22
 	
23
-	public ConstructorSuperCallExpression(CodePosition position, StoredType type, FunctionalMemberRef constructor, CallArguments arguments) {
24
-		super(position, BasicTypeID.VOID.stored, binaryThrow(position, constructor.getHeader().thrownType, multiThrow(position, arguments.arguments)));
23
+	public ConstructorSuperCallExpression(CodePosition position, TypeID type, FunctionalMemberRef constructor, CallArguments arguments) {
24
+		super(position, BasicTypeID.VOID, binaryThrow(position, constructor.getHeader().thrownType, multiThrow(position, arguments.arguments)));
25
 		
25
 		
26
 		this.objectType = type;
26
 		this.objectType = type;
27
 		this.constructor = constructor;
27
 		this.constructor = constructor;

+ 5
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ConstructorThisCallExpression.java View File

9
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
9
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
11
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
11
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
12
-import org.openzen.zenscript.codemodel.type.StoredType;
12
+import org.openzen.zenscript.codemodel.type.TypeID;
13
 
13
 
14
 /**
14
 /**
15
  *
15
  *
16
  * @author Hoofdgebruiker
16
  * @author Hoofdgebruiker
17
  */
17
  */
18
 public class ConstructorThisCallExpression extends Expression {
18
 public class ConstructorThisCallExpression extends Expression {
19
-	public final StoredType objectType;
19
+	public final TypeID objectType;
20
 	public final FunctionalMemberRef constructor;
20
 	public final FunctionalMemberRef constructor;
21
 	public final CallArguments arguments;
21
 	public final CallArguments arguments;
22
 	
22
 	
23
-	public ConstructorThisCallExpression(CodePosition position, StoredType type, FunctionalMemberRef constructor, CallArguments arguments) {
24
-		super(position, BasicTypeID.VOID.stored, binaryThrow(position, constructor.getHeader().thrownType, multiThrow(position, arguments.arguments)));
23
+	public ConstructorThisCallExpression(CodePosition position, TypeID type, FunctionalMemberRef constructor, CallArguments arguments) {
24
+		super(position, BasicTypeID.VOID, binaryThrow(position, constructor.getHeader().thrownType, multiThrow(position, arguments.arguments)));
25
 		
25
 		
26
-		if (type.type instanceof BasicTypeID)
26
+		if (type instanceof BasicTypeID)
27
 			throw new IllegalArgumentException("Type cannot be basic type");
27
 			throw new IllegalArgumentException("Type cannot be basic type");
28
 		
28
 		
29
 		this.objectType = type;
29
 		this.objectType = type;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/DummyExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
14
  * @author Hoofdgebruiker
14
  * @author Hoofdgebruiker
15
  */
15
  */
16
 public class DummyExpression extends Expression {
16
 public class DummyExpression extends Expression {
17
-	public DummyExpression(StoredType type) {
17
+	public DummyExpression(TypeID type) {
18
 		super(CodePosition.BUILTIN, type, null);
18
 		super(CodePosition.BUILTIN, type, null);
19
 	}
19
 	}
20
 
20
 

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/EnumConstantExpression.java View File

20
 	public final EnumConstantMember value;
20
 	public final EnumConstantMember value;
21
 	
21
 	
22
 	public EnumConstantExpression(CodePosition position, TypeID type, EnumConstantMember value) {
22
 	public EnumConstantExpression(CodePosition position, TypeID type, EnumConstantMember value) {
23
-		super(position, type.stored(), null);
23
+		super(position, type, null);
24
 		
24
 		
25
 		this.value = value;
25
 		this.value = value;
26
 	}
26
 	}
27
 	
27
 	
28
 	public EnumConstantExpression(CodePosition position, GlobalTypeRegistry registry, EnumDefinition type, EnumConstantMember value) {
28
 	public EnumConstantExpression(CodePosition position, GlobalTypeRegistry registry, EnumDefinition type, EnumConstantMember value) {
29
-		super(position, registry.getForDefinition(type).stored(), null);
29
+		super(position, registry.getForDefinition(type), null);
30
 		
30
 		
31
 		this.value = value;
31
 		this.value = value;
32
 	}
32
 	}

+ 17
- 19
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/Expression.java View File

7
 
7
 
8
 import java.util.Collections;
8
 import java.util.Collections;
9
 import java.util.List;
9
 import java.util.List;
10
-import java.util.Objects;
11
 import java.util.function.Consumer;
10
 import java.util.function.Consumer;
12
 import java.util.stream.Collectors;
11
 import java.util.stream.Collectors;
13
 import org.openzen.zencode.shared.CodePosition;
12
 import org.openzen.zencode.shared.CodePosition;
18
 import org.openzen.zenscript.codemodel.member.EnumConstantMember;
17
 import org.openzen.zenscript.codemodel.member.EnumConstantMember;
19
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
18
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
20
 import org.openzen.zenscript.codemodel.GenericName;
19
 import org.openzen.zenscript.codemodel.GenericName;
20
+import org.openzen.zenscript.codemodel.type.TypeID;
21
 import org.openzen.zenscript.codemodel.type.member.TypeMemberGroup;
21
 import org.openzen.zenscript.codemodel.type.member.TypeMemberGroup;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
23
 import org.openzen.zenscript.codemodel.scope.TypeScope;
23
 import org.openzen.zenscript.codemodel.scope.TypeScope;
24
 import org.openzen.zenscript.codemodel.statement.Statement;
24
 import org.openzen.zenscript.codemodel.statement.Statement;
25
 import org.openzen.zenscript.codemodel.statement.StatementTransformer;
25
 import org.openzen.zenscript.codemodel.statement.StatementTransformer;
26
 import org.openzen.zenscript.codemodel.type.InvalidTypeID;
26
 import org.openzen.zenscript.codemodel.type.InvalidTypeID;
27
-import org.openzen.zenscript.codemodel.type.StoredType;
28
-import org.openzen.zenscript.codemodel.type.storage.UniqueStorageTag;
29
 
27
 
30
 /**
28
 /**
31
  *
29
  *
35
 	public static final Expression[] NONE = new Expression[0];
33
 	public static final Expression[] NONE = new Expression[0];
36
 	
34
 	
37
 	public final CodePosition position;
35
 	public final CodePosition position;
38
-	public final StoredType type;
39
-	public final StoredType thrownType;
36
+	public final TypeID type;
37
+	public final TypeID thrownType;
40
 	
38
 	
41
-	public Expression(CodePosition position, StoredType type, StoredType thrownType) {
39
+	public Expression(CodePosition position, TypeID type, TypeID thrownType) {
42
 		if (type == null)
40
 		if (type == null)
43
 			throw new NullPointerException();
41
 			throw new NullPointerException();
44
 		//if (type.type == BasicTypeID.UNDETERMINED)
42
 		//if (type.type == BasicTypeID.UNDETERMINED)
73
 	public abstract Expression normalize(TypeScope scope);
71
 	public abstract Expression normalize(TypeScope scope);
74
 	
72
 	
75
 	@Override
73
 	@Override
76
-	public List<StoredType> getAssignHints() {
74
+	public List<TypeID> getAssignHints() {
77
 		return Collections.singletonList(type);
75
 		return Collections.singletonList(type);
78
 	}
76
 	}
79
 	
77
 	
82
 		return this;
80
 		return this;
83
 	}
81
 	}
84
 	
82
 	
85
-	public Expression castExplicit(CodePosition position, TypeScope scope, StoredType asType, boolean optional) {
83
+	public Expression castExplicit(CodePosition position, TypeScope scope, TypeID asType, boolean optional) {
86
 		return scope.getTypeMembers(type).castExplicit(position, this, asType, optional);
84
 		return scope.getTypeMembers(type).castExplicit(position, this, asType, optional);
87
 	}
85
 	}
88
 	
86
 	
89
-	public Expression castImplicit(CodePosition position, TypeScope scope, StoredType asType) {
87
+	public Expression castImplicit(CodePosition position, TypeScope scope, TypeID asType) {
90
 		return scope.getTypeMembers(type).castImplicit(position, this, asType, true);
88
 		return scope.getTypeMembers(type).castImplicit(position, this, asType, true);
91
 	}
89
 	}
92
 	
90
 	
101
 	}
99
 	}
102
 	
100
 	
103
 	@Override
101
 	@Override
104
-	public List<StoredType>[] predictCallTypes(CodePosition position, TypeScope scope, List<StoredType> hints, int arguments) {
102
+	public List<TypeID>[] predictCallTypes(CodePosition position, TypeScope scope, List<TypeID> hints, int arguments) {
105
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
103
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
106
 		return group.predictCallTypes(position, scope, hints, arguments);
104
 		return group.predictCallTypes(position, scope, hints, arguments);
107
 	}
105
 	}
108
 	
106
 	
109
 	@Override
107
 	@Override
110
-	public List<FunctionHeader> getPossibleFunctionHeaders(TypeScope scope, List<StoredType> hints, int arguments) {
108
+	public List<FunctionHeader> getPossibleFunctionHeaders(TypeScope scope, List<TypeID> hints, int arguments) {
111
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
109
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
112
 		return group.getMethodMembers().stream()
110
 		return group.getMethodMembers().stream()
113
 				.filter(method -> method.member.getHeader().accepts(arguments) && !method.member.isStatic())
111
 				.filter(method -> method.member.getHeader().accepts(arguments) && !method.member.isStatic())
116
 	}
114
 	}
117
 	
115
 	
118
 	@Override
116
 	@Override
119
-	public Expression call(CodePosition position, TypeScope scope, List<StoredType> hints, CallArguments arguments) throws CompileException {
117
+	public Expression call(CodePosition position, TypeScope scope, List<TypeID> hints, CallArguments arguments) throws CompileException {
120
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
118
 		TypeMemberGroup group = scope.getTypeMembers(type).getGroup(OperatorType.CALL);
121
 		return group.call(position, scope, this, arguments, false);
119
 		return group.call(position, scope, this, arguments, false);
122
 	}
120
 	}
123
 	
121
 	
124
 	@Override
122
 	@Override
125
-	public IPartialExpression getMember(CodePosition position, TypeScope scope, List<StoredType> hints, GenericName name) throws CompileException {
123
+	public IPartialExpression getMember(CodePosition position, TypeScope scope, List<TypeID> hints, GenericName name) throws CompileException {
126
 		TypeMembers members = scope.getTypeMembers(type);
124
 		TypeMembers members = scope.getTypeMembers(type);
127
 		IPartialExpression result = members.getMemberExpression(position, scope, this, name, false);
125
 		IPartialExpression result = members.getMemberExpression(position, scope, this, name, false);
128
 		if (result == null)
126
 		if (result == null)
131
 	}
129
 	}
132
 	
130
 	
133
 	@Override
131
 	@Override
134
-	public StoredType[] getTypeArguments() {
132
+	public TypeID[] getTypeArguments() {
135
 		return null;
133
 		return null;
136
 	}
134
 	}
137
 	
135
 	
147
 		throw new UnsupportedOperationException("Cannot evaluate this value to an enum constant!");
145
 		throw new UnsupportedOperationException("Cannot evaluate this value to an enum constant!");
148
 	}
146
 	}
149
 	
147
 	
150
-	public static StoredType binaryThrow(CodePosition position, StoredType left, StoredType right) {
151
-		if (Objects.equals(left, right))
148
+	public static TypeID binaryThrow(CodePosition position, TypeID left, TypeID right) {
149
+		if (left == right)
152
 			return left;
150
 			return left;
153
 		else if (left == null)
151
 		else if (left == null)
154
 			return right;
152
 			return right;
155
 		else if (right == null)
153
 		else if (right == null)
156
 			return left;
154
 			return left;
157
 		else
155
 		else
158
-			return new InvalidTypeID(position, CompileExceptionCode.DIFFERENT_EXCEPTIONS, "two different exceptions in same operation: " + left.toString() + " and " + right.toString()).stored(UniqueStorageTag.INSTANCE);
156
+			return new InvalidTypeID(position, CompileExceptionCode.DIFFERENT_EXCEPTIONS, "two different exceptions in same operation: " + left.toString() + " and " + right.toString());
159
 	}
157
 	}
160
 	
158
 	
161
-	public static StoredType multiThrow(CodePosition position, Expression[] expressions) {
162
-		StoredType result = null;
159
+	public static TypeID multiThrow(CodePosition position, Expression[] expressions) {
160
+		TypeID result = null;
163
 		for (Expression expression : expressions)
161
 		for (Expression expression : expressions)
164
 			result = binaryThrow(position, result, expression.thrownType);
162
 			result = binaryThrow(position, result, expression.thrownType);
165
 		return result;
163
 		return result;

+ 2
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionSymbol.java View File

11
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
11
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
12
 import org.openzen.zenscript.codemodel.scope.BaseScope;
12
 import org.openzen.zenscript.codemodel.scope.BaseScope;
13
 import org.openzen.zenscript.codemodel.type.ISymbol;
13
 import org.openzen.zenscript.codemodel.type.ISymbol;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
15
 import org.openzen.zenscript.codemodel.type.TypeID;
14
 import org.openzen.zenscript.codemodel.type.TypeID;
16
 
15
 
17
 /**
16
 /**
26
 	}
25
 	}
27
 
26
 
28
 	@Override
27
 	@Override
29
-	public IPartialExpression getExpression(CodePosition position, BaseScope scope, StoredType[] typeArguments) {
28
+	public IPartialExpression getExpression(CodePosition position, BaseScope scope, TypeID[] typeArguments) {
30
 		return function.apply(position, scope);
29
 		return function.apply(position, scope);
31
 	}
30
 	}
32
 
31
 
33
 	@Override
32
 	@Override
34
-	public TypeID getType(CodePosition position, TypeResolutionContext context, StoredType[] typeArguments) {
33
+	public TypeID getType(CodePosition position, TypeResolutionContext context, TypeID[] typeArguments) {
35
 		return null;
34
 		return null;
36
 	}
35
 	}
37
 }
36
 }

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionVisitor.java View File

117
 	T visitOrOr(OrOrExpression expression);
117
 	T visitOrOr(OrOrExpression expression);
118
 	
118
 	
119
 	T visitPanic(PanicExpression expression);
119
 	T visitPanic(PanicExpression expression);
120
-	
120
+
121
+	T visitPlatformSpecific(Expression expression);
122
+
121
 	T visitPostCall(PostCallExpression expression);
123
 	T visitPostCall(PostCallExpression expression);
122
 	
124
 	
123
 	T visitRange(RangeExpression expression);
125
 	T visitRange(RangeExpression expression);
137
 	T visitStaticGetter(StaticGetterExpression expression);
139
 	T visitStaticGetter(StaticGetterExpression expression);
138
 	
140
 	
139
 	T visitStaticSetter(StaticSetterExpression expression);
141
 	T visitStaticSetter(StaticSetterExpression expression);
140
-	
141
-	T visitStorageCast(StorageCastExpression expression);
142
-	
142
+
143
 	T visitSupertypeCast(SupertypeCastExpression expression);
143
 	T visitSupertypeCast(SupertypeCastExpression expression);
144
 	
144
 	
145
 	T visitThis(ThisExpression expression);
145
 	T visitThis(ThisExpression expression);

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ExpressionVisitorWithContext.java View File

113
 	R visitOrOr(C context, OrOrExpression expression);
113
 	R visitOrOr(C context, OrOrExpression expression);
114
 	
114
 	
115
 	R visitPanic(C context, PanicExpression expression);
115
 	R visitPanic(C context, PanicExpression expression);
116
-	
116
+
117
+	R visitPlatformSpecific(C context, Expression expression);
118
+
117
 	R visitPostCall(C context, PostCallExpression expression);
119
 	R visitPostCall(C context, PostCallExpression expression);
118
 	
120
 	
119
 	R visitRange(C context, RangeExpression expression);
121
 	R visitRange(C context, RangeExpression expression);
133
 	R visitStaticGetter(C context, StaticGetterExpression expression);
135
 	R visitStaticGetter(C context, StaticGetterExpression expression);
134
 	
136
 	
135
 	R visitStaticSetter(C context, StaticSetterExpression expression);
137
 	R visitStaticSetter(C context, StaticSetterExpression expression);
136
-	
137
-	R visitStorageCast(C context, StorageCastExpression expression);
138
-	
138
+
139
 	R visitSupertypeCast(C context, SupertypeCastExpression expression);
139
 	R visitSupertypeCast(C context, SupertypeCastExpression expression);
140
 	
140
 	
141
 	R visitThis(C context, ThisExpression expression);
141
 	R visitThis(C context, ThisExpression expression);

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/FunctionExpression.java View File

17
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
17
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
18
 import org.openzen.zenscript.codemodel.statement.ReturnStatement;
18
 import org.openzen.zenscript.codemodel.statement.ReturnStatement;
19
 import org.openzen.zenscript.codemodel.statement.Statement;
19
 import org.openzen.zenscript.codemodel.statement.Statement;
20
-import org.openzen.zenscript.codemodel.type.StoredType;
20
+import org.openzen.zenscript.codemodel.type.TypeID;
21
 
21
 
22
 /**
22
 /**
23
  *
23
  *
30
 	
30
 	
31
 	public FunctionExpression(
31
 	public FunctionExpression(
32
 			CodePosition position,
32
 			CodePosition position,
33
-			StoredType type,
33
+			TypeID type,
34
 			LambdaClosure closure,
34
 			LambdaClosure closure,
35
 			FunctionHeader header,
35
 			FunctionHeader header,
36
 			Statement body) {
36
 			Statement body) {

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/GetFieldExpression.java View File

11
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
11
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
12
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
12
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
13
 import org.openzen.zenscript.codemodel.scope.TypeScope;
13
 import org.openzen.zenscript.codemodel.scope.TypeScope;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
15
 
16
 /**
16
 /**
17
  *
17
  *
29
 	}
29
 	}
30
 	
30
 	
31
 	@Override
31
 	@Override
32
-	public List<StoredType> getAssignHints() {
32
+	public List<TypeID> getAssignHints() {
33
 		return Collections.singletonList(type);
33
 		return Collections.singletonList(type);
34
 	}
34
 	}
35
 	
35
 	

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/GetStaticFieldExpression.java View File

11
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
11
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
12
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
12
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
13
 import org.openzen.zenscript.codemodel.scope.TypeScope;
13
 import org.openzen.zenscript.codemodel.scope.TypeScope;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
15
 
16
 /**
16
 /**
17
  *
17
  *
27
 	}
27
 	}
28
 	
28
 	
29
 	@Override
29
 	@Override
30
-	public List<StoredType> getAssignHints() {
30
+	public List<TypeID> getAssignHints() {
31
 		return Collections.singletonList(field.getType());
31
 		return Collections.singletonList(field.getType());
32
 	}
32
 	}
33
 	
33
 	

+ 3
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/InvalidExpression.java View File

5
  */
5
  */
6
 package org.openzen.zenscript.codemodel.expression;
6
 package org.openzen.zenscript.codemodel.expression;
7
 
7
 
8
-import jdk.nashorn.internal.ir.Assignment;
9
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
10
 import org.openzen.zencode.shared.CompileException;
9
 import org.openzen.zencode.shared.CompileException;
11
 import org.openzen.zencode.shared.CompileExceptionCode;
10
 import org.openzen.zencode.shared.CompileExceptionCode;
12
 import org.openzen.zenscript.codemodel.scope.TypeScope;
11
 import org.openzen.zenscript.codemodel.scope.TypeScope;
13
-import org.openzen.zenscript.codemodel.type.StoredType;
12
+import org.openzen.zenscript.codemodel.type.TypeID;
14
 
13
 
15
 /**
14
 /**
16
  *
15
  *
20
 	public final CompileExceptionCode code;
19
 	public final CompileExceptionCode code;
21
 	public final String message;
20
 	public final String message;
22
 	
21
 	
23
-	public InvalidExpression(CodePosition position, StoredType type, CompileExceptionCode code, String message) {
22
+	public InvalidExpression(CodePosition position, TypeID type, CompileExceptionCode code, String message) {
24
 		super(position, type, null);
23
 		super(position, type, null);
25
 		
24
 		
26
 		this.code = code;
25
 		this.code = code;
27
 		this.message = message;
26
 		this.message = message;
28
 	}
27
 	}
29
 	
28
 	
30
-	public InvalidExpression(StoredType type, CompileException cause) {
29
+	public InvalidExpression(TypeID type, CompileException cause) {
31
 		this(cause.position, type, cause.code, cause.message);
30
 		this(cause.position, type, cause.code, cause.message);
32
 	}
31
 	}
33
 	
32
 	

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/IsExpression.java View File

19
 	public final TypeID isType;
19
 	public final TypeID isType;
20
 	
20
 	
21
 	public IsExpression(CodePosition position, Expression value, TypeID type) {
21
 	public IsExpression(CodePosition position, Expression value, TypeID type) {
22
-		super(position, BasicTypeID.BOOL.stored, value.thrownType);
22
+		super(position, BasicTypeID.BOOL, value.thrownType);
23
 		
23
 		
24
 		this.value = value;
24
 		this.value = value;
25
 		this.isType = type;
25
 		this.isType = type;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MakeConstExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class MakeConstExpression extends Expression {
16
 public class MakeConstExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public MakeConstExpression(CodePosition position, Expression value, StoredType constType) {
19
+	public MakeConstExpression(CodePosition position, Expression value, TypeID constType) {
20
 		super(position, constType, value.thrownType);
20
 		super(position, constType, value.thrownType);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MapExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
21
 			CodePosition position,
21
 			CodePosition position,
22
 			Expression[] keys,
22
 			Expression[] keys,
23
 			Expression[] values,
23
 			Expression[] values,
24
-			StoredType type) {
24
+			TypeID type) {
25
 		super(position, type, binaryThrow(position, multiThrow(position, keys), multiThrow(position, values)));
25
 		super(position, type, binaryThrow(position, multiThrow(position, keys), multiThrow(position, values)));
26
 		
26
 		
27
 		this.keys = keys;
27
 		this.keys = keys;

+ 6
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/MatchExpression.java View File

18
 import org.openzen.zenscript.codemodel.statement.VarStatement;
18
 import org.openzen.zenscript.codemodel.statement.VarStatement;
19
 import org.openzen.zenscript.codemodel.statement.VariableID;
19
 import org.openzen.zenscript.codemodel.statement.VariableID;
20
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
20
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
21
-import org.openzen.zenscript.codemodel.type.StoredType;
21
+import org.openzen.zenscript.codemodel.type.TypeID;
22
 
22
 
23
 /**
23
 /**
24
  *
24
  *
28
 	public final Expression value;
28
 	public final Expression value;
29
 	public final Case[] cases;
29
 	public final Case[] cases;
30
 	
30
 	
31
-	public MatchExpression(CodePosition position, Expression value, StoredType type, Case[] cases) {
31
+	public MatchExpression(CodePosition position, Expression value, TypeID type, Case[] cases) {
32
 		super(position, type, binaryThrow(position, value.thrownType, getThrownType(position, cases)));
32
 		super(position, type, binaryThrow(position, value.thrownType, getThrownType(position, cases)));
33
 		
33
 		
34
 		this.value = value;
34
 		this.value = value;
89
 				hasDefault = true;
89
 				hasDefault = true;
90
 		}
90
 		}
91
 		if (!hasDefault) {
91
 		if (!hasDefault) {
92
-			Statement defaultCase = new ExpressionStatement(position, new PanicExpression(position, BasicTypeID.VOID.stored, new ConstantStringExpression(position, "Missing case")));
92
+			Statement defaultCase = new ExpressionStatement(position, new PanicExpression(position, BasicTypeID.VOID, new ConstantStringExpression(position, "Missing case")));
93
 			switchStatement.cases.add(new SwitchCase(null, new Statement[] { defaultCase }));
93
 			switchStatement.cases.add(new SwitchCase(null, new Statement[] { defaultCase }));
94
 		}
94
 		}
95
 		return new SwitchedMatch(result, switchStatement);
95
 		return new SwitchedMatch(result, switchStatement);
124
 		}
124
 		}
125
 	}
125
 	}
126
 	
126
 	
127
-	private static StoredType getThrownType(CodePosition position, Case[] cases) {
127
+	private static TypeID getThrownType(CodePosition position, Case[] cases) {
128
 		if (cases.length == 0)
128
 		if (cases.length == 0)
129
 			return null;
129
 			return null;
130
-		
131
-		StoredType result = cases[0].value.thrownType;
130
+
131
+		TypeID result = cases[0].value.thrownType;
132
 		for (int i = 1; i < cases.length; i++)
132
 		for (int i = 1; i < cases.length; i++)
133
 			result = binaryThrow(position, result, cases[i].value.thrownType);
133
 			result = binaryThrow(position, result, cases[i].value.thrownType);
134
 		
134
 		

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/NewExpression.java View File

9
 import org.openzen.zenscript.codemodel.FunctionHeader;
9
 import org.openzen.zenscript.codemodel.FunctionHeader;
10
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
10
 import org.openzen.zenscript.codemodel.member.ref.FunctionalMemberRef;
11
 import org.openzen.zenscript.codemodel.scope.TypeScope;
11
 import org.openzen.zenscript.codemodel.scope.TypeScope;
12
-import org.openzen.zenscript.codemodel.type.StoredType;
12
+import org.openzen.zenscript.codemodel.type.TypeID;
13
 
13
 
14
 /**
14
 /**
15
  *
15
  *
22
 	
22
 	
23
 	public NewExpression(
23
 	public NewExpression(
24
 			CodePosition position,
24
 			CodePosition position,
25
-			StoredType type,
25
+			TypeID type,
26
 			FunctionalMemberRef constructor,
26
 			FunctionalMemberRef constructor,
27
 			CallArguments arguments)
27
 			CallArguments arguments)
28
 	{
28
 	{
31
 	
31
 	
32
 	public NewExpression(
32
 	public NewExpression(
33
 			CodePosition position,
33
 			CodePosition position,
34
-			StoredType type,
34
+			TypeID type,
35
 			FunctionalMemberRef constructor,
35
 			FunctionalMemberRef constructor,
36
 			CallArguments arguments,
36
 			CallArguments arguments,
37
 			FunctionHeader instancedHeader)
37
 			FunctionHeader instancedHeader)

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/NullExpression.java View File

8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
10
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
11
+import org.openzen.zenscript.codemodel.type.TypeID;
12
 
12
 
13
 /**
13
 /**
14
  *
14
  *
16
  */
16
  */
17
 public class NullExpression extends Expression {
17
 public class NullExpression extends Expression {
18
 	public NullExpression(CodePosition position) {
18
 	public NullExpression(CodePosition position) {
19
-		super(position, BasicTypeID.NULL.stored, null);
19
+		super(position, BasicTypeID.NULL, null);
20
 	}
20
 	}
21
 	
21
 	
22
-	public NullExpression(CodePosition position, StoredType optionalType) {
22
+	public NullExpression(CodePosition position, TypeID optionalType) {
23
 		super(position, optionalType, null);
23
 		super(position, optionalType, null);
24
 	}
24
 	}
25
 
25
 

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/OrOrExpression.java View File

18
 	public final Expression right;
18
 	public final Expression right;
19
 	
19
 	
20
 	public OrOrExpression(CodePosition position, Expression left, Expression right) {
20
 	public OrOrExpression(CodePosition position, Expression left, Expression right) {
21
-		super(position, BasicTypeID.BOOL.stored, binaryThrow(position, left.thrownType, right.thrownType));
21
+		super(position, BasicTypeID.BOOL, binaryThrow(position, left.thrownType, right.thrownType));
22
 		
22
 		
23
 		this.left = left;
23
 		this.left = left;
24
 		this.right = right;
24
 		this.right = right;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/PanicExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class PanicExpression extends Expression {
16
 public class PanicExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public PanicExpression(CodePosition position, StoredType type, Expression value) {
19
+	public PanicExpression(CodePosition position, TypeID type, Expression value) {
20
 		super(position, type, null);
20
 		super(position, type, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/RangeExpression.java View File

8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.type.RangeTypeID;
10
 import org.openzen.zenscript.codemodel.type.RangeTypeID;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
11
+import org.openzen.zenscript.codemodel.type.TypeID;
12
 
12
 
13
 /**
13
 /**
14
  *
14
  *
18
 	public final Expression from;
18
 	public final Expression from;
19
 	public final Expression to;
19
 	public final Expression to;
20
 	
20
 	
21
-	public RangeExpression(CodePosition position, StoredType type, Expression from, Expression to) {
21
+	public RangeExpression(CodePosition position, TypeID type, Expression from, Expression to) {
22
 		super(position, type, binaryThrow(position, from.thrownType, to.thrownType));
22
 		super(position, type, binaryThrow(position, from.thrownType, to.thrownType));
23
 	
23
 	
24
 		this.from = from;
24
 		this.from = from;
25
 		this.to = to;
25
 		this.to = to;
26
 	}
26
 	}
27
 	
27
 	
28
-	private RangeExpression(CodePosition position, StoredType type, Expression from, Expression to, StoredType thrownType) {
28
+	private RangeExpression(CodePosition position, TypeID type, Expression from, Expression to, TypeID thrownType) {
29
 		super(position, type, thrownType);
29
 		super(position, type, thrownType);
30
 		
30
 		
31
 		this.from = from;
31
 		this.from = from;
51
 
51
 
52
 	@Override
52
 	@Override
53
 	public Expression normalize(TypeScope scope) {
53
 	public Expression normalize(TypeScope scope) {
54
-		StoredType baseType = ((RangeTypeID)type.type).baseType;
54
+		TypeID baseType = ((RangeTypeID)type).baseType;
55
 		return new RangeExpression(
55
 		return new RangeExpression(
56
 				position,
56
 				position,
57
 				type.getNormalized(),
57
 				type.getNormalized(),

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/SameObjectExpression.java View File

19
 	public final boolean inverted;
19
 	public final boolean inverted;
20
 	
20
 	
21
 	public SameObjectExpression(CodePosition position, Expression left, Expression right, boolean inverted) {
21
 	public SameObjectExpression(CodePosition position, Expression left, Expression right, boolean inverted) {
22
-		super(position, BasicTypeID.BOOL.stored, binaryThrow(position, left.thrownType, right.thrownType));
22
+		super(position, BasicTypeID.BOOL, binaryThrow(position, left.thrownType, right.thrownType));
23
 		
23
 		
24
 		this.left = left;
24
 		this.left = left;
25
 		this.right = right;
25
 		this.right = right;

+ 0
- 46
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/StorageCastExpression.java View File

1
-/*
2
- * To change this license header, choose License Headers in Project Properties.
3
- * To change this template file, choose Tools | Templates
4
- * and open the template in the editor.
5
- */
6
-package org.openzen.zenscript.codemodel.expression;
7
-
8
-import org.openzen.zencode.shared.CodePosition;
9
-import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
11
-
12
-/**
13
- *
14
- * @author Hoofdgebruiker
15
- */
16
-public class StorageCastExpression extends Expression {
17
-	public final Expression value;
18
-	
19
-	public StorageCastExpression(CodePosition position, Expression value, StoredType toType) {
20
-		super(position, toType, value.thrownType);
21
-		
22
-		this.value = value;
23
-	}
24
-
25
-	@Override
26
-	public <T> T accept(ExpressionVisitor<T> visitor) {
27
-		return visitor.visitStorageCast(this);
28
-	}
29
-
30
-	@Override
31
-	public <C, R> R accept(C context, ExpressionVisitorWithContext<C, R> visitor) {
32
-		return visitor.visitStorageCast(context, this);
33
-	}
34
-
35
-	@Override
36
-	public Expression transform(ExpressionTransformer transformer) {
37
-		Expression transformed = transformer.transform(value);
38
-		return transformed == this ? this : new StorageCastExpression(position, transformed, type);
39
-	}
40
-
41
-	@Override
42
-	public Expression normalize(TypeScope scope) {
43
-		Expression normalized = value.normalize(scope);
44
-		return normalized == value ? this : new StorageCastExpression(position, normalized, type);
45
-	}
46
-}

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/SupertypeCastExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  * Using to cast a class type to a base type.
13
  * Using to cast a class type to a base type.
17
 public class SupertypeCastExpression extends Expression {
17
 public class SupertypeCastExpression extends Expression {
18
 	public final Expression value;
18
 	public final Expression value;
19
 	
19
 	
20
-	public SupertypeCastExpression(CodePosition position, Expression value, StoredType type) {
20
+	public SupertypeCastExpression(CodePosition position, Expression value, TypeID type) {
21
 		super(position, type, value.thrownType);
21
 		super(position, type, value.thrownType);
22
 		
22
 		
23
 		this.value = value;
23
 		this.value = value;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ThisExpression.java View File

8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
9
 import org.openzen.zenscript.codemodel.partial.IPartialExpression;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
 import org.openzen.zenscript.codemodel.scope.TypeScope;
11
-import org.openzen.zenscript.codemodel.type.StoredType;
11
+import org.openzen.zenscript.codemodel.type.TypeID;
12
 
12
 
13
 /**
13
 /**
14
  *
14
  *
15
  * @author Hoofdgebruiker
15
  * @author Hoofdgebruiker
16
  */
16
  */
17
 public class ThisExpression extends Expression {
17
 public class ThisExpression extends Expression {
18
-	public ThisExpression(CodePosition position, StoredType type) {
18
+	public ThisExpression(CodePosition position, TypeID type) {
19
 		super(position, type, null);
19
 		super(position, type, null);
20
 	}
20
 	}
21
 	
21
 	

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/ThrowExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class ThrowExpression extends Expression {
16
 public class ThrowExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public ThrowExpression(CodePosition position, StoredType type, Expression value) {
19
+	public ThrowExpression(CodePosition position, TypeID type, Expression value) {
20
 		super(position, type, value.type);
20
 		super(position, type, value.type);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryConvertExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class TryConvertExpression extends Expression {
16
 public class TryConvertExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public TryConvertExpression(CodePosition position, StoredType type, Expression value) {
19
+	public TryConvertExpression(CodePosition position, TypeID type, Expression value) {
20
 		super(position, type, null);
20
 		super(position, type, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryRethrowAsExceptionExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class TryRethrowAsExceptionExpression extends Expression {
16
 public class TryRethrowAsExceptionExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public TryRethrowAsExceptionExpression(CodePosition position, StoredType type, Expression value, StoredType thrownType) {
19
+	public TryRethrowAsExceptionExpression(CodePosition position, TypeID type, Expression value, TypeID thrownType) {
20
 		super(position, type, thrownType);
20
 		super(position, type, thrownType);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/TryRethrowAsResultExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class TryRethrowAsResultExpression extends Expression {
16
 public class TryRethrowAsResultExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public TryRethrowAsResultExpression(CodePosition position, StoredType type, Expression value) {
19
+	public TryRethrowAsResultExpression(CodePosition position, TypeID type, Expression value) {
20
 		super(position, type, null);
20
 		super(position, type, null);
21
 		
21
 		
22
 		this.value = value;
22
 		this.value = value;

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/VariantValueExpression.java View File

10
 import org.openzen.zencode.shared.CompileException;
10
 import org.openzen.zencode.shared.CompileException;
11
 import org.openzen.zenscript.codemodel.member.ref.VariantOptionRef;
11
 import org.openzen.zenscript.codemodel.member.ref.VariantOptionRef;
12
 import org.openzen.zenscript.codemodel.scope.TypeScope;
12
 import org.openzen.zenscript.codemodel.scope.TypeScope;
13
-import org.openzen.zenscript.codemodel.type.StoredType;
13
+import org.openzen.zenscript.codemodel.type.TypeID;
14
 
14
 
15
 /**
15
 /**
16
  *
16
  *
20
 	public final VariantOptionRef option;
20
 	public final VariantOptionRef option;
21
 	public final Expression[] arguments;
21
 	public final Expression[] arguments;
22
 	
22
 	
23
-	public VariantValueExpression(CodePosition position, StoredType variantType, VariantOptionRef option) {
23
+	public VariantValueExpression(CodePosition position, TypeID variantType, VariantOptionRef option) {
24
 		this(position, variantType, option, Expression.NONE);
24
 		this(position, variantType, option, Expression.NONE);
25
 	}
25
 	}
26
 	
26
 	
27
-	public VariantValueExpression(CodePosition position, StoredType variantType, VariantOptionRef option, Expression[] arguments) {
27
+	public VariantValueExpression(CodePosition position, TypeID variantType, VariantOptionRef option, Expression[] arguments) {
28
 		super(position, variantType, multiThrow(position, arguments));
28
 		super(position, variantType, multiThrow(position, arguments));
29
 		
29
 		
30
 		this.option = option;
30
 		this.option = option;
36
 	}
36
 	}
37
 	
37
 	
38
 	@Override
38
 	@Override
39
-	public Expression call(CodePosition position, TypeScope scope, List<StoredType> hints, CallArguments arguments) throws CompileException {
39
+	public Expression call(CodePosition position, TypeScope scope, List<TypeID> hints, CallArguments arguments) throws CompileException {
40
 		if (arguments != null)
40
 		if (arguments != null)
41
 			return super.call(position, scope, hints, arguments);
41
 			return super.call(position, scope, hints, arguments);
42
 		
42
 		

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/expression/WrapOptionalExpression.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
9
 import org.openzen.zenscript.codemodel.scope.TypeScope;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class WrapOptionalExpression extends Expression {
16
 public class WrapOptionalExpression extends Expression {
17
 	public final Expression value;
17
 	public final Expression value;
18
 	
18
 	
19
-	public WrapOptionalExpression(CodePosition position, Expression value, StoredType optionalType) {
19
+	public WrapOptionalExpression(CodePosition position, Expression value, TypeID optionalType) {
20
 		super(position, optionalType, value.thrownType);
20
 		super(position, optionalType, value.thrownType);
21
 		
21
 		
22
 		if (value.type.isOptional())
22
 		if (value.type.isOptional())

+ 2
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/ParameterSuperBound.java View File

9
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
9
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
10
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
10
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
11
 import org.openzen.zenscript.codemodel.type.TypeID;
11
 import org.openzen.zenscript.codemodel.type.TypeID;
12
-import org.openzen.zenscript.codemodel.type.storage.BorrowStorageTag;
13
 
12
 
14
 /**
13
 /**
15
  *
14
  *
34
 
33
 
35
 	@Override
34
 	@Override
36
 	public boolean matches(LocalMemberCache cache, TypeID type) {
35
 	public boolean matches(LocalMemberCache cache, TypeID type) {
37
-		return cache.get(this.type.stored(BorrowStorageTag.THIS)).extendsOrImplements(type);
36
+		return cache.get(this.type).extendsOrImplements(type);
38
 	}
37
 	}
39
 
38
 
40
 	@Override
39
 	@Override
41
 	public TypeParameterBound instance(GenericMapper mapper) {
40
 	public TypeParameterBound instance(GenericMapper mapper) {
42
-		TypeID translated = type.instance(mapper, null).type;
41
+		TypeID translated = type.instance(mapper);
43
 		if (translated == type)
42
 		if (translated == type)
44
 			return this;
43
 			return this;
45
 		
44
 		

+ 3
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/ParameterTypeBound.java View File

11
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
11
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
12
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
12
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
13
 import org.openzen.zenscript.codemodel.type.TypeID;
13
 import org.openzen.zenscript.codemodel.type.TypeID;
14
-import org.openzen.zenscript.codemodel.type.storage.BorrowStorageTag;
15
 
14
 
16
 /**
15
 /**
17
  *
16
  *
33
 
32
 
34
 	@Override
33
 	@Override
35
 	public void registerMembers(LocalMemberCache cache, TypeMembers members) {
34
 	public void registerMembers(LocalMemberCache cache, TypeMembers members) {
36
-		cache.get(type.stored(members.type.getSpecifiedStorage()))
37
-				.copyMembersTo(members, TypeMemberPriority.FROM_TYPE_BOUNDS);
35
+		cache.get(type).copyMembersTo(members, TypeMemberPriority.FROM_TYPE_BOUNDS);
38
 	}
36
 	}
39
 
37
 
40
 	@Override
38
 	@Override
41
 	public boolean matches(LocalMemberCache cache, TypeID type) {
39
 	public boolean matches(LocalMemberCache cache, TypeID type) {
42
-		return cache.get(type.stored(BorrowStorageTag.THIS))
43
-				.extendsOrImplements(this.type);
40
+		return cache.get(type).extendsOrImplements(this.type);
44
 	}
41
 	}
45
 
42
 
46
 	@Override
43
 	@Override
47
 	public TypeParameterBound instance(GenericMapper mapper) {
44
 	public TypeParameterBound instance(GenericMapper mapper) {
48
-		return new ParameterTypeBound(position, type.instance(mapper, null).type);
45
+		return new ParameterTypeBound(position, type.instance(mapper));
49
 	}
46
 	}
50
 
47
 
51
 	@Override
48
 	@Override

+ 0
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/generic/TypeParameter.java View File

11
 import org.openzen.zencode.shared.Taggable;
11
 import org.openzen.zencode.shared.Taggable;
12
 import org.openzen.zenscript.codemodel.type.TypeID;
12
 import org.openzen.zenscript.codemodel.type.TypeID;
13
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
13
 import org.openzen.zenscript.codemodel.type.member.LocalMemberCache;
14
-import org.openzen.zenscript.codemodel.type.storage.StorageTag;
15
 
14
 
16
 /**
15
 /**
17
  *
16
  *
22
 	
21
 	
23
 	public final CodePosition position;
22
 	public final CodePosition position;
24
 	public final String name;
23
 	public final String name;
25
-	public StorageTag storage = null;
26
 	public final List<TypeParameterBound> bounds = new ArrayList<>();
24
 	public final List<TypeParameterBound> bounds = new ArrayList<>();
27
 	
25
 	
28
 	public TypeParameter(CodePosition position, String name) {
26
 	public TypeParameter(CodePosition position, String name) {
72
         
70
         
73
         if(!name.equals(that.name))
71
         if(!name.equals(that.name))
74
             return false;
72
             return false;
75
-        if(!Objects.equals(storage, that.storage))
76
-            return false;
77
         return bounds.equals(that.bounds);
73
         return bounds.equals(that.bounds);
78
     }
74
     }
79
     
75
     
80
     @Override
76
     @Override
81
     public int hashCode() {
77
     public int hashCode() {
82
         int result = name.hashCode();
78
         int result = name.hashCode();
83
-        result = 31 * result + (storage != null ? storage.hashCode() : 0);
84
         result = 31 * result + bounds.hashCode();
79
         result = 31 * result + bounds.hashCode();
85
         return result;
80
         return result;
86
     }
81
     }

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/CasterMember.java View File

13
 import org.openzen.zenscript.codemodel.member.ref.CasterMemberRef;
13
 import org.openzen.zenscript.codemodel.member.ref.CasterMemberRef;
14
 import org.openzen.zenscript.codemodel.scope.TypeScope;
14
 import org.openzen.zenscript.codemodel.scope.TypeScope;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
16
+import org.openzen.zenscript.codemodel.type.TypeID;
16
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
17
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
17
-import org.openzen.zenscript.codemodel.type.StoredType;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
20
 
20
 
23
  * @author Hoofdgebruiker
23
  * @author Hoofdgebruiker
24
  */
24
  */
25
 public class CasterMember extends FunctionalMember {
25
 public class CasterMember extends FunctionalMember {
26
-	public StoredType toType;
26
+	public TypeID toType;
27
 	public CasterMemberRef overrides;
27
 	public CasterMemberRef overrides;
28
 	
28
 	
29
 	public CasterMember(
29
 	public CasterMember(
30
 			CodePosition position,
30
 			CodePosition position,
31
 			HighLevelDefinition definition,
31
 			HighLevelDefinition definition,
32
 			int modifiers,
32
 			int modifiers,
33
-			StoredType toType,
33
+			TypeID toType,
34
 			BuiltinID builtin)
34
 			BuiltinID builtin)
35
 	{
35
 	{
36
 		super(position, definition, modifiers, new FunctionHeader(toType), builtin);
36
 		super(position, definition, modifiers, new FunctionHeader(toType), builtin);
58
 		return "caster to " + toType.toString();
58
 		return "caster to " + toType.toString();
59
 	}
59
 	}
60
 	
60
 	
61
-	public StoredType getTargetType() {
61
+	public TypeID getTargetType() {
62
 		return toType;
62
 		return toType;
63
 	}
63
 	}
64
 	
64
 	

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ConstMember.java View File

14
 import org.openzen.zenscript.codemodel.member.ref.ConstMemberRef;
14
 import org.openzen.zenscript.codemodel.member.ref.ConstMemberRef;
15
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
15
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
16
 import org.openzen.zenscript.codemodel.scope.TypeScope;
16
 import org.openzen.zenscript.codemodel.scope.TypeScope;
17
-import org.openzen.zenscript.codemodel.type.StoredType;
17
+import org.openzen.zenscript.codemodel.type.TypeID;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
27
 	public final String name;
27
 	public final String name;
28
 	public Expression value;
28
 	public Expression value;
29
 	
29
 	
30
-	public ConstMember(CodePosition position, HighLevelDefinition definition, int modifiers, String name, StoredType type, BuiltinID builtin) {
30
+	public ConstMember(CodePosition position, HighLevelDefinition definition, int modifiers, String name, TypeID type, BuiltinID builtin) {
31
 		super(position, definition, modifiers, type, builtin);
31
 		super(position, definition, modifiers, type, builtin);
32
 		
32
 		
33
 		this.name = name;
33
 		this.name = name;
81
 	}
81
 	}
82
 
82
 
83
 	@Override
83
 	@Override
84
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
84
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
85
 		return new ConstMemberRef(type, this, mapper);
85
 		return new ConstMemberRef(type, this, mapper);
86
 	}
86
 	}
87
 	
87
 	

+ 1
- 1
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ConstructorMember.java View File

37
 				position,
37
 				position,
38
 				definition,
38
 				definition,
39
 				modifiers,
39
 				modifiers,
40
-				new FunctionHeader(header.typeParameters, BasicTypeID.VOID.stored, header.thrownType, header.storage, header.parameters),
40
+				new FunctionHeader(header.typeParameters, BasicTypeID.VOID, header.thrownType, header.parameters),
41
 				builtin);
41
 				builtin);
42
 	}
42
 	}
43
 	
43
 	

+ 4
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/FieldMember.java View File

22
 import org.openzen.zenscript.codemodel.statement.ReturnStatement;
22
 import org.openzen.zenscript.codemodel.statement.ReturnStatement;
23
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
23
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
24
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
24
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
25
-import org.openzen.zenscript.codemodel.type.StoredType;
26
 import org.openzen.zenscript.codemodel.type.TypeID;
25
 import org.openzen.zenscript.codemodel.type.TypeID;
27
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
26
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
28
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
27
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
45
 			HighLevelDefinition definition,
44
 			HighLevelDefinition definition,
46
 			int modifiers,
45
 			int modifiers,
47
 			String name,
46
 			String name,
48
-			StoredType thisType,
49
-			StoredType type,
47
+			TypeID thisType,
48
+			TypeID type,
50
 			GlobalTypeRegistry registry,
49
 			GlobalTypeRegistry registry,
51
 			int autoGetterAccess,
50
 			int autoGetterAccess,
52
 			int autoSetterAccess,
51
 			int autoSetterAccess,
92
 			HighLevelDefinition definition,
91
 			HighLevelDefinition definition,
93
 			int modifiers,
92
 			int modifiers,
94
 			String name,
93
 			String name,
95
-			StoredType type,
94
+			TypeID type,
96
 			int autoGetterAccess,
95
 			int autoGetterAccess,
97
 			int autoSetterAccess,
96
 			int autoSetterAccess,
98
 			GetterMember autoGetter,
97
 			GetterMember autoGetter,
173
 	}
172
 	}
174
 
173
 
175
 	@Override
174
 	@Override
176
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
175
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
177
 		return new FieldMemberRef(type, this, mapper);
176
 		return new FieldMemberRef(type, this, mapper);
178
 	}
177
 	}
179
 	
178
 	

+ 3
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/FunctionalMember.java View File

15
 import org.openzen.zenscript.codemodel.scope.TypeScope;
15
 import org.openzen.zenscript.codemodel.scope.TypeScope;
16
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
16
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
17
 import org.openzen.zenscript.codemodel.statement.Statement;
17
 import org.openzen.zenscript.codemodel.statement.Statement;
18
-import org.openzen.zenscript.codemodel.type.StoredType;
18
+import org.openzen.zenscript.codemodel.type.TypeID;
19
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
19
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
20
 
20
 
21
 /**
21
 /**
47
 	
47
 	
48
 	public abstract FunctionalKind getKind();
48
 	public abstract FunctionalKind getKind();
49
 	
49
 	
50
-	public FunctionalMemberRef ref(StoredType type) {
50
+	public FunctionalMemberRef ref(TypeID type) {
51
 		return new FunctionalMemberRef(this, type, null);
51
 		return new FunctionalMemberRef(this, type, null);
52
 	}
52
 	}
53
 	
53
 	
54
 	@Override
54
 	@Override
55
-	public FunctionalMemberRef ref(StoredType type, GenericMapper mapper) {
55
+	public FunctionalMemberRef ref(TypeID type, GenericMapper mapper) {
56
 		return new FunctionalMemberRef(this, type, mapper);
56
 		return new FunctionalMemberRef(this, type, mapper);
57
 	}
57
 	}
58
 	
58
 	

+ 6
- 6
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/GetterMember.java View File

16
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
16
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
17
 import org.openzen.zenscript.codemodel.statement.Statement;
17
 import org.openzen.zenscript.codemodel.statement.Statement;
18
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
18
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
19
+import org.openzen.zenscript.codemodel.type.TypeID;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
20
-import org.openzen.zenscript.codemodel.type.StoredType;
21
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
21
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
23
 
23
 
35
 			HighLevelDefinition definition,
35
 			HighLevelDefinition definition,
36
 			int modifiers,
36
 			int modifiers,
37
 			String name,
37
 			String name,
38
-			StoredType type,
38
+			TypeID type,
39
 			BuiltinID builtin) {
39
 			BuiltinID builtin) {
40
 		super(position, definition, modifiers, type, builtin);
40
 		super(position, definition, modifiers, type, builtin);
41
 		
41
 		
45
 	public void setBody(Statement body) {
45
 	public void setBody(Statement body) {
46
 		this.body = body;
46
 		this.body = body;
47
 		
47
 		
48
-		if (getType().type == BasicTypeID.UNDETERMINED) {
49
-			StoredType returnType = body.getReturnType();
48
+		if (getType() == BasicTypeID.UNDETERMINED) {
49
+			TypeID returnType = body.getReturnType();
50
 			if (returnType != null)
50
 			if (returnType != null)
51
 				setType(returnType);
51
 				setType(returnType);
52
 		}
52
 		}
102
 	public void setOverrides(GetterMemberRef override) {
102
 	public void setOverrides(GetterMemberRef override) {
103
 		this.overrides = override;
103
 		this.overrides = override;
104
 		
104
 		
105
-		if (getType().type == BasicTypeID.UNDETERMINED)
105
+		if (getType() == BasicTypeID.UNDETERMINED)
106
 			setType(override.getType());
106
 			setType(override.getType());
107
 	}
107
 	}
108
 
108
 
109
 	@Override
109
 	@Override
110
-	public GetterMemberRef ref(StoredType type, GenericMapper mapper) {
110
+	public GetterMemberRef ref(TypeID type, GenericMapper mapper) {
111
 		return new GetterMemberRef(type, this, mapper);
111
 		return new GetterMemberRef(type, this, mapper);
112
 	}
112
 	}
113
 	
113
 	

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/IDefinitionMember.java View File

14
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
14
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
15
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
15
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
16
 import org.openzen.zenscript.codemodel.scope.TypeScope;
16
 import org.openzen.zenscript.codemodel.scope.TypeScope;
17
-import org.openzen.zenscript.codemodel.type.StoredType;
17
+import org.openzen.zenscript.codemodel.type.TypeID;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
18
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
56
 	
56
 	
57
 	boolean isAbstract();
57
 	boolean isAbstract();
58
 	
58
 	
59
-	DefinitionMemberRef ref(StoredType type, GenericMapper mapper);
59
+	DefinitionMemberRef ref(TypeID type, GenericMapper mapper);
60
 	
60
 	
61
 	FunctionHeader getHeader();
61
 	FunctionHeader getHeader();
62
 	
62
 	

+ 6
- 7
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ImplementationMember.java View File

20
 import org.openzen.zenscript.codemodel.member.ref.ImplementationMemberRef;
20
 import org.openzen.zenscript.codemodel.member.ref.ImplementationMemberRef;
21
 import org.openzen.zenscript.codemodel.scope.TypeScope;
21
 import org.openzen.zenscript.codemodel.scope.TypeScope;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
23
-import org.openzen.zenscript.codemodel.type.StoredType;
24
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
23
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
25
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
24
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
26
 import org.openzen.zenscript.codemodel.type.TypeID;
25
 import org.openzen.zenscript.codemodel.type.TypeID;
46
 
45
 
47
 	@Override
46
 	@Override
48
 	public void registerTo(TypeMembers members, TypeMemberPriority priority, GenericMapper mapper) {
47
 	public void registerTo(TypeMembers members, TypeMemberPriority priority, GenericMapper mapper) {
49
-		TypeID instancedType = mapper == null ? type : mapper.map(type.stored()).type;
50
-		members.addImplementation(new ImplementationMemberRef(this, members.type, instancedType.stored(members.type.getSpecifiedStorage())), priority);
48
+		TypeID instancedType = mapper == null ? type : mapper.map(type);
49
+		members.addImplementation(new ImplementationMemberRef(this, members.type, instancedType), priority);
51
 		
50
 		
52
-		TypeMembers interfaceTypeMembers = members.getMemberCache().get(instancedType.stored(members.type.getActualStorage()));
51
+		TypeMembers interfaceTypeMembers = members.getMemberCache().get(instancedType);
53
 		interfaceTypeMembers.copyMembersTo(members, TypeMemberPriority.INTERFACE);
52
 		interfaceTypeMembers.copyMembersTo(members, TypeMemberPriority.INTERFACE);
54
 	}
53
 	}
55
 
54
 
98
 				implemented.add(member.getOverrides().getTarget());
97
 				implemented.add(member.getOverrides().getTarget());
99
 		}
98
 		}
100
 		
99
 		
101
-		TypeMembers interfaceMembers = scope.getTypeMembers(type.stored());
102
-		TypeMembers definitionMembers = scope.getTypeMembers(scope.getTypeRegistry().getForMyDefinition(definition).stored());
100
+		TypeMembers interfaceMembers = scope.getTypeMembers(type);
101
+		TypeMembers definitionMembers = scope.getTypeMembers(scope.getTypeRegistry().getForMyDefinition(definition));
103
 		
102
 		
104
 		definitionBorrowedMembers.clear();
103
 		definitionBorrowedMembers.clear();
105
 		definitionBorrowedMembers.putAll(interfaceMembers.borrowInterfaceMembersFromDefinition(implemented, definitionMembers));
104
 		definitionBorrowedMembers.putAll(interfaceMembers.borrowInterfaceMembersFromDefinition(implemented, definitionMembers));
111
 	}
110
 	}
112
 
111
 
113
 	@Override
112
 	@Override
114
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
113
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
115
 		throw new UnsupportedOperationException("Cannot create an implementation reference");
114
 		throw new UnsupportedOperationException("Cannot create an implementation reference");
116
 	}
115
 	}
117
 
116
 

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/InnerDefinition.java View File

11
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
11
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
12
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
12
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
13
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
13
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
15
 
16
 /**
16
 /**
17
  *
17
  *
19
  */
19
  */
20
 public class InnerDefinition {
20
 public class InnerDefinition {
21
 	public final HighLevelDefinition definition;
21
 	public final HighLevelDefinition definition;
22
-	public final Map<TypeParameter, StoredType> outerTypeArguments;
22
+	public final Map<TypeParameter, TypeID> outerTypeArguments;
23
 	
23
 	
24
 	public InnerDefinition(HighLevelDefinition definition) {
24
 	public InnerDefinition(HighLevelDefinition definition) {
25
 		this.definition = definition;
25
 		this.definition = definition;
26
 		this.outerTypeArguments = Collections.emptyMap();
26
 		this.outerTypeArguments = Collections.emptyMap();
27
 	}
27
 	}
28
 	
28
 	
29
-	public InnerDefinition(HighLevelDefinition definition, Map<TypeParameter, StoredType> outerTypeArguments) {
29
+	public InnerDefinition(HighLevelDefinition definition, Map<TypeParameter, TypeID> outerTypeArguments) {
30
 		this.definition = definition;
30
 		this.definition = definition;
31
 		this.outerTypeArguments = outerTypeArguments;
31
 		this.outerTypeArguments = outerTypeArguments;
32
 	}
32
 	}
33
 	
33
 	
34
-	public DefinitionTypeID instance(GlobalTypeRegistry registry, StoredType[] typeArguments, DefinitionTypeID outer) {
34
+	public DefinitionTypeID instance(GlobalTypeRegistry registry, TypeID[] typeArguments, DefinitionTypeID outer) {
35
 		return registry.getForDefinition(definition, typeArguments, outer);
35
 		return registry.getForDefinition(definition, typeArguments, outer);
36
 	}
36
 	}
37
 }
37
 }

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/InnerDefinitionMember.java View File

13
 import org.openzen.zenscript.codemodel.definition.InterfaceDefinition;
13
 import org.openzen.zenscript.codemodel.definition.InterfaceDefinition;
14
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
14
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
15
 import org.openzen.zenscript.codemodel.scope.TypeScope;
15
 import org.openzen.zenscript.codemodel.scope.TypeScope;
16
-import org.openzen.zenscript.codemodel.type.StoredType;
16
+import org.openzen.zenscript.codemodel.type.TypeID;
17
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
17
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
87
 	}
87
 	}
88
 
88
 
89
 	@Override
89
 	@Override
90
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
90
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
91
 		throw new UnsupportedOperationException("Cannot create an inner definition reference");
91
 		throw new UnsupportedOperationException("Cannot create an inner definition reference");
92
 	}
92
 	}
93
 	
93
 	

+ 6
- 7
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/IteratorMember.java View File

13
 import org.openzen.zenscript.codemodel.member.ref.IteratorMemberRef;
13
 import org.openzen.zenscript.codemodel.member.ref.IteratorMemberRef;
14
 import org.openzen.zenscript.codemodel.statement.Statement;
14
 import org.openzen.zenscript.codemodel.statement.Statement;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
15
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
16
-import org.openzen.zenscript.codemodel.type.StoredType;
16
+import org.openzen.zenscript.codemodel.type.TypeID;
17
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
17
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
18
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
19
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
20
-import org.openzen.zenscript.codemodel.type.storage.UniqueStorageTag;
21
 
20
 
22
 /**
21
 /**
23
  *
22
  *
24
  * @author Hoofdgebruiker
23
  * @author Hoofdgebruiker
25
  */
24
  */
26
 public class IteratorMember extends FunctionalMember {
25
 public class IteratorMember extends FunctionalMember {
27
-	private final StoredType[] iteratorTypes;
26
+	private final TypeID[] iteratorTypes;
28
 	public Statement body;
27
 	public Statement body;
29
 	public IteratorMemberRef overrides;
28
 	public IteratorMemberRef overrides;
30
 	
29
 	
31
-	public IteratorMember(CodePosition position, HighLevelDefinition definition, int modifiers, StoredType[] iteratorTypes, GlobalTypeRegistry registry, BuiltinID builtin) {
30
+	public IteratorMember(CodePosition position, HighLevelDefinition definition, int modifiers, TypeID[] iteratorTypes, GlobalTypeRegistry registry, BuiltinID builtin) {
32
 		super(position, definition, modifiers, createIteratorHeader(registry, iteratorTypes), builtin);
31
 		super(position, definition, modifiers, createIteratorHeader(registry, iteratorTypes), builtin);
33
 		
32
 		
34
 		this.iteratorTypes = iteratorTypes;
33
 		this.iteratorTypes = iteratorTypes;
47
 		return iteratorTypes.length;
46
 		return iteratorTypes.length;
48
 	}
47
 	}
49
 	
48
 	
50
-	public StoredType[] getLoopVariableTypes() {
49
+	public TypeID[] getLoopVariableTypes() {
51
 		return iteratorTypes;
50
 		return iteratorTypes;
52
 	}
51
 	}
53
 
52
 
85
 		return FunctionalKind.ITERATOR;
84
 		return FunctionalKind.ITERATOR;
86
 	}
85
 	}
87
 	
86
 	
88
-	private static FunctionHeader createIteratorHeader(GlobalTypeRegistry registry, StoredType[] iteratorTypes) {
89
-		return new FunctionHeader(registry.getIterator(iteratorTypes).stored(UniqueStorageTag.INSTANCE));
87
+	private static FunctionHeader createIteratorHeader(GlobalTypeRegistry registry, TypeID[] iteratorTypes) {
88
+		return new FunctionHeader(registry.getIterator(iteratorTypes));
90
 	}
89
 	}
91
 }
90
 }

+ 5
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/PropertyMember.java View File

7
 
7
 
8
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
9
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
9
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
11
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
12
 
12
 
13
 /**
13
 /**
15
  * @author Hoofdgebruiker
15
  * @author Hoofdgebruiker
16
  */
16
  */
17
 public abstract class PropertyMember extends DefinitionMember {
17
 public abstract class PropertyMember extends DefinitionMember {
18
-	private StoredType type;
18
+	private TypeID type;
19
 	public final BuiltinID builtin;
19
 	public final BuiltinID builtin;
20
 	
20
 	
21
-	public PropertyMember(CodePosition position, HighLevelDefinition definition, int modifiers, StoredType type, BuiltinID builtin) {
21
+	public PropertyMember(CodePosition position, HighLevelDefinition definition, int modifiers, TypeID type, BuiltinID builtin) {
22
 		super(position, definition, modifiers);
22
 		super(position, definition, modifiers);
23
 		
23
 		
24
 		if (type == null)
24
 		if (type == null)
28
 		this.builtin = builtin;
28
 		this.builtin = builtin;
29
 	}
29
 	}
30
 	
30
 	
31
-	public StoredType getType() {
31
+	public TypeID getType() {
32
 		return type;
32
 		return type;
33
 	}
33
 	}
34
 	
34
 	
35
-	public void setType(StoredType type) {
35
+	public void setType(TypeID type) {
36
 		if (type == null)
36
 		if (type == null)
37
 			throw new NullPointerException();
37
 			throw new NullPointerException();
38
 		
38
 		

+ 4
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/SetterMember.java View File

18
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
18
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
19
 import org.openzen.zenscript.codemodel.statement.Statement;
19
 import org.openzen.zenscript.codemodel.statement.Statement;
20
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
20
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
21
-import org.openzen.zenscript.codemodel.type.StoredType;
21
+import org.openzen.zenscript.codemodel.type.TypeID;
22
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
22
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
23
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
23
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
24
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
24
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
38
 			HighLevelDefinition definition,
38
 			HighLevelDefinition definition,
39
 			int modifiers,
39
 			int modifiers,
40
 			String name,
40
 			String name,
41
-			StoredType type,
41
+			TypeID type,
42
 			BuiltinID builtin)
42
 			BuiltinID builtin)
43
 	{
43
 	{
44
 		super(position,
44
 		super(position,
105
 	public void setOverrides(SetterMemberRef overrides) {
105
 	public void setOverrides(SetterMemberRef overrides) {
106
 		this.overrides = overrides;
106
 		this.overrides = overrides;
107
 		
107
 		
108
-		if (getType().type == BasicTypeID.UNDETERMINED) {
108
+		if (getType() == BasicTypeID.UNDETERMINED) {
109
 			setType(overrides.getType());
109
 			setType(overrides.getType());
110
 			parameter = new FunctionParameter(overrides.getType(), "value");
110
 			parameter = new FunctionParameter(overrides.getType(), "value");
111
 		}
111
 		}
112
 	}
112
 	}
113
 
113
 
114
 	@Override
114
 	@Override
115
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
115
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
116
 		return new SetterMemberRef(type, this, mapper);
116
 		return new SetterMemberRef(type, this, mapper);
117
 	}
117
 	}
118
 	
118
 	

+ 2
- 3
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/StaticInitializerMember.java View File

10
 import org.openzen.zenscript.codemodel.FunctionHeader;
10
 import org.openzen.zenscript.codemodel.FunctionHeader;
11
 import org.openzen.zenscript.codemodel.GenericMapper;
11
 import org.openzen.zenscript.codemodel.GenericMapper;
12
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
12
 import org.openzen.zenscript.codemodel.HighLevelDefinition;
13
-import org.openzen.zenscript.codemodel.Modifiers;
14
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
13
 import org.openzen.zenscript.codemodel.member.ref.DefinitionMemberRef;
15
 import org.openzen.zenscript.codemodel.scope.TypeScope;
14
 import org.openzen.zenscript.codemodel.scope.TypeScope;
16
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
15
 import org.openzen.zenscript.codemodel.statement.LoopStatement;
17
 import org.openzen.zenscript.codemodel.statement.Statement;
16
 import org.openzen.zenscript.codemodel.statement.Statement;
18
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
17
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
19
-import org.openzen.zenscript.codemodel.type.StoredType;
18
+import org.openzen.zenscript.codemodel.type.TypeID;
20
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
19
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
21
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
20
 import org.openzen.zenscript.codemodel.type.member.TypeMemberPriority;
22
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
21
 import org.openzen.zenscript.codemodel.type.member.TypeMembers;
78
 	}
77
 	}
79
 
78
 
80
 	@Override
79
 	@Override
81
-	public DefinitionMemberRef ref(StoredType type, GenericMapper mapper) {
80
+	public DefinitionMemberRef ref(TypeID type, GenericMapper mapper) {
82
 		throw new UnsupportedOperationException("Cannot reference a static initializer");
81
 		throw new UnsupportedOperationException("Cannot reference a static initializer");
83
 	}
82
 	}
84
 	
83
 	

+ 5
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/CasterMemberRef.java View File

14
 import org.openzen.zenscript.codemodel.expression.Expression;
14
 import org.openzen.zenscript.codemodel.expression.Expression;
15
 import org.openzen.zenscript.codemodel.member.CasterMember;
15
 import org.openzen.zenscript.codemodel.member.CasterMember;
16
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
16
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
17
-import org.openzen.zenscript.codemodel.type.StoredType;
17
+import org.openzen.zenscript.codemodel.type.TypeID;
18
 
18
 
19
 /**
19
 /**
20
  *
20
  *
22
  */
22
  */
23
 public class CasterMemberRef implements DefinitionMemberRef {
23
 public class CasterMemberRef implements DefinitionMemberRef {
24
 	public final CasterMember member;
24
 	public final CasterMember member;
25
-	public final StoredType type;
26
-	public final StoredType toType;
25
+	public final TypeID type;
26
+	public final TypeID toType;
27
 	
27
 	
28
-	public CasterMemberRef(CasterMember member, StoredType type, StoredType toType) {
28
+	public CasterMemberRef(CasterMember member, TypeID type, TypeID toType) {
29
 		this.member = member;
29
 		this.member = member;
30
 		this.type = type;
30
 		this.type = type;
31
 		this.toType = toType;
31
 		this.toType = toType;
37
 	}
37
 	}
38
 	
38
 	
39
 	@Override
39
 	@Override
40
-	public StoredType getOwnerType() {
40
+	public TypeID getOwnerType() {
41
 		return type;
41
 		return type;
42
 	}
42
 	}
43
 
43
 

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/ConstMemberRef.java View File

7
 
7
 
8
 import org.openzen.zenscript.codemodel.GenericMapper;
8
 import org.openzen.zenscript.codemodel.GenericMapper;
9
 import org.openzen.zenscript.codemodel.member.ConstMember;
9
 import org.openzen.zenscript.codemodel.member.ConstMember;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class ConstMemberRef extends PropertyRef {
16
 public class ConstMemberRef extends PropertyRef {
17
 	public final ConstMember member;
17
 	public final ConstMember member;
18
 	
18
 	
19
-	public ConstMemberRef(StoredType owner, ConstMember member, GenericMapper mapper) {
19
+	public ConstMemberRef(TypeID owner, ConstMember member, GenericMapper mapper) {
20
 		super(owner, member, mapper);
20
 		super(owner, member, mapper);
21
 		this.member = member;
21
 		this.member = member;
22
 	}
22
 	}

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/DefinitionMemberRef.java View File

10
 import org.openzen.zenscript.codemodel.FunctionHeader;
10
 import org.openzen.zenscript.codemodel.FunctionHeader;
11
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
11
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
12
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
12
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
13
-import org.openzen.zenscript.codemodel.type.StoredType;
13
+import org.openzen.zenscript.codemodel.type.TypeID;
14
 
14
 
15
 /**
15
 /**
16
  *
16
  *
29
 		return getTarget().hasTag(type);
29
 		return getTarget().hasTag(type);
30
 	}
30
 	}
31
 	
31
 	
32
-	StoredType getOwnerType();
32
+	TypeID getOwnerType();
33
 	
33
 	
34
 	DefinitionMemberRef getOverrides();
34
 	DefinitionMemberRef getOverrides();
35
 	
35
 	

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/FieldMemberRef.java View File

7
 
7
 
8
 import org.openzen.zenscript.codemodel.GenericMapper;
8
 import org.openzen.zenscript.codemodel.GenericMapper;
9
 import org.openzen.zenscript.codemodel.member.FieldMember;
9
 import org.openzen.zenscript.codemodel.member.FieldMember;
10
-import org.openzen.zenscript.codemodel.type.StoredType;
10
+import org.openzen.zenscript.codemodel.type.TypeID;
11
 
11
 
12
 /**
12
 /**
13
  *
13
  *
16
 public class FieldMemberRef extends PropertyRef {
16
 public class FieldMemberRef extends PropertyRef {
17
 	public final FieldMember member;
17
 	public final FieldMember member;
18
 	
18
 	
19
-	public FieldMemberRef(StoredType owner, FieldMember member, GenericMapper mapper) {
19
+	public FieldMemberRef(TypeID owner, FieldMember member, GenericMapper mapper) {
20
 		super(owner, member, mapper);
20
 		super(owner, member, mapper);
21
 		this.member = member;
21
 		this.member = member;
22
 	}
22
 	}

+ 3
- 4
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/FunctionalMemberRef.java View File

22
 import org.openzen.zenscript.codemodel.member.MethodMember;
22
 import org.openzen.zenscript.codemodel.member.MethodMember;
23
 import org.openzen.zenscript.codemodel.member.OperatorMember;
23
 import org.openzen.zenscript.codemodel.member.OperatorMember;
24
 import org.openzen.zenscript.codemodel.scope.TypeScope;
24
 import org.openzen.zenscript.codemodel.scope.TypeScope;
25
-import org.openzen.zenscript.codemodel.type.StoredType;
26
 import org.openzen.zenscript.codemodel.type.TypeID;
25
 import org.openzen.zenscript.codemodel.type.TypeID;
27
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
26
 import org.openzen.zenscript.codemodel.type.member.BuiltinID;
28
 
27
 
36
 	private final FunctionalMember target;
35
 	private final FunctionalMember target;
37
 	
36
 	
38
 	private FunctionHeader header;
37
 	private FunctionHeader header;
39
-	private final StoredType type;
38
+	private final TypeID type;
40
 	private GenericMapper mapper;
39
 	private GenericMapper mapper;
41
 	
40
 	
42
-	public FunctionalMemberRef(FunctionalMember target, StoredType type, GenericMapper mapper) {
41
+	public FunctionalMemberRef(FunctionalMember target, TypeID type, GenericMapper mapper) {
43
 		this.target = target;
42
 		this.target = target;
44
 		this.type = type;
43
 		this.type = type;
45
 		
44
 		
75
 	}
74
 	}
76
 	
75
 	
77
 	@Override
76
 	@Override
78
-	public StoredType getOwnerType() {
77
+	public TypeID getOwnerType() {
79
 		return type;
78
 		return type;
80
 	}
79
 	}
81
 	
80
 	

+ 2
- 2
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/GetterMemberRef.java View File

11
 import org.openzen.zenscript.codemodel.expression.GetterExpression;
11
 import org.openzen.zenscript.codemodel.expression.GetterExpression;
12
 import org.openzen.zenscript.codemodel.expression.StaticGetterExpression;
12
 import org.openzen.zenscript.codemodel.expression.StaticGetterExpression;
13
 import org.openzen.zenscript.codemodel.member.GetterMember;
13
 import org.openzen.zenscript.codemodel.member.GetterMember;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
15
 
16
 /**
16
 /**
17
  *
17
  *
20
 public class GetterMemberRef extends PropertyRef {
20
 public class GetterMemberRef extends PropertyRef {
21
 	public final GetterMember member;
21
 	public final GetterMember member;
22
 	
22
 	
23
-	public GetterMemberRef(StoredType owner, GetterMember member, GenericMapper mapper) {
23
+	public GetterMemberRef(TypeID owner, GetterMember member, GenericMapper mapper) {
24
 		super(owner, member, mapper);
24
 		super(owner, member, mapper);
25
 		
25
 		
26
 		this.member = member;
26
 		this.member = member;

+ 5
- 5
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/ImplementationMemberRef.java View File

11
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
11
 import org.openzen.zenscript.codemodel.annotations.MemberAnnotation;
12
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
12
 import org.openzen.zenscript.codemodel.member.IDefinitionMember;
13
 import org.openzen.zenscript.codemodel.member.ImplementationMember;
13
 import org.openzen.zenscript.codemodel.member.ImplementationMember;
14
-import org.openzen.zenscript.codemodel.type.StoredType;
14
+import org.openzen.zenscript.codemodel.type.TypeID;
15
 
15
 
16
 /**
16
 /**
17
  *
17
  *
19
  */
19
  */
20
 public class ImplementationMemberRef implements DefinitionMemberRef {
20
 public class ImplementationMemberRef implements DefinitionMemberRef {
21
 	public final ImplementationMember member;
21
 	public final ImplementationMember member;
22
-	private final StoredType type;
23
-	public final StoredType implementsType;
22
+	private final TypeID type;
23
+	public final TypeID implementsType;
24
 	
24
 	
25
-	public ImplementationMemberRef(ImplementationMember member, StoredType owner, StoredType implementsType) {
25
+	public ImplementationMemberRef(ImplementationMember member, TypeID owner, TypeID implementsType) {
26
 		this.member = member;
26
 		this.member = member;
27
 		this.type = owner;
27
 		this.type = owner;
28
 		this.implementsType = implementsType;
28
 		this.implementsType = implementsType;
34
 	}
34
 	}
35
 	
35
 	
36
 	@Override
36
 	@Override
37
-	public StoredType getOwnerType() {
37
+	public TypeID getOwnerType() {
38
 		return type;
38
 		return type;
39
 	}
39
 	}
40
 
40
 

+ 0
- 0
CodeModel/src/main/java/org/openzen/zenscript/codemodel/member/ref/IteratorMemberRef.java View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save