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
This commit is contained in:
parent
3a1109a53b
commit
b24812df5f
18 changed files with 151 additions and 43 deletions
|
|
@ -37,9 +37,9 @@ proc runNimCmd(file, options = "", rtarg = ""): auto =
|
|||
echo cmd
|
||||
echo result[0] & "\n" & $result[1]
|
||||
|
||||
proc runNimCmdChk(file, options = "", rtarg = ""): string =
|
||||
let (ret, status) = runNimCmd(file, options, rtarg = rtarg)
|
||||
doAssert status == 0, $(file, options) & "\n" & ret
|
||||
proc runNimCmdChk(file, options = "", rtarg = "", status = 0): string =
|
||||
let (ret, status2) = runNimCmd(file, options, rtarg = rtarg)
|
||||
doAssert status2 == status, $(file, options, status, status2) & "\n" & ret
|
||||
ret
|
||||
|
||||
proc genShellCmd(filename: string): string =
|
||||
|
|
@ -376,5 +376,15 @@ mused3.nim(13, 8) Warning: imported and not used: 'mused3b' [UnusedImport]
|
|||
mused3.nim(75, 10) Hint: duplicate import of 'mused3a'; previous import here: mused3.nim(74, 10) [DuplicateModuleImport]
|
||||
"""
|
||||
|
||||
block: # FieldDefect
|
||||
proc fn(opt: string, expected: string) =
|
||||
let output = runNimCmdChk("misc/mfield_defect.nim", fmt"-r --warning:all:off --declaredlocs {opt}", status = 1)
|
||||
doAssert expected in output, opt & "\noutput:\n" & output & "expected:\n" & expected
|
||||
fn("-d:case1"): """mfield_defect.nim(25, 15) Error: field 'f2' is not accessible for type 'Foo' [discriminant declared in mfield_defect.nim(14, 8)] using 'kind = k3'"""
|
||||
fn("-d:case2 --gc:refc"): """mfield_defect.nim(25, 15) field 'f2' is not accessible for type 'Foo' [discriminant declared in mfield_defect.nim(14, 8)] using 'kind = k3'"""
|
||||
fn("-d:case1 -b:js"): """mfield_defect.nim(25, 15) Error: field 'f2' is not accessible for type 'Foo' [discriminant declared in mfield_defect.nim(14, 8)] using 'kind = k3'"""
|
||||
fn("-d:case2 -b:js"): """field 'f2' is not accessible for type 'Foo' [discriminant declared in mfield_defect.nim(14, 8)] using 'kind = k3'"""
|
||||
# 3 instead of k3, because of lack of RTTI
|
||||
fn("-d:case2 --gc:arc"): """mfield_defect.nim(25, 15) field 'f2' is not accessible for type 'Foo' [discriminant declared in mfield_defect.nim(14, 8)] using 'kind = 3'"""
|
||||
else:
|
||||
discard # only during debugging, tests added here will run with `-d:nimTestsTrunnerDebugging` enabled
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue