summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-06-27 10:24:25 -0700
committerTim Foley <tfoley@nvidia.com>2017-06-27 10:24:25 -0700
commit31293d61d3ec80198eab2439ec937d7ba37f6722 (patch)
tree5d58272d219064234c6e90d7271caef5e118a77d /tests
parent1716208fb62a7f0a8bbe55e597b582066cb51731 (diff)
Allow for re-export of an `import` declaration
If module `A.slang` contains `__exported __import B;` then any declarations from `B.slang` will be visible to any client code that does `__import A;`. This allows a user to make a single "umbrella" file that encompases a bunch of code files. Note that this really only affects scoping during Slang compilation/checking; at code generation time everything always gets emitted as raw HLSL/GLSL so that names will be visible whether we want them to be or not.
Diffstat (limited to 'tests')
-rw-r--r--tests/front-end/import-exported-a.slang5
-rw-r--r--tests/front-end/import-exported-b.slang5
-rw-r--r--tests/front-end/import-exported.slang8
3 files changed, 18 insertions, 0 deletions
diff --git a/tests/front-end/import-exported-a.slang b/tests/front-end/import-exported-a.slang
new file mode 100644
index 000000000..b624241e5
--- /dev/null
+++ b/tests/front-end/import-exported-a.slang
@@ -0,0 +1,5 @@
+//TEST_IGNORE_FILE:
+
+// This file imports other code, and re-exports it to clients of this module.
+
+__exported __import import_exported_b; \ No newline at end of file
diff --git a/tests/front-end/import-exported-b.slang b/tests/front-end/import-exported-b.slang
new file mode 100644
index 000000000..144f62060
--- /dev/null
+++ b/tests/front-end/import-exported-b.slang
@@ -0,0 +1,5 @@
+//TEST_IGNORE_FILE:
+
+// This file defines the code that will be (transitively) imported into `import-exported.slang`
+
+float foo(float x) { return x; } \ No newline at end of file
diff --git a/tests/front-end/import-exported.slang b/tests/front-end/import-exported.slang
new file mode 100644
index 000000000..7c2d911dd
--- /dev/null
+++ b/tests/front-end/import-exported.slang
@@ -0,0 +1,8 @@
+//TEST:SIMPLE:
+
+// Confirming that we can use a re-exported function
+
+// `a` imports `b` (which defines `foo`) and re-exports it
+__import import_exported_a;
+
+float bar(float x) { return foo(x); } \ No newline at end of file