From 4793d376d97b6b6157c88e2586fdbf8d8decbf77 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Mon, 10 Jun 2019 09:45:04 +0200 Subject: [PATCH] Create copies when tagging Not sure if this behaviour is identical to previous version, or in truth how important it really is anyway --- src/runtime/typescript/gflib.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/runtime/typescript/gflib.ts b/src/runtime/typescript/gflib.ts index 641e54880..87c17a839 100644 --- a/src/runtime/typescript/gflib.ts +++ b/src/runtime/typescript/gflib.ts @@ -662,8 +662,10 @@ interface String { tagWith: (tag: string) => string; } String.prototype.tagWith = function (tag: string): string { - this.tag = tag - return this + // returns a copy + let s2 = this + s2.tag = tag + return s2 } /** @@ -833,10 +835,11 @@ class SymKS implements Taggable { return terminalStr.join('') } - // TODO magic numbering fails here public tagWith(tag: string): SymKS { - this.tag = tag - return this + let s = new SymKS() + s.tokens = [...this.tokens] // copy array + s.tag = tag + return s } } @@ -861,10 +864,10 @@ class SymKP implements Taggable { return terminalStr.join('') } - // TODO magic numbering fails here public tagWith(tag: string): SymKP { - this.tag = tag - return this + let s = new SymKP([...this.tokens], [...this.alts]) // copy arguments + s.tag = tag + return s } }