diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index 4d5240e3c2..7dbcfd6ffa 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -1110,9 +1110,12 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int, else: sym.typ.kind = tyUncheckedArray of wUnion: - noVal(c, it) - if sym.typ == nil: invalidPragma(c, it) - else: incl(sym.typ.flags, tfUnion) + if c.config.backend == backendJs: + localError(c.config, it.info, "`{.union.}` is not implemented for js backend.") + else: + noVal(c, it) + if sym.typ == nil: invalidPragma(c, it) + else: incl(sym.typ.flags, tfUnion) of wRequiresInit: noVal(c, it) if sym.kind == skField: diff --git a/tests/js/tunion.nim b/tests/js/tunion.nim new file mode 100644 index 0000000000..e185495adf --- /dev/null +++ b/tests/js/tunion.nim @@ -0,0 +1,7 @@ +discard """ + errormsg: "`{.union.}` is not implemented for js backend." +""" + +type Foo {.union.} = object + as_bytes: array[8, int8] + data: int64