mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
Fix subranges of distinct types (#18816) [backport]
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user