From 4f1725ad612da267fb9d70d209fe7b06a8a1c337 Mon Sep 17 00:00:00 2001 From: PMunch Date: Thu, 12 Apr 2018 20:02:04 +0200 Subject: [PATCH] Add column number to instantiation info (#7376) * Add column number to instantiation info Instantiation info left out column number for no good reason. This adds it in as the third element of the tuple. * Fix test that failed and added change to changelog An assertion test failed because it was declaring a type that was expected to be populated by instantiationInfo with the old signature. Also added the changes to the changelog as it is a breaking change. --- changelog.md | 2 ++ compiler/semmagic.nim | 3 +++ lib/system.nim | 2 +- tests/assert/tfailedassert.nim | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 689c6d2533..412c55fca9 100644 --- a/changelog.md +++ b/changelog.md @@ -8,6 +8,8 @@ - ``re.split`` for empty regular expressions now yields every character in the string which is what other programming languages chose to do. +- The returned tuple of ``system.instantiationInfo`` now has a third field + containing the column of the instantiation. - ``cookies.setCookie` no longer assumes UTC for the expiration date. diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim index 189babdecf..9031e46402 100644 --- a/compiler/semmagic.nim +++ b/compiler/semmagic.nim @@ -81,8 +81,11 @@ proc semInstantiationInfo(c: PContext, n: PNode): PNode = filename.strVal = if useFullPaths != 0: info.toFullPath else: info.toFilename var line = newNodeIT(nkIntLit, n.info, getSysType(tyInt)) line.intVal = toLinenumber(info) + var column = newNodeIT(nkIntLit, n.info, getSysType(tyInt)) + column.intVal = toColumn(info) result.add(filename) result.add(line) + result.add(column) proc toNode(t: PType, i: TLineInfo): PNode = result = newNodeIT(nkType, i, t) diff --git a/lib/system.nim b/lib/system.nim index 3b22e9169c..5aeddaf399 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -3737,7 +3737,7 @@ proc astToStr*[T](x: T): string {.magic: "AstToStr", noSideEffect.} ## for debugging. proc instantiationInfo*(index = -1, fullPaths = false): tuple[ - filename: string, line: int] {. magic: "InstantiationInfo", noSideEffect.} + filename: string, line: int, column: int] {. magic: "InstantiationInfo", noSideEffect.} ## provides access to the compiler's instantiation stack line information ## of a template. ## diff --git a/tests/assert/tfailedassert.nim b/tests/assert/tfailedassert.nim index f0ca149f8d..8b260a3ab9 100644 --- a/tests/assert/tfailedassert.nim +++ b/tests/assert/tfailedassert.nim @@ -8,7 +8,7 @@ tfailedassert.nim:27 false assertion from foo """ type - TLineInfo = tuple[filename: string, line: int] + TLineInfo = tuple[filename: string, line: int, column: int] TMyError = object of Exception lineinfo: TLineInfo