import { IType } from "./itype"; import { Type } from "./type"; export class ArrayType implements IType { public innerType: IType; constructor (type: Type, public dimensions: number) { this.innerType = type; } get isVector () { return this.dimensions == 1; } isCompatible (another: IType): boolean { if(another instanceof ArrayType){ if(this.dimensions !== another.dimensions) { return false; } return this.innerType.isCompatible(another.innerType); } return false; } stringInfo () { const list = this.innerType.stringInfo(); list.forEach(v => { v.dim = this.dimensions; }); return list; } get value () { return undefined; } get ord () { return undefined; } canAccept (another: IType) { if(another instanceof ArrayType) { return false; // return this.dimensions > another.dimensions && this.innerType.isCompatible(another.innerType); } else { return this.dimensions == 1 && this.innerType.isCompatible(another); } } }