|
@@ -1,3 +1,7 @@
|
|
|
+import { Config } from "../util/config";
|
|
|
+import { Types } from "./types";
|
|
|
+import { BaseTypes } from "./baseTypes";
|
|
|
+
|
|
|
export class Type {
|
|
|
|
|
|
constructor(baseType) {
|
|
@@ -18,7 +22,16 @@ export class Type {
|
|
|
|
|
|
isCompatible (another) {
|
|
|
if(another instanceof Type) {
|
|
|
- return this.baseType.isCompatible(another.baseType);
|
|
|
+ let result = this.baseType.isCompatible(another.baseType);
|
|
|
+ if(result) {
|
|
|
+ return true;
|
|
|
+ } else if(Config.enable_type_casting) {
|
|
|
+ if (this.baseType === BaseTypes.INTEGER || this.baseType === BaseTypes.REAL) {
|
|
|
+ if (another.baseType === BaseTypes.INTEGER || another.baseType === BaseTypes.REAL) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return false;
|
|
|
}
|