Skip to content

Commit

Permalink
fixes #23295; don't expand constants for complex structures (#23297)
Browse files Browse the repository at this point in the history
fixes #23295
  • Loading branch information
ringabout authored Feb 20, 2024
1 parent d6f0f1a commit 39f2df1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
3 changes: 1 addition & 2 deletions compiler/trees.nim
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,7 @@ proc stupidStmtListExpr*(n: PNode): bool =
proc dontInlineConstant*(orig, cnst: PNode): bool {.inline.} =
# symbols that expand to a complex constant (array, etc.) should not be
# inlined, unless it's the empty array:
result = orig.kind != cnst.kind and
cnst.kind in {nkCurly, nkPar, nkTupleConstr, nkBracket, nkObjConstr} and
result = cnst.kind in {nkCurly, nkPar, nkTupleConstr, nkBracket, nkObjConstr} and
cnst.len > ord(cnst.kind == nkObjConstr)

proc isRunnableExamples*(n: PNode): bool =
Expand Down
18 changes: 18 additions & 0 deletions tests/objvariant/tconstobjvariant.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# This is a sample code, the first echo statement prints out the error
type
A = object
case w: uint8
of 1:
n: int
else:
other: string

const
a = A(w: 1, n: 5)

proc foo =

let c = [a]
doAssert c[0].n == 5

foo()

0 comments on commit 39f2df1

Please sign in to comment.