From 1b6cea2219307f6271e131c43d6e8f48910bd435 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 21 Apr 2022 11:03:30 -0700 Subject: Made translation units visible to transitive `import`s. (#2197) --- source/slang/slang.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'source/slang/slang.cpp') diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index 2ddef9e3e..5d4e61cc0 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -960,7 +960,8 @@ SLANG_NO_THROW slang::IModule* SLANG_MCALL Linkage::loadModuleFromSource( PathInfo::makeFromString(moduleName), source, SourceLoc(), - &sink); + &sink, + nullptr); sink.getBlobIfNeeded(outDiagnostics); return asExternal(module); @@ -2003,6 +2004,8 @@ RefPtr createSpecializedGlobalAndEntryPointsComponentType( void FrontEndCompileRequest::checkAllTranslationUnits() { LoadedModuleDictionary loadedModules; + if (additionalLoadedModules) + loadedModules = *additionalLoadedModules; // Iterate over all translation units and // apply the semantic checking logic. @@ -2604,10 +2607,13 @@ RefPtr Linkage::loadModule( const PathInfo& filePathInfo, ISlangBlob* sourceBlob, SourceLoc const& srcLoc, - DiagnosticSink* sink) + DiagnosticSink* sink, + const LoadedModuleDictionary* additionalLoadedModules) { RefPtr frontEndReq = new FrontEndCompileRequest(this, nullptr, sink); + frontEndReq->additionalLoadedModules = additionalLoadedModules; + RefPtr translationUnit = new TranslationUnitRequest(frontEndReq); translationUnit->compileRequest = frontEndReq; translationUnit->moduleName = name; @@ -2767,7 +2773,8 @@ RefPtr Linkage::findOrImportModule( filePathInfo, fileContents, loc, - sink); + sink, + loadedModules); } // -- cgit v1.2.3