summaryrefslogtreecommitdiffstats
path: root/source/compiler-core/slang-source-loc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler-core/slang-source-loc.cpp')
-rw-r--r--source/compiler-core/slang-source-loc.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/source/compiler-core/slang-source-loc.cpp b/source/compiler-core/slang-source-loc.cpp
index 1314d8066..951f7feec 100644
--- a/source/compiler-core/slang-source-loc.cpp
+++ b/source/compiler-core/slang-source-loc.cpp
@@ -191,6 +191,29 @@ void SourceView::addDefaultLineDirective(SourceLoc directiveLoc)
HandleSourceLoc SourceView::getHandleLoc(SourceLoc loc, SourceLocType type)
{
+ auto obfuscatedSourceMap = getSourceFile()->getObfuscatedSourceMap();
+ if (obfuscatedSourceMap)
+ {
+ const Index col = getRange().getOffset(loc);
+
+ const Index entryIndex = obfuscatedSourceMap->findEntry(0, col);
+ if (entryIndex >= 0)
+ {
+ const auto& entry = obfuscatedSourceMap->getEntryByIndex(entryIndex);
+
+ // Generate the HandleSourceLoc
+
+ HandleSourceLoc handleLoc;
+ handleLoc.line = entry.sourceLine + 1;
+ handleLoc.column = entry.sourceColumn + 1;
+
+ auto& managerPool = getSourceManager()->getStringSlicePool();
+
+ handleLoc.pathHandle = managerPool.add(obfuscatedSourceMap->getSourceFileName(entry.sourceFileIndex));
+ return handleLoc;
+ }
+ }
+
const int offset = m_range.getOffset(loc);
// We need the line index from the original source file