summaryrefslogtreecommitdiffstats
path: root/tests/bugs
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2018-01-26 15:30:23 -0800
committerGitHub <noreply@github.com>2018-01-26 15:30:23 -0800
commit06f0effb848c6b938e03da8a61e44b3d032380e8 (patch)
treee575c83fa7a6b277edc069e4f82f910b74ad56db /tests/bugs
parenta050f4a144d5ab36c93cd0a443767340301fb32e (diff)
Fix handling of errors in imported modules (#387)
* Fix handling of errors in imported modules - If a semantic error is detected in an imported module, then don't try to generate IR code for it - Also, if a module (transitively) imports itself, then report that as an error - The way I'm checking for this is a bit hacky (I'm adding the module to the map of loaded modules, but in an "unfinished" state, and then using that unfinished state to detect the import of a module already being imported). This isn't a 100% complete solution for any of the related problems, but it improves the user experience for the common case. * Remove #import test. The feature is slated to be removed, so it isn't worth fixing up this test case.
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/import-with-error-extra.slang11
-rw-r--r--tests/bugs/import-with-error.slang11
-rw-r--r--tests/bugs/import-with-error.slang.expected6
3 files changed, 28 insertions, 0 deletions
diff --git a/tests/bugs/import-with-error-extra.slang b/tests/bugs/import-with-error-extra.slang
new file mode 100644
index 000000000..259f6b5d1
--- /dev/null
+++ b/tests/bugs/import-with-error-extra.slang
@@ -0,0 +1,11 @@
+//TEST_IGNORE_FILE:
+
+// This file exists to be imported.
+//
+// It contains a semantic error that should lead to compilation failure
+// in the module doing the importing.
+
+void broken()
+{
+ int a = b;
+}
diff --git a/tests/bugs/import-with-error.slang b/tests/bugs/import-with-error.slang
new file mode 100644
index 000000000..f50bb1adb
--- /dev/null
+++ b/tests/bugs/import-with-error.slang
@@ -0,0 +1,11 @@
+//TEST:SIMPLE:-use-ir
+
+// Confirm that we correctly issue a diagnostic when
+// we `import` a module that has some errors in it.
+
+import import_with_error_extra;
+
+void main()
+{
+ broken();
+}
diff --git a/tests/bugs/import-with-error.slang.expected b/tests/bugs/import-with-error.slang.expected
new file mode 100644
index 000000000..b71dba0f1
--- /dev/null
+++ b/tests/bugs/import-with-error.slang.expected
@@ -0,0 +1,6 @@
+result code = -1
+standard error = {
+tests/bugs/import-with-error-extra.slang(10): error 30015: undefined identifier 'b'.
+}
+standard output = {
+}