summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-mangle.cpp
diff options
context:
space:
mode:
authorDavid Siher <32305650+dsiher@users.noreply.github.com>2022-02-03 19:16:54 -0800
committerGitHub <noreply@github.com>2022-02-03 19:16:54 -0800
commit5eb835f0332868fd56ac14ce7560e0ae9cfafec9 (patch)
tree67ed2ae3b2527e8cfa66f835062490decf3052ad /source/slang/slang-mangle.cpp
parent1eda86377847155ed3f0e0b2e40a105af35bd387 (diff)
Fixed naming conflicts in heterogeneous-hello-world (#2114)
* Fixed naming conflicts in heterogeneous-hello-world Added 3 new modifiers (`__unmangled`, `__exportDirectly`, `__externLib`) `__unmangled` causes mangleName() to return the normal name of the decl. `__exportDirectly` changes parent decl name concatenation behavior to use "::" instead of "." (for Name Hint) and emits the name hint when it exists, otherwise it emits the mangled name. `__externLib` stops Slang from emitting the corresponding struct. Also made necessary changes to heterogeneous-hello-world so that this new functionality is shown off. * Undo unintentional formatting changes Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-mangle.cpp')
-rw-r--r--source/slang/slang-mangle.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/source/slang/slang-mangle.cpp b/source/slang/slang-mangle.cpp
index b0568994f..acb561531 100644
--- a/source/slang/slang-mangle.cpp
+++ b/source/slang/slang-mangle.cpp
@@ -453,12 +453,20 @@ namespace Slang
// forward to something else? E.g., what if we
// are asked to mangle the name of a `typedef`?
+ auto decl = declRef.getDecl();
+
+ // Handle `__unmangled` modifier by simply emitting
+ // the given name.
+ if (decl->hasModifier<UnmangledModifier>())
+ {
+ emit(context, decl->getName()->text);
+ return;
+ }
+
// We will start with a unique prefix to avoid
// clashes with user-defined symbols:
emitRaw(context, "_S");
- auto decl = declRef.getDecl();
-
// Next we will add a bit of info to register
// the *kind* of declaration we are dealing with.
//