diff options
author | flywind <43030857+xflywind@users.noreply.github.com> | 2020-11-12 16:20:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 09:20:10 +0100 |
commit | 1f9bf43100f7236d8ccbcaa14c43bc18f7e6e5d8 (patch) | |
tree | 9e674a5f93079fe98cb00e188fb5709301f23dc7 | |
parent | 826e62953faa1f6cd9bac582246186935af4b8e6 (diff) | |
download | Nim-1f9bf43100f7236d8ccbcaa14c43bc18f7e6e5d8.tar.gz |
fix #14157 (#15877)
* fix #14157 * Update compiler/jsgen.nim * add changelog * Update compiler/jsgen.nim * Update tests/js/tmodify_cstring.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
-rw-r--r-- | changelog.md | 2 | ||||
-rw-r--r-- | compiler/jsgen.nim | 4 | ||||
-rw-r--r-- | tests/js/tmodify_cstring.nim | 6 |
3 files changed, 12 insertions, 0 deletions
diff --git a/changelog.md b/changelog.md index bc8ad2295..3bdf8a511 100644 --- a/changelog.md +++ b/changelog.md @@ -35,6 +35,8 @@ ## Language changes +- The `cstring` doesn't support `[]=` operator in JS backend. + ## Compiler changes diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 87021de11..357e18000 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1049,6 +1049,10 @@ proc genAsgnAux(p: PProc, x, y: PNode, noCopyNeeded: bool) = var a, b: TCompRes var xtyp = mapType(p, x.typ) + # disable `[]=` for cstring + if x.kind == nkBracketExpr and x.len >= 2 and x[0].typ.skipTypes(abstractInst).kind == tyCString: + localError(p.config, x.info, "cstring doesn't support `[]=` operator") + gen(p, x, a) genLineDir(p, y) gen(p, y, b) diff --git a/tests/js/tmodify_cstring.nim b/tests/js/tmodify_cstring.nim new file mode 100644 index 000000000..82f8ccb23 --- /dev/null +++ b/tests/js/tmodify_cstring.nim @@ -0,0 +1,6 @@ +discard """ + errormsg: "cstring doesn't support `[]=` operator" +""" + +var x = cstring"abcd" +x[0] = 'x' |