diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-08-11 16:12:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-11 10:12:00 +0200 |
commit | 2a2474d395afb58ef71897530ff334f4725514b4 (patch) | |
tree | 1c2ba1f5ac0ba5ac657cf34079d7b7d6e043c655 /compiler | |
parent | d164f87fbc7a4f5d936dd5169c71bf30f0b29b5d (diff) | |
download | Nim-2a2474d395afb58ef71897530ff334f4725514b4.tar.gz |
fixes #23902; Compiler infers sink in return type from auto (#23904)
fixes #23902
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/semexprs.nim | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 54a844035..c1e74b457 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -2003,7 +2003,7 @@ proc semAsgn(c: PContext, n: PNode; mode=asgnNormal): PNode = if rhsTyp.kind in tyUserTypeClasses and rhsTyp.isResolvedUserTypeClass: rhsTyp = rhsTyp.last if lhs.sym.typ.kind == tyAnything: - rhsTyp = rhsTyp.skipIntLit(c.idgen) + rhsTyp = rhsTyp.skipTypes({tySink}).skipIntLit(c.idgen) if cmpTypes(c, lhs.typ, rhsTyp) in {isGeneric, isEqual}: internalAssert c.config, c.p.resultSym != nil # Make sure the type is valid for the result variable @@ -2825,7 +2825,7 @@ proc semTupleFieldsConstr(c: PContext, n: PNode, flags: TExprFlags; expectedType n[i][1].typ = errorType(c) var f = newSymS(skField, n[i][0], c) - f.typ = skipIntLit(n[i][1].typ, c.idgen) + f.typ = skipIntLit(n[i][1].typ.skipTypes({tySink}), c.idgen) f.position = i rawAddSon(typ, f.typ) typ.n.add newSymNode(f) @@ -2851,7 +2851,7 @@ proc semTuplePositionsConstr(c: PContext, n: PNode, flags: TExprFlags; expectedT # `const foo = [(1, {}), (2, {false})]`, # `const foo = if true: (0, nil) else: (1, new(int))` n[i] = fitNode(c, expectedElemType, n[i], n[i].info) - addSonSkipIntLit(typ, n[i].typ, c.idgen) + addSonSkipIntLit(typ, n[i].typ.skipTypes({tySink}), c.idgen) result.typ = typ include semobjconstr |