This commit is contained in:
Andreas Rumpf
2016-07-19 15:40:21 +02:00
parent 2d8572e948
commit d455d58af6
2 changed files with 11 additions and 2 deletions

View File

@@ -1568,11 +1568,12 @@ proc genSomeCast(p: BProc, e: PNode, d: var TLoc) =
[getTypeDesc(p.module, e.typ), rdCharLoc(a)], a.s)
proc genCast(p: BProc, e: PNode, d: var TLoc) =
const floatTypes = {tyFloat..tyFloat128}
const ValueTypes = {tyFloat..tyFloat128, tyTuple, tyObject,
tyArray, tyArrayConstr}
let
destt = skipTypes(e.typ, abstractRange)
srct = skipTypes(e.sons[1].typ, abstractRange)
if destt.kind in floatTypes or srct.kind in floatTypes:
if destt.kind in ValueTypes or srct.kind in ValueTypes:
# 'cast' and some float type involved? --> use a union.
inc(p.labels)
var lbl = p.labels.rope

View File

@@ -0,0 +1,8 @@
# bug #4345
# only needs to compile
proc f(): tuple[a, b: uint8] = (1'u8, 2'u8)
let a, b = f()
let c = cast[int](b)