summary refs log tree commit diff stats
path: root/tests/pragmas
diff options
context:
space:
mode:
authorJake Leahy <jake@leahy.dev>2023-12-07 18:14:23 +1100
committerGitHub <noreply@github.com>2023-12-07 08:14:23 +0100
commit4fdc6c49bd2a9085d40590bd9ba9696b1e6066d9 (patch)
tree3d5db38ed964eafe21c498323d7b425eb0920c0f /tests/pragmas
parente1a0ff1b8a5b84f4e9e338691b280678bc03f650 (diff)
downloadNim-4fdc6c49bd2a9085d40590bd9ba9696b1e6066d9.tar.gz
Don't process a user pragma if its invalid (#23041)
When running `check`/`suggest` in a file with an invalid user pragma
like
```nim
{.pragma foo: test.}
```
It will continue to try and process it which leads to the compiler
running into a `FieldDefect`
```
fatal.nim(53)            sysFatal
Error: unhandled exception: field 'sons' is not accessible for type 'TNode' using 'kind = nkIdent' [FieldDefect]
```
This makes it instead bail out trying to process the user pragma if its
invalid
Diffstat (limited to 'tests/pragmas')
-rw-r--r--tests/pragmas/tinvalid_user_pragma.nim9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/pragmas/tinvalid_user_pragma.nim b/tests/pragmas/tinvalid_user_pragma.nim
new file mode 100644
index 000000000..3081db842
--- /dev/null
+++ b/tests/pragmas/tinvalid_user_pragma.nim
@@ -0,0 +1,9 @@
+discard """
+cmd: "nim check $file"
+"""
+
+{.pragma test: foo.} #[tt.Error
+^ invalid pragma:  {.pragma, test: foo.} ]#
+
+{.pragma: 1.} #[tt.Error
+^ invalid pragma:  {.pragma: 1.} ]#