diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-11-18 18:12:43 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-18 18:12:43 -0500 |
| commit | e140c4950eb8c69606386ca57284c0655513b9e1 (patch) | |
| tree | 1361dcf8cfc1597b63960226006af301ac82bfc6 /source/slangc/main.cpp | |
| parent | d898d561e3c76ecf38db434ec7fbb4bbd0e25cb2 (diff) | |
Test for serializing out and reading back Stdlib (#1605)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Mangling/module name extraction for GenericDecl
* Add comment on SerialFilter to explain re-enabling Stmt.
* Support setting up SyntaxDecl when reconstructed after deserialization.
* Improvements to setup SyntaxDecl.
* Fix typo so can read compressed SourceLocs.
* Fix issue with SourceManger.
* Simple test for serializing out stdlib and reading back in.
* Fix calling convention.
* Add override to StdLib impls.
* Fix typo.
* Apply testing to an actual compute test when using load-stdlib
Make -load/compile-stdlib processable by Slang
Move out testing into util into TestToolUtil so can be shared.
* Slightly more concise setup of session.
* Fix some errors introduced with session handling.
* Made setup for compile same across slangc and slangc-tool.
Diffstat (limited to 'source/slangc/main.cpp')
| -rw-r--r-- | source/slangc/main.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/source/slangc/main.cpp b/source/slangc/main.cpp index 9f4ffcaff..887eca77a 100644 --- a/source/slangc/main.cpp +++ b/source/slangc/main.cpp @@ -66,10 +66,28 @@ static SlangResult _compile(SlangCompileRequest* compileRequest, int argc, const return res; } -SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv) +SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, slang::IGlobalSession* sharedSession, int argc, const char*const* argv) { StdWriters::setSingleton(stdWriters); + // Assume we will used the shared session + ComPtr<slang::IGlobalSession> session(sharedSession); + + // The sharedSession always has a pre-loaded stdlib, is sharedSession is not nullptr. + // This differed test checks if the command line has an option to setup the stdlib. + // If so we *don't* use the sharedSession, and create a new stdlib-less session just for this compilation. + if (TestToolUtil::hasDeferredStdLib(Index(argc - 1), argv + 1)) + { + SLANG_RETURN_ON_FAIL(slang_createGlobalSessionWithoutStdLib(SLANG_API_VERSION, session.writeRef())); + TestToolUtil::setSessionDefaultPreludeFromExePath(argv[0], session); + } + else if (!session) + { + // Just create the global session in the regular way if there isn't one set + SLANG_RETURN_ON_FAIL(slang_createGlobalSession(SLANG_API_VERSION, session.writeRef())); + TestToolUtil::setSessionDefaultPreludeFromExePath(argv[0], session); + } + SlangCompileRequest* compileRequest = spCreateCompileRequest(session); SlangResult res = _compile(compileRequest, argc, argv); // Now that we are done, clean up after ourselves @@ -80,16 +98,8 @@ SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession* int MAIN(int argc, char** argv) { - SlangResult res; - { - SlangSession* session = spCreateSession(nullptr); - TestToolUtil::setSessionDefaultPreludeFromExePath(argv[0], session); - - auto stdWriters = StdWriters::initDefaultSingleton(); - - res = innerMain(stdWriters, session, argc, argv); - spDestroySession(session); - } + auto stdWriters = StdWriters::initDefaultSingleton(); + SlangResult res = innerMain(stdWriters, nullptr, argc, argv); return (int)TestToolUtil::getReturnCode(res); } |
