diff options
-rw-r--r-- | compiler/procfind.nim | 4 | ||||
-rw-r--r-- | compiler/types.nim | 9 | ||||
-rw-r--r-- | tests/modules/tmismatchedvisibility.nim | 2 |
3 files changed, 8 insertions, 7 deletions
diff --git a/compiler/procfind.nim b/compiler/procfind.nim index 55c8bb78c..f2f58fb75 100644 --- a/compiler/procfind.nim +++ b/compiler/procfind.nim @@ -72,8 +72,8 @@ proc searchForProcNew(c: PContext, scope: PScope, fn: PSym): PSym = of paramsEqual: if (sfExported notin result.flags) and (sfExported in fn.flags): let message = ("public implementation '$1' has non-public " & - "forward declaration in $2") % - [getProcHeader(c.config, result), c.config$result.info] + "forward declaration at $2") % + [getProcHeader(c.config, result, getDeclarationPath = false), c.config$result.info] localError(c.config, fn.info, message) return of paramsIncompatible: diff --git a/compiler/types.nim b/compiler/types.nim index 11006de30..61fbffd60 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -119,7 +119,7 @@ proc isIntLit*(t: PType): bool {.inline.} = proc isFloatLit*(t: PType): bool {.inline.} = result = t.kind == tyFloat and t.n != nil and t.n.kind == nkFloatLit -proc getProcHeader*(conf: ConfigRef; sym: PSym; prefer: TPreferedDesc = preferName): string = +proc getProcHeader*(conf: ConfigRef; sym: PSym; prefer: TPreferedDesc = preferName; getDeclarationPath = true): string = assert sym != nil result = sym.owner.name.s & '.' & sym.name.s if sym.kind in routineKinds: @@ -137,9 +137,10 @@ proc getProcHeader*(conf: ConfigRef; sym: PSym; prefer: TPreferedDesc = preferNa add(result, ')') if n.sons[0].typ != nil: result.add(": " & typeToString(n.sons[0].typ, prefer)) - result.add " [declared in " - result.add(conf$sym.info) - result.add "]" + if getDeclarationPath: + result.add " [declared in " + result.add(conf$sym.info) + result.add "]" proc elemType*(t: PType): PType = assert(t != nil) diff --git a/tests/modules/tmismatchedvisibility.nim b/tests/modules/tmismatchedvisibility.nim index a61b28071..b649a5a3e 100644 --- a/tests/modules/tmismatchedvisibility.nim +++ b/tests/modules/tmismatchedvisibility.nim @@ -1,5 +1,5 @@ discard """ - errormsg: "public implementation 'tmismatchedvisibility.foo(a: int) [declared in tmismatchedvisibility.nim(6, 6)]' has non-public forward declaration in " + errormsg: "public implementation 'tmismatchedvisibility.foo(a: int)' has non-public forward declaration at " line: 8 """ |