Fix subranges of distinct types (#18816) [backport]

This commit is contained in:
Jason Beetham
2021-09-07 09:11:08 -06:00
committed by GitHub
parent 30d28bcefc
commit ee2eb5cae2
2 changed files with 15 additions and 1 deletions

View File

@@ -124,7 +124,7 @@ proc typeAllowedAux(marker: var IntSet, typ: PType, kind: TSymKind,
result = typeAllowedAux(marker, lastSon(t), kind, c, flags)
of tyRange:
if skipTypes(t[0], abstractInst-{tyTypeDesc}).kind notin
{tyChar, tyEnum, tyInt..tyFloat128, tyInt..tyUInt64}: result = t
{tyChar, tyEnum, tyInt..tyFloat128, tyInt..tyUInt64, tyRange}: result = t
of tyOpenArray:
# you cannot nest openArrays/sinks/etc.
if (kind != skParam or taIsOpenArray in flags) and views notin c.features:

View File

@@ -167,6 +167,20 @@ template main() =
s.Foo.add('c')
doAssert s.string == "c" # was failing
test()
block: #18061
type
A = distinct (0..100)
B = A(0) .. A(10)
proc test(b: B) = discard
let
a = A(10)
b = B(a)
test(b)
proc test(a: A) = discard
discard cast[B](A(1))
var c: B
static: main()
main()