diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-06-11 22:07:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-11 22:07:15 +0200 |
commit | 7ee6b6c5f8363c8b2c091f1203e4aa637e0d6304 (patch) | |
tree | cc7e258fce8cca64f1ef84c8172df7e630d10fab | |
parent | c1a553a2a9b670b45608637a29b9cb0b3cf89dac (diff) | |
parent | 6c8b06b2a38b41559c5387d98d3bf1429e936236 (diff) | |
download | Nim-7ee6b6c5f8363c8b2c091f1203e4aa637e0d6304.tar.gz |
Merge pull request #4310 from Parashurama/long_stack_trace
adds --excessiveStackTrace:on|off flag for nim
-rw-r--r-- | compiler/commands.nim | 1 | ||||
-rw-r--r-- | compiler/msgs.nim | 8 | ||||
-rw-r--r-- | compiler/options.nim | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/compiler/commands.nim b/compiler/commands.nim index 3bc0b604a..5601ef662 100644 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -409,6 +409,7 @@ proc processSwitch(switch, arg: string, pass: TCmdLinePass, info: TLineInfo) = if processOnOffSwitchOrList({optHints}, arg, pass, info): listHints() of "threadanalysis": processOnOffSwitchG({optThreadAnalysis}, arg, pass, info) of "stacktrace": processOnOffSwitch({optStackTrace}, arg, pass, info) + of "excessivestacktrace": processOnOffSwitchG({optExcessiveStackTrace}, arg, pass, info) of "linetrace": processOnOffSwitch({optLineTrace}, arg, pass, info) of "debugger": case arg.normalize diff --git a/compiler/msgs.nim b/compiler/msgs.nim index 3606bdd12..ce9d8c8b6 100644 --- a/compiler/msgs.nim +++ b/compiler/msgs.nim @@ -471,6 +471,8 @@ type shortName*: string # short name of the module quotedName*: Rope # cached quoted short name for codegen # purposes + quotedFullName*: Rope # cached quoted full name for codegen + # purposes lines*: seq[Rope] # the source code of the module # used for better error messages and @@ -563,6 +565,7 @@ proc newFileInfo(fullPath, projPath: string): TFileInfo = let fileName = projPath.extractFilename result.shortName = fileName.changeFileExt("") result.quotedName = fileName.makeCString + result.quotedFullName = fullPath.makeCString if optEmbedOrigSrc in gGlobalOptions or true: result.lines = @[] @@ -1024,7 +1027,10 @@ proc sourceLine*(i: TLineInfo): Rope = proc quotedFilename*(i: TLineInfo): Rope = internalAssert i.fileIndex >= 0 - result = fileInfos[i.fileIndex].quotedName + if optExcessiveStackTrace in gGlobalOptions: + result = fileInfos[i.fileIndex].quotedFullName + else: + result = fileInfos[i.fileIndex].quotedName ropes.errorHandler = proc (err: RopesError, msg: string, useWarning: bool) = case err diff --git a/compiler/options.nim b/compiler/options.nim index 3ef6c6c46..7797a4c82 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -67,6 +67,8 @@ type # please make sure we have under 32 options optIdeDebug # idetools: debug mode optIdeTerse # idetools: use terse descriptions optNoCppExceptions # use C exception handling even with CPP + optExcessiveStackTrace # fully qualified module filenames + TGlobalOptions* = set[TGlobalOption] TCommands* = enum # Nim's commands # **keep binary compatible** |