fixes #25419; lift magic types to typeclasses

This commit is contained in:
ringabout
2026-01-08 20:55:10 +08:00
parent b3273e732d
commit 1d94d60c7b
2 changed files with 17 additions and 0 deletions

View File

@@ -1845,6 +1845,13 @@ proc typeSectionFinalPass(c: PContext, n: PNode) =
let baseType = s.typ.safeSkipTypes(abstractPtrs)
if baseType.kind in {tyObject, tyTuple} and not baseType.n.isNil:
checkForMetaFields(c, baseType.n, hasError)
if s.typ.kind in {tySet, tyArray, tySequence} and s.typ.elementType.kind == tyNone:
# magic generics are not filled but tyNone is added to its elements by default,
# we lift them to tyBuiltInTypeClass here
s.typ = newTypeS(tyBuiltInTypeClass, c,
newTypeS(s.typ.kind, c))
if not hasError:
checkConstructedType(c.config, s.info, s.typ)
#instAllTypeBoundOp(c, n.info)

View File

@@ -116,3 +116,13 @@ block:
s(something)
s(otherthing, something)
s(something, otherthing)
block:
type
Test = set
Test2 = seq
Test3 = array
doAssert set is Test
doAssert seq is Test2
doAssert array is Test3