diff options
author | Danil Yarantsev <tiberiumk12@gmail.com> | 2020-06-01 16:06:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-01 15:06:45 +0200 |
commit | 00ec43305e51c4b3c0fc4f288a775f90189a4a7c (patch) | |
tree | e890e9a49bf8efe3137c7a29bdf7348c22159e2e | |
parent | 5900d8442c6bf41bfaab02ae877ebf23680680bb (diff) | |
download | Nim-00ec43305e51c4b3c0fc4f288a775f90189a4a7c.tar.gz |
Fix `compiles` for nimsuggest [backport] (#14527)
* Handle nimsuggest in tryExpr * Added test
-rw-r--r-- | compiler/semexprs.nim | 7 | ||||
-rw-r--r-- | nimsuggest/tests/tchk_compiles.nim | 8 |
2 files changed, 15 insertions, 0 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index c5b864d1f..72d407cf7 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -2062,6 +2062,10 @@ proc semQuoteAst(c: PContext, n: PNode): PNode = proc tryExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode = # watch out, hacks ahead: + when defined(nimsuggest): + # Remove the error hook so nimsuggest doesn't report errors there + let tempHook = c.graph.config.structuredErrorHook + c.graph.config.structuredErrorHook = nil let oldErrorCount = c.config.errorCounter let oldErrorMax = c.config.errorMax let oldCompilesId = c.compilesContextId @@ -2111,6 +2115,9 @@ proc tryExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode = c.config.m.errorOutputs = oldErrorOutputs c.config.errorCounter = oldErrorCount c.config.errorMax = oldErrorMax + when defined(nimsuggest): + # Restore the error hook + c.graph.config.structuredErrorHook = tempHook proc semCompiles(c: PContext, n: PNode, flags: TExprFlags): PNode = # we replace this node by a 'true' or 'false' node: diff --git a/nimsuggest/tests/tchk_compiles.nim b/nimsuggest/tests/tchk_compiles.nim new file mode 100644 index 000000000..887a947b5 --- /dev/null +++ b/nimsuggest/tests/tchk_compiles.nim @@ -0,0 +1,8 @@ +discard compiles(2 + "hello") + +#[!]# +discard """ +$nimsuggest --tester $file +>chk $1 +chk;;skUnknown;;;;Hint;;???;;0;;-1;;"tchk_compiles [Processing]";;0 +""" |