diff options
-rw-r--r-- | compiler/semtypes.nim | 6 | ||||
-rw-r--r-- | tests/objects/tdefaultrangetypescheck.nim | 11 |
2 files changed, 15 insertions, 2 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 7515c52b0..5dfcbac52 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -487,7 +487,8 @@ proc semTuple(c: PContext, n: PNode, prev: PType): PType = a[^1] = semConstExpr(c, a[^1]) if a[^2].kind != nkEmpty: typ = semTypeNode(c, a[^2], nil) - typ = fitNodeConsiderViewType(c, typ, a[^1], a[^1].info).typ + let def = semExprWithType(c, a[^1], {}, typ) + typ = fitNodeConsiderViewType(c, typ, def, def.info).typ else: typ = a[^1].typ elif a[^2].kind != nkEmpty: @@ -826,7 +827,8 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int, n[^1] = semConstExpr(c, n[^1]) if n[^2].kind != nkEmpty: typ = semTypeNode(c, n[^2], nil) - typ = fitNodeConsiderViewType(c, typ, n[^1], n[^1].info).typ + let def = semExprWithType(c, n[^1], {}, typ) + typ = fitNodeConsiderViewType(c, typ, def, def.info).typ else: typ = n[^1].typ propagateToOwner(rectype, typ) diff --git a/tests/objects/tdefaultrangetypescheck.nim b/tests/objects/tdefaultrangetypescheck.nim new file mode 100644 index 000000000..50eeac492 --- /dev/null +++ b/tests/objects/tdefaultrangetypescheck.nim @@ -0,0 +1,11 @@ +discard """ + errormsg: "conversion from int literal(0) to range 1..5(int) is invalid" + line: 9 +""" + +type + Point = object + y: int + x: range[1..5] = 0 + +echo default(Point) |