diff options
| author | Yong He <yonghe@outlook.com> | 2020-08-25 21:55:05 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-25 21:55:05 -0700 |
| commit | b8702dfb6d0e41515fa0f9f899d86b7935dfc3fd (patch) | |
| tree | 302e8e2bd8002de583101046bafeee4c16b2d7b7 /source/slang/slang-check-decl.cpp | |
| parent | 4804753d4a2ec389cc6ecd759f7ea712848fddf0 (diff) | |
Export witness table and RTTI objects in compiled libraries. (#1514)
* Export witness table objects in compiled code.
- Ensure that witness tables are preceeded with `extern "C"` modifier in the generated C++ code.
- RTTI objects use the mangled name of the type directly, so that can be queried using the type's mangled name directly from the resulting DLL.
- Expose `Linkage::getTypeConformanceWitnessMangledName` to return the mangled name of witness tables to the host.
- Ensure that all witness tables (including those for associated types) have proper mangled name.
* Fix GCC error in Slang generated code.
Diffstat (limited to 'source/slang/slang-check-decl.cpp')
| -rw-r--r-- | source/slang/slang-check-decl.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp index f9a514d23..4fa5fff17 100644 --- a/source/slang/slang-check-decl.cpp +++ b/source/slang/slang-check-decl.cpp @@ -2450,6 +2450,7 @@ namespace Slang { witnessTable = new WitnessTable(); witnessTable->baseType = DeclRefType::create(m_astBuilder, interfaceDeclRef); + witnessTable->witnessedType = type; } context->mapInterfaceToWitnessTable.Add(interfaceDeclRef, witnessTable); @@ -3021,6 +3022,7 @@ namespace Slang // RefPtr<WitnessTable> witnessTable = new WitnessTable(); witnessTable->baseType = enumConformanceDecl->base.type; + witnessTable->witnessedType = enumTypeType; enumConformanceDecl->witnessTable = witnessTable; Name* tagAssociatedTypeName = getSession()->getNameObj("__Tag"); |
