mirror of
https://github.com/nim-lang/Nim.git
synced 2026-08-29 10:01:39 +00:00
fixes #25419
(cherry picked from commit 40480fe348)
This commit is contained in:
@@ -617,7 +617,7 @@ proc checkDefineType(c: PContext; v: PSym; t: PType) =
|
|||||||
# no distinct types for generic define
|
# no distinct types for generic define
|
||||||
skipped.excl tyDistinct
|
skipped.excl tyDistinct
|
||||||
if t.skipTypes(skipped).kind notin typeKinds:
|
if t.skipTypes(skipped).kind notin typeKinds:
|
||||||
let name =
|
let name =
|
||||||
case v.magic
|
case v.magic
|
||||||
of mStrDefine: "strdefine"
|
of mStrDefine: "strdefine"
|
||||||
of mIntDefine: "intdefine"
|
of mIntDefine: "intdefine"
|
||||||
@@ -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)
|
||||||
@@ -2640,7 +2647,7 @@ proc semProcAux(c: PContext, n: PNode, kind: TSymKind,
|
|||||||
# we need to add a result symbol for them
|
# we need to add a result symbol for them
|
||||||
maybeAddResult(c, s, n)
|
maybeAddResult(c, s, n)
|
||||||
|
|
||||||
|
|
||||||
trackProc(c, s, s.ast[bodyPos])
|
trackProc(c, s, s.ast[bodyPos])
|
||||||
else:
|
else:
|
||||||
if (s.typ.returnType != nil and s.kind != skIterator):
|
if (s.typ.returnType != nil and s.kind != skIterator):
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user