diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-07-02 16:32:16 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-02 16:32:16 -0400 |
| commit | dfc9100bbd451a5752ed543a503e2574d3dcdaa5 (patch) | |
| tree | ec32734592a19e3ee7b4fec1ea2ce56ae430d972 /tools/slang-cpp-extractor | |
| parent | 5fc0185878a6a343a64c6cde0253ca1aef8fd441 (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')
| -rw-r--r-- | tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp | 2 | ||||
| -rw-r--r-- | tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp | 32 |
2 files changed, 21 insertions, 13 deletions
diff --git a/tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp b/tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp index 4c8de5757..d07b125cb 100644 --- a/tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp +++ b/tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp @@ -6,7 +6,7 @@ namespace CPPDiagnostics { using namespace Slang; -#define DIAGNOSTIC(id, severity, name, messageFormat) const DiagnosticInfo name = { id, Severity::severity, messageFormat }; +#define DIAGNOSTIC(id, severity, name, messageFormat) const DiagnosticInfo name = { id, Severity::severity, #name, messageFormat }; #include "slang-cpp-extractor-diagnostic-defs.h" } 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; } |
