summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/runtime/typescript/gflib.ts19
1 files 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
}
}