fix #20148 implicit compile time conversion int to ranged float causes compiler fatal error
This commit is contained in:
parent
534c97edc5
commit
a51ed90c5d
2 changed files with 12 additions and 1 deletions
|
|
@ -460,9 +460,12 @@ proc opConv(c: PCtx; dest: var TFullReg, src: TFullReg, desttyp, srctyp: PType):
|
||||||
else: int(src.intVal != 0)
|
else: int(src.intVal != 0)
|
||||||
of tyFloat..tyFloat64:
|
of tyFloat..tyFloat64:
|
||||||
dest.ensureKind(rkFloat)
|
dest.ensureKind(rkFloat)
|
||||||
case skipTypes(srctyp, abstractRange).kind
|
let srcKind = skipTypes(srctyp, abstractRange).kind
|
||||||
|
case srcKind
|
||||||
of tyInt..tyInt64, tyUInt..tyUInt64, tyEnum, tyBool, tyChar:
|
of tyInt..tyInt64, tyUInt..tyUInt64, tyEnum, tyBool, tyChar:
|
||||||
dest.floatVal = toBiggestFloat(src.intVal)
|
dest.floatVal = toBiggestFloat(src.intVal)
|
||||||
|
elif src.kind == rkInt:
|
||||||
|
dest.floatVal = toBiggestFloat(src.intVal)
|
||||||
else:
|
else:
|
||||||
dest.floatVal = src.floatVal
|
dest.floatVal = src.floatVal
|
||||||
of tyObject:
|
of tyObject:
|
||||||
|
|
|
||||||
8
tests/statictypes/t20148.nim
Normal file
8
tests/statictypes/t20148.nim
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
type Percent = range[0.0 .. 1.0]
|
||||||
|
# type Percent = float # using unlimited `float` works fine
|
||||||
|
|
||||||
|
proc initColor*(alpha: Percent): bool =
|
||||||
|
echo alpha
|
||||||
|
|
||||||
|
const moduleInstanceStyle = initColor(1)
|
||||||
|
# let moduleInstanceStyle = initColor(1) # using runtime conversion works fine
|
||||||
Loading…
Add table
Add a link
Reference in a new issue