From ebd1cc0265bd2b9fa071b0649183f14def0f307b Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 23 Jun 2020 10:58:55 +0200 Subject: [PATCH] minor bugfixes for 'func' and .borrow --- compiler/ast.nim | 2 +- compiler/semcall.nim | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/ast.nim b/compiler/ast.nim index 66a1a253b9..40fd402091 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -1756,7 +1756,7 @@ proc isRoutine*(s: PSym): bool {.inline.} = proc isCompileTimeProc*(s: PSym): bool {.inline.} = result = s.kind == skMacro or - s.kind == skProc and sfCompileTime in s.flags + s.kind in {skProc, skFunc} and sfCompileTime in s.flags proc isRunnableExamples*(n: PNode): bool = # Templates and generics don't perform symbol lookups. diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 405de52eec..0d8f0ae8b2 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -682,7 +682,8 @@ proc searchForBorrowProc(c: PContext, startScope: PScope, fn: PSym): PSym = x = t.baseOfDistinct call.add(newNodeIT(nkEmpty, fn.info, x)) if hasDistinct: - var resolved = semOverloadedCall(c, call, call, {fn.kind}, {}) + let filter = if fn.kind in {skProc, skFunc}: {skProc, skFunc} else: {fn.kind} + var resolved = semOverloadedCall(c, call, call, filter, {}) if resolved != nil: result = resolved[0].sym if not compareTypes(result.typ[0], fn.typ[0], dcEqIgnoreDistinct):