summaryrefslogtreecommitdiff
path: root/source/slang/slang-options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-options.cpp')
-rw-r--r--source/slang/slang-options.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp
index ed2424224..72756d360 100644
--- a/source/slang/slang-options.cpp
+++ b/source/slang/slang-options.cpp
@@ -1748,13 +1748,17 @@ SlangResult OptionsParser::_expectInt(const CommandLineArg& initArg, Int& outInt
return SLANG_OK;
}
-SlangResult OptionsParser::addReferencedModule(String path, SourceLoc loc, bool includeEntryPoint)
+SlangResult createArtifactFromReferencedModule(
+ String path,
+ SourceLoc loc,
+ DiagnosticSink* sink,
+ IArtifact** outArtifact)
{
auto desc = ArtifactDescUtil::getDescFromPath(path.getUnownedSlice());
if (desc.kind == ArtifactKind::Unknown)
{
- m_sink->diagnose(loc, Diagnostics::unknownLibraryKind, Path::getPathExt(path));
+ sink->diagnose(loc, Diagnostics::unknownLibraryKind, Path::getPathExt(path));
return SLANG_FAIL;
}
@@ -1772,7 +1776,7 @@ SlangResult OptionsParser::addReferencedModule(String path, SourceLoc loc, bool
if (!ArtifactDescUtil::isLinkable(desc))
{
- m_sink->diagnose(loc, Diagnostics::kindNotLinkable, Path::getPathExt(path));
+ sink->diagnose(loc, Diagnostics::kindNotLinkable, Path::getPathExt(path));
return SLANG_FAIL;
}
@@ -1803,11 +1807,20 @@ SlangResult OptionsParser::addReferencedModule(String path, SourceLoc loc, bool
nullptr);
if (!fileRep->exists())
{
- m_sink->diagnose(loc, Diagnostics::libraryDoesNotExist, path);
+ sink->diagnose(loc, Diagnostics::libraryDoesNotExist, path);
return SLANG_FAIL;
}
}
artifact->addRepresentation(fileRep);
+ *outArtifact = artifact.detach();
+ return SLANG_OK;
+}
+
+SlangResult OptionsParser::addReferencedModule(String path, SourceLoc loc, bool includeEntryPoint)
+{
+ ComPtr<IArtifact> artifact;
+ SLANG_RETURN_ON_FAIL(
+ createArtifactFromReferencedModule(path, loc, m_sink, artifact.writeRef()));
SLANG_RETURN_ON_FAIL(_addLibraryReference(m_requestImpl, path, artifact, includeEntryPoint));
for (Index i = m_rawTranslationUnits.getCount(); i < m_requestImpl->getTranslationUnitCount();