Proper check for tyStatic[T] -> U conversions (#10382)

Drop the outer tyStatic shell then perform the check.

Fixes #7609
This commit is contained in:
LemonBoy
2019-01-21 17:27:36 +01:00
committed by Andreas Rumpf
parent a4cdd25b19
commit ae5d8fbd9d
2 changed files with 7 additions and 0 deletions

View File

@@ -108,6 +108,8 @@ const
proc checkConvertible(c: PContext, castDest, src: PType): TConvStatus =
result = convOK
# We're interested in the inner type and not in the static tag
var src = src.skipTypes({tyStatic})
if sameType(castDest, src) and castDest.sym == src.sym:
# don't annoy conversions that may be needed on another processor:
if castDest.kind notin IntegralTypes+{tyRange}:

View File

@@ -132,3 +132,8 @@ block:
var x = foo(y, 10, 15, [1, 2, 3])
doAssert x == (20, 10, 15, 3)
# #7609
block:
type
Coord[N: static[int]] = tuple[col, row: range[0'i8 .. (N.int8-1)]]
Point[N: static[int]] = range[0'i16 .. N.int16 * N.int16 - 1]