summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/jsgen.nim4
-rw-r--r--tests/views/tviews2.nim15
2 files changed, 17 insertions, 2 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index f7e4e9e72..0cc052b38 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -1241,7 +1241,7 @@ proc needsNoCopy(p: PProc; y: PNode): bool =
   return y.kind in nodeKindsNeedNoCopy or
         ((mapType(y.typ) != etyBaseIndex) and
           (skipTypes(y.typ, abstractInst).kind in
-            {tyRef, tyPtr, tyLent, tyVar, tyCstring, tyProc, tyOwned} + IntegralTypes))
+            {tyRef, tyPtr, tyLent, tyVar, tyCstring, tyProc, tyOwned, tyOpenArray} + IntegralTypes))
 
 proc genAsgnAux(p: PProc, x, y: PNode, noCopyNeeded: bool) =
   var a, b: TCompRes = default(TCompRes)
@@ -1966,7 +1966,7 @@ proc createVar(p: PProc, typ: PType, indirect: bool): Rope =
       result = putToSeq("null", indirect)
   of tySequence, tyString:
     result = putToSeq("[]", indirect)
-  of tyCstring, tyProc:
+  of tyCstring, tyProc, tyOpenArray:
     result = putToSeq("null", indirect)
   of tyStatic:
     if t.n != nil:
diff --git a/tests/views/tviews2.nim b/tests/views/tviews2.nim
new file mode 100644
index 000000000..36ba58993
--- /dev/null
+++ b/tests/views/tviews2.nim
@@ -0,0 +1,15 @@
+discard """
+  targets: "c js"
+"""
+
+{.experimental: "views".}
+
+type
+  Foo = object
+    id: openArray[char]
+
+proc foo(): Foo =
+  var source = "1245"
+  result = Foo(id: source.toOpenArray(0, 1))
+
+doAssert foo().id == @['1', '2']