summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-07-02 16:32:16 -0400
committerGitHub <noreply@github.com>2020-07-02 16:32:16 -0400
commitdfc9100bbd451a5752ed543a503e2574d3dcdaa5 (patch)
treeec32734592a19e3ee7b4fec1ea2ce56ae430d972 /tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
parent5fc0185878a6a343a64c6cde0253ca1aef8fd441 (diff)
Bug fix in C++ extractor (#1429)
* Fix bug from change in diagnostics. * Catch exceptions and display a message on problem with C++ extractor.
Diffstat (limited to 'tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp')
-rw-r--r--tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp b/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
index 5c8b521fe..96df8ec4b 100644
--- a/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
+++ b/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
@@ -2478,26 +2478,34 @@ int main(int argc, const char*const* argv)
using namespace Slang;
{
- RootNamePool rootNamePool;
+ ComPtr<ISlangWriter> writer(new FileWriter(stderr, WriterFlag::AutoFlush));
- SourceManager sourceManager;
- sourceManager.initialize(nullptr, nullptr);
+ try
+ {
+ RootNamePool rootNamePool;
- ComPtr<ISlangWriter> writer(new FileWriter(stderr, WriterFlag::AutoFlush));
+ SourceManager sourceManager;
+ sourceManager.initialize(nullptr, nullptr);
- DiagnosticSink sink(&sourceManager);
- sink.writer = writer;
+ DiagnosticSink sink(&sourceManager);
+ sink.writer = writer;
- CPPExtractorApp app(&sink, &sourceManager, &rootNamePool);
- if (SLANG_FAILED(app.executeWithArgs(argc - 1, argv + 1)))
- {
- return 1;
+ CPPExtractorApp app(&sink, &sourceManager, &rootNamePool);
+ if (SLANG_FAILED(app.executeWithArgs(argc - 1, argv + 1)))
+ {
+ return 1;
+ }
+ if (sink.getErrorCount())
+ {
+ return 1;
+ }
}
- if (sink.getErrorCount())
+ catch (...)
{
+ WriterHelper helper(writer);
+ helper.print("Unknown internal error in C++ extractor, aborted!\n");
return 1;
}
-
}
return 0;
}