Skip to content

Commit 27896ed

Browse files
authored
fixes type check of ranges for default fields (#20660)
1 parent 82b7423 commit 27896ed

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

compiler/semtypes.nim

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,8 @@ proc semTuple(c: PContext, n: PNode, prev: PType): PType =
487487
a[^1] = semConstExpr(c, a[^1])
488488
if a[^2].kind != nkEmpty:
489489
typ = semTypeNode(c, a[^2], nil)
490-
typ = fitNodeConsiderViewType(c, typ, a[^1], a[^1].info).typ
490+
let def = semExprWithType(c, a[^1], {}, typ)
491+
typ = fitNodeConsiderViewType(c, typ, def, def.info).typ
491492
else:
492493
typ = a[^1].typ
493494
elif a[^2].kind != nkEmpty:
@@ -826,7 +827,8 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int,
826827
n[^1] = semConstExpr(c, n[^1])
827828
if n[^2].kind != nkEmpty:
828829
typ = semTypeNode(c, n[^2], nil)
829-
typ = fitNodeConsiderViewType(c, typ, n[^1], n[^1].info).typ
830+
let def = semExprWithType(c, n[^1], {}, typ)
831+
typ = fitNodeConsiderViewType(c, typ, def, def.info).typ
830832
else:
831833
typ = n[^1].typ
832834
propagateToOwner(rectype, typ)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
discard """
2+
errormsg: "conversion from int literal(0) to range 1..5(int) is invalid"
3+
line: 9
4+
"""
5+
6+
type
7+
Point = object
8+
y: int
9+
x: range[1..5] = 0
10+
11+
echo default(Point)

0 commit comments

Comments
 (0)