mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 07:43:26 +00:00
new 'var T' error messages with hyperlinks; closes #7373
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
import
|
||||
options, strutils, os, tables, ropes, platform, terminal, macros
|
||||
|
||||
const
|
||||
explanationsBaseUrl* = "https://nim-lang.org/docs/manual"
|
||||
|
||||
type
|
||||
TMsgKind* = enum
|
||||
errUnknown, errInternal, errIllFormedAstX, errCannotOpenFile, errGenerated,
|
||||
|
||||
@@ -1342,11 +1342,11 @@ proc takeImplicitAddr(c: PContext, n: PNode; isLent: bool): PNode =
|
||||
let root = exprRoot(n)
|
||||
if root != nil and root.owner == c.p.owner:
|
||||
if root.kind in {skLet, skVar, skTemp} and sfGlobal notin root.flags:
|
||||
localError(n.info, "'$1' escapes its stack frame; context: '$2'" % [
|
||||
root.name.s, renderTree(n, {renderNoComments})])
|
||||
localError(n.info, "'$1' escapes its stack frame; context: '$2'; see $3/var_t_return.html" % [
|
||||
root.name.s, renderTree(n, {renderNoComments}), explanationsBaseUrl])
|
||||
elif root.kind == skParam and root.position != 0:
|
||||
localError(n.info, "'$1' is not the first parameter; context: '$2'" % [
|
||||
root.name.s, renderTree(n, {renderNoComments})])
|
||||
localError(n.info, "'$1' is not the first parameter; context: '$2'; see $3/var_t_return.html" % [
|
||||
root.name.s, renderTree(n, {renderNoComments}), explanationsBaseUrl])
|
||||
case n.kind
|
||||
of nkHiddenAddr, nkAddr: return n
|
||||
of nkHiddenDeref, nkDerefExpr: return n.sons[0]
|
||||
|
||||
Reference in New Issue
Block a user