import * as types from '../../types'; import { Constant } from './base'; export class Struct extends Constant { constructor(ty: types.Struct, public readonly fields: ReadonlyArray) { super(ty); } public isEqual(to: Constant): boolean { if (this === to) { return true; } if (!to.isStruct()) { return false; } const toStruct = to as Struct; return toStruct.ty.isEqual(this.ty) && toStruct.fields.length === this.fields.length && toStruct.fields.every((field, i) => field.isEqual(this.fields[i])); } public toString(): string { // TODO(indutny): print more return '[struct]'; } }