summaryrefslogtreecommitdiff
path: root/source/compiler-core
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler-core')
-rw-r--r--source/compiler-core/slang-diagnostic-sink.cpp17
-rw-r--r--source/compiler-core/slang-diagnostic-sink.h16
2 files changed, 25 insertions, 8 deletions
diff --git a/source/compiler-core/slang-diagnostic-sink.cpp b/source/compiler-core/slang-diagnostic-sink.cpp
index 2adf31f69..727c322a5 100644
--- a/source/compiler-core/slang-diagnostic-sink.cpp
+++ b/source/compiler-core/slang-diagnostic-sink.cpp
@@ -385,6 +385,23 @@ static void formatDiagnostic(
}
}
+void DiagnosticSink::init(SourceManager* sourceManager, SourceLocationLexer sourceLocationLexer)
+{
+ m_errorCount = 0;
+ m_internalErrorLocsNoted = 0;
+
+ m_flags = 0;
+
+ m_sourceManager = sourceManager;
+ m_sourceLocationLexer = sourceLocationLexer;
+
+ // If we have a source location lexer, we'll by default enable source location output
+ if (sourceLocationLexer)
+ {
+ setFlag(Flag::SourceLocationLine);
+ }
+}
+
void DiagnosticSink::diagnoseImpl(SourceLoc const& pos, DiagnosticInfo const& info, int argCount, DiagnosticArg const* const* args)
{
StringBuilder sb;
diff --git a/source/compiler-core/slang-diagnostic-sink.h b/source/compiler-core/slang-diagnostic-sink.h
index 84001e6f5..347ff761c 100644
--- a/source/compiler-core/slang-diagnostic-sink.h
+++ b/source/compiler-core/slang-diagnostic-sink.h
@@ -217,16 +217,16 @@ public:
/// character caret at location
SourceLocationLexer getSourceLocationLexer() const { return m_sourceLocationLexer; }
+ /// Initialize state.
+ void init(SourceManager* sourceManager, SourceLocationLexer sourceLocationLexer);
+
/// Ctor
- DiagnosticSink(SourceManager* sourceManager, SourceLocationLexer sourceLocationLexer)
- : m_sourceManager(sourceManager),
- m_sourceLocationLexer(sourceLocationLexer)
+ DiagnosticSink(SourceManager* sourceManager, SourceLocationLexer sourceLocationLexer) { init(sourceManager, sourceLocationLexer); }
+ /// Default Ctor
+ DiagnosticSink():
+ m_sourceManager(nullptr),
+ m_sourceLocationLexer (nullptr)
{
- // If we have a source location lexer, we'll by default enable source location output
- if (sourceLocationLexer)
- {
- setFlag(Flag::SourceLocationLine);
- }
}
// Public members