From 31293d61d3ec80198eab2439ec937d7ba37f6722 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Tue, 27 Jun 2017 10:24:25 -0700 Subject: 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. --- tests/front-end/import-exported-a.slang | 5 +++++ tests/front-end/import-exported-b.slang | 5 +++++ tests/front-end/import-exported.slang | 8 ++++++++ 3 files changed, 18 insertions(+) create mode 100644 tests/front-end/import-exported-a.slang create mode 100644 tests/front-end/import-exported-b.slang create mode 100644 tests/front-end/import-exported.slang (limited to 'tests') 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 -- cgit v1.2.3