fixes #25419; lift magic types to typeclasses (#25421)

fixes #25419

(cherry picked from commit 40480fe348)
This commit is contained in:
ringabout
2026-01-14 23:25:52 +08:00
committed by narimiran
parent c022120ebb
commit 97c160271c
2 changed files with 19 additions and 2 deletions

View File

@@ -1829,6 +1829,13 @@ proc typeSectionFinalPass(c: PContext, n: PNode) =
x[0].kind in {nkObjectTy, nkTupleTy}) x[0].kind in {nkObjectTy, nkTupleTy})
): ):
checkForMetaFields(c, baseType.n, hasError) checkForMetaFields(c, baseType.n, hasError)
if s.typ.kind in {tySet, tyArray, tySequence, tyUncheckedArray} 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: if not hasError:
checkConstructedType(c.config, s.info, s.typ) checkConstructedType(c.config, s.info, s.typ)
#instAllTypeBoundOp(c, n.info) #instAllTypeBoundOp(c, n.info)

View File

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