summaryrefslogtreecommitdiffstats
path: root/tools/slang-cpp-extractor
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
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')
-rw-r--r--tools/slang-cpp-extractor/slang-cpp-extractor-diagnostics.cpp2
-rw-r--r--tools/slang-cpp-extractor/slang-cpp-extractor-main.cpp32
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;
}