diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/lineinfos.nim | 12 | ||||
-rw-r--r-- | compiler/msgs.nim | 7 | ||||
-rw-r--r-- | compiler/semexprs.nim | 9 |
3 files changed, 20 insertions, 8 deletions
diff --git a/compiler/lineinfos.nim b/compiler/lineinfos.nim index e1e0a4bc8..bb47e947f 100644 --- a/compiler/lineinfos.nim +++ b/compiler/lineinfos.nim @@ -13,7 +13,17 @@ import ropes, tables, pathutils const - explanationsBaseUrl* = "https://nim-lang.org/docs" + explanationsBaseUrl* = "https://nim-lang.github.io/Nim" + # was: "https://nim-lang.org/docs" but we're now usually showing devel docs + # instead of latest release docs. + +proc createDocLink*(urlSuffix: string): string = + # os.`/` is not appropriate for urls. + result = explanationsBaseUrl + if urlSuffix.len > 0 and urlSuffix[0] == '/': + result.add urlSuffix + else: + result.add "/" & urlSuffix type TMsgKind* = enum diff --git a/compiler/msgs.nim b/compiler/msgs.nim index a26aa0a3c..1b7be46b8 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -385,9 +385,10 @@ proc quit(conf: ConfigRef; msg: TMsgKind) {.gcsafe.} = if stackTraceAvailable() and isNil(conf.writelnHook): writeStackTrace() else: - styledMsgWriteln(fgRed, "No stack traceback available\n" & - "To create a stacktrace, rerun compilation with ./koch temp " & - conf.command & " <file>") + styledMsgWriteln(fgRed, """ +No stack traceback available +To create a stacktrace, rerun compilation with './koch temp $1 <file>', see $2 for details""" % + [conf.command, "intern.html#debugging-the-compiler".createDocLink]) quit 1 proc handleError(conf: ConfigRef; msg: TMsgKind, eh: TErrorHandling, s: string) = diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 43fd1b69c..e29101385 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -1572,12 +1572,13 @@ proc takeImplicitAddr(c: PContext, n: PNode; isLent: bool): PNode = # return a view into the first argument (if there is one): let root = exprRoot(n) if root != nil and root.owner == c.p.owner: + template url: string = "var_t_return.html".createDocLink if root.kind in {skLet, skVar, skTemp} and sfGlobal notin root.flags: - localError(c.config, n.info, "'$1' escapes its stack frame; context: '$2'; see $3/var_t_return.html" % [ - root.name.s, renderTree(n, {renderNoComments}), explanationsBaseUrl]) + localError(c.config, n.info, "'$1' escapes its stack frame; context: '$2'; see $3" % [ + root.name.s, renderTree(n, {renderNoComments}), url]) elif root.kind == skParam and root.position != 0: - localError(c.config, n.info, "'$1' is not the first parameter; context: '$2'; see $3/var_t_return.html" % [ - root.name.s, renderTree(n, {renderNoComments}), explanationsBaseUrl]) + localError(c.config, n.info, "'$1' is not the first parameter; context: '$2'; see $3" % [ + root.name.s, renderTree(n, {renderNoComments}), url]) case n.kind of nkHiddenAddr, nkAddr: return n of nkDerefExpr: return n[0] |