Proper check for tyStatic[T] -> U conversions (#10382)
Drop the outer tyStatic shell then perform the check. Fixes #7609
This commit is contained in:
parent
a4cdd25b19
commit
ae5d8fbd9d
2 changed files with 7 additions and 0 deletions
|
|
@ -108,6 +108,8 @@ const
|
||||||
|
|
||||||
proc checkConvertible(c: PContext, castDest, src: PType): TConvStatus =
|
proc checkConvertible(c: PContext, castDest, src: PType): TConvStatus =
|
||||||
result = convOK
|
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:
|
if sameType(castDest, src) and castDest.sym == src.sym:
|
||||||
# don't annoy conversions that may be needed on another processor:
|
# don't annoy conversions that may be needed on another processor:
|
||||||
if castDest.kind notin IntegralTypes+{tyRange}:
|
if castDest.kind notin IntegralTypes+{tyRange}:
|
||||||
|
|
|
||||||
|
|
@ -132,3 +132,8 @@ block:
|
||||||
var x = foo(y, 10, 15, [1, 2, 3])
|
var x = foo(y, 10, 15, [1, 2, 3])
|
||||||
doAssert x == (20, 10, 15, 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]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue