diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2023-04-17 15:09:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-17 15:09:37 -0400 |
| commit | 90a9f43573ec0777c2ae4fa20c8fdc51a4ae7b3a (patch) | |
| tree | 360750778be872a086674024a9ce5a68bf4e7cb3 /source/slang/slang-compiler.cpp | |
| parent | a3f622ace1bdef1f1a4150ec85d1328d1a589333 (diff) | |
Round trip source map (#2810)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Make output of obfuscation locs work in a slang-module.
* Tidy up detection for writing serialized source locs.
* Support for .zip references.
Handling of obfuscated source maps read from containers.
A test to check obfuscated source map working on a module.
* When using obfuscation, always obfuscate locs instead of stripping them. We keep a source map, so we can still produce reasonable errors.
* Write out source locs if debug information is enabled.
* Check output without sourcemap.
* Small fixes.
* Small improvements around hash calculation for source map name.
* Disable test that fails on x86 gcc linux for now.
* Fix issues around obfuscated source map using lines rather than columns.
Fix some issues around encoding/decoding.
* Make column calculation of source locs take into account utf8/tabs.
Don't special case obfuscated source map for lookup for source loc.
* Support following multiple source maps.
* Small fixes/improvements around SourceMap lookup.
Diffstat (limited to 'source/slang/slang-compiler.cpp')
| -rw-r--r-- | source/slang/slang-compiler.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp index 43a6d238e..becd65596 100644 --- a/source/slang/slang-compiler.cpp +++ b/source/slang/slang-compiler.cpp @@ -1812,6 +1812,19 @@ namespace Slang } + bool _shouldWriteSourceLocs(Linkage* linkage) + { + // If debug information or source manager are not avaiable we can't/shouldn't write out locs + if (linkage->debugInfoLevel == DebugInfoLevel::None || + linkage->getSourceManager() == nullptr) + { + return false; + } + + // Otherwise we do want to write out the locs + return true; + } + SlangResult EndToEndCompileRequest::writeContainerToStream(Stream* stream) { auto linkage = getLinkage(); @@ -1827,7 +1840,9 @@ namespace Slang // Also currently only IR is needed. options.optionFlags &= ~SerialOptionFlag::ASTModule; } - else if (linkage->debugInfoLevel != DebugInfoLevel::None && linkage->getSourceManager()) + + // If debug information is enabled, enable writing out source locs + if (_shouldWriteSourceLocs(linkage)) { options.optionFlags |= SerialOptionFlag::SourceLocation; options.sourceManager = linkage->getSourceManager(); @@ -1897,7 +1912,8 @@ namespace Slang auto sourceMap = translationUnit->getModule()->getIRModule()->getObfuscatedSourceMap(); - if (sourceMap) + // If we have a source map *and* we want to generate them for output add to the container + if (sourceMap && getLinkage()->m_generateSourceMap) { // Write it out String json; |
