summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp
diff options
context:
space:
mode:
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;
}