Skip to content

Commit

Permalink
fixes #18565 (#18593)
Browse files Browse the repository at this point in the history
* fixes #18565
  • Loading branch information
Araq authored Jul 27, 2021
1 parent 9cb5ab0 commit fa02096
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 12 deletions.
22 changes: 11 additions & 11 deletions compiler/semstmts.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2260,20 +2260,20 @@ proc semStmtList(c: PContext, n: PNode, flags: TExprFlags): PNode =
# nkNilLit, nkEmpty}:
# dec last
for i in 0..<n.len:
var expr = semExpr(c, n[i], flags)
n[i] = expr
if c.matchedConcept != nil and expr.typ != nil and
var x = semExpr(c, n[i], flags)
n[i] = x
if c.matchedConcept != nil and x.typ != nil and
(nfFromTemplate notin n.flags or i != last):
case expr.typ.kind
case x.typ.kind
of tyBool:
if expr.kind == nkInfix and
expr[0].kind == nkSym and
expr[0].sym.name.s == "==":
if expr[1].typ.isUnresolvedStatic:
inferConceptStaticParam(c, expr[1], expr[2])
if x.kind == nkInfix and
x[0].kind == nkSym and
x[0].sym.name.s == "==":
if x[1].typ.isUnresolvedStatic:
inferConceptStaticParam(c, x[1], x[2])
continue
elif expr[2].typ.isUnresolvedStatic:
inferConceptStaticParam(c, expr[2], expr[1])
elif x[2].typ.isUnresolvedStatic:
inferConceptStaticParam(c, x[2], x[1])
continue

let verdict = semConstExpr(c, n[i])
Expand Down
4 changes: 3 additions & 1 deletion compiler/sigmatch.nim
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,7 @@ proc procTypeRel(c: var TCandidate, f, a: PType): TTypeRelation =
return isNone
elif a[0] != nil:
return isNone

result = getProcConvMismatch(c.c.config, f, a, result)[1]

when useEffectSystem:
Expand Down Expand Up @@ -2272,6 +2272,8 @@ proc prepareOperand(c: PContext; formal: PType; a: PNode): PNode =
else:
result = a
considerGenSyms(c, result)
if result.kind != nkHiddenDeref and result.typ.kind in {tyVar, tyLent} and c.matchedConcept == nil:
result = newDeref(result)

proc prepareOperand(c: PContext; a: PNode): PNode =
if a.typ.isNil:
Expand Down
17 changes: 17 additions & 0 deletions tests/arc/tkeys_lent.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
discard """
output: '''{"string": 2}'''
cmd: "nim c --gc:orc $file"
"""

import tables

proc use(x: int) = echo x

proc main =
var tab = {"string": 1}.toTable
for keyAAA in tab.keys():
template alias(): untyped = tab[keyAAA]
alias() = 2
echo tab

main()
1 change: 1 addition & 0 deletions tests/stdlib/tgetfileinfo.nim
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
discard """
output: "pcDir\npcFile\npcLinkToDir\npcLinkToFile\n"
joinable: false
"""

import os, strutils
Expand Down
1 change: 1 addition & 0 deletions tests/stdlib/tos.nim
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ __really_obscure_dir_name/test
Raises
Raises
'''
joinable: false
"""
# test os path creation, iteration, and deletion

Expand Down

0 comments on commit fa02096

Please sign in to comment.