diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-08-13 00:35:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-13 09:35:48 +0200 |
commit | b24812df5f952427c1266e48c40b7956bdf3d999 (patch) | |
tree | 9bbbb23a1446eedb10be7c52fe07013c4b172740 /compiler/astmsgs.nim | |
parent | 3a1109a53be172a92c63ebc5bdb69c45e78e9ca6 (diff) | |
download | Nim-b24812df5f952427c1266e48c40b7956bdf3d999.tar.gz |
properly fix #10053 ; `FieldDefect` msg now shows discriminant value + lineinfo, in all backends (c,vm,js) (#11955)
* fix #10053 FieldError for vm * fixup * FieldError now also shows runtime value of discriminant * fix field error reporting in vm * also report culprit line info in err msg * fix errors for newruntime 2 * fix for js * fixup * PRTEMP4 * works * works * works perfect * refactor * std/private/repr_impl * suppport --gc:arc * cleanup * refactor * simplify * simplify * simplify * fixup * move out compiler.vmgen.genCustom * fixup * fixup * add tests * revert compiler/debugutils.nim * simplify reprDiscriminant * fixup * lib/std/private/repr_impl.nim -> lib/system/repr_impl.nim * try to fix D20210812T165220 * honor --declaredlocs * control toFileLineCol via --declaredlocs
Diffstat (limited to 'compiler/astmsgs.nim')
-rw-r--r-- | compiler/astmsgs.nim | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/astmsgs.nim b/compiler/astmsgs.nim index d9105b761..a9027126a 100644 --- a/compiler/astmsgs.nim +++ b/compiler/astmsgs.nim @@ -26,3 +26,14 @@ proc addDeclaredLoc*(result: var string, conf: ConfigRef; typ: PType) = proc addDeclaredLocMaybe*(result: var string, conf: ConfigRef; typ: PType) = if optDeclaredLocs in conf.globalOptions: addDeclaredLoc(result, conf, typ) + +template quoteExpr*(a: string): untyped = + ## can be used for quoting expressions in error msgs. + "'" & a & "'" + +proc genFieldDefect*(conf: ConfigRef, field: string, disc: PSym): string = + let obj = disc.owner.name.s # `types.typeToString` might be better, eg for generics + result = "field '$#' is not accessible for type '$#'" % [field, obj] + if optDeclaredLocs in conf.globalOptions: + result.add " [discriminant declared in $#]" % toFileLineCol(conf, disc.info) + result.add " using '$# = " % disc.name.s |