diff --git a/compiler/enumtostr.nim b/compiler/enumtostr.nim index dc516d2e52..2223be2ffb 100644 --- a/compiler/enumtostr.nim +++ b/compiler/enumtostr.nim @@ -33,6 +33,10 @@ proc genEnumToStrProc*(t: PType; info: TLineInfo; g: ModuleGraph; idgen: IdGener caseStmt.add newTree(nkOfBranch, newIntTypeNode(field.position, t), newTree(nkStmtList, newTree(nkFastAsgn, newSymNode(res), newStrNode(val, info)))) #newIntTypeNode(nkIntLit, field.position, t) + # safety branch for invalid data: + caseStmt.add newTree(nkElse, + newTree(nkStmtList, newTree(nkFastAsgn, newSymNode(res), + newStrNode("", info)))) body.add(caseStmt) diff --git a/tests/arc/tinvalidenumtostr.nim b/tests/arc/tinvalidenumtostr.nim new file mode 100644 index 0000000000..b053e30993 --- /dev/null +++ b/tests/arc/tinvalidenumtostr.nim @@ -0,0 +1,9 @@ +# issue #24875 + +type + MyEnum = enum + One = 1 + +var x = cast[MyEnum](0) +let s = $x +doAssert s == ""