import { Type } from "./type"; export class CompoundType extends Type { constructor (type, dimensions) { super(null); this.innerType = type; this.dimensions = dimensions; } isCompatible (another) { if(another instanceof CompoundType){ 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; } canAccept (another) { if(another instanceof CompoundType) { return this.dimensions > another.dimensions && this.innerType.isCompatible(another.innerType); } else { return this.innerType.isCompatible(another); } } }