aboutsummaryrefslogtreecommitdiffstats
path: root/slang_rs_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'slang_rs_context.h')
-rw-r--r--slang_rs_context.h40
1 files changed, 29 insertions, 11 deletions
diff --git a/slang_rs_context.h b/slang_rs_context.h
index 4a9261e..c3a177c 100644
--- a/slang_rs_context.h
+++ b/slang_rs_context.h
@@ -235,27 +235,45 @@ class RSContext {
}
// Report an error or a warning to the user.
+ template <unsigned N>
clang::DiagnosticBuilder Report(clang::DiagnosticsEngine::Level Level,
- const char *Message);
+ const char (&Message)[N]) {
+ clang::DiagnosticsEngine *DiagEngine = getDiagnostics();
+ return DiagEngine->Report(DiagEngine->getCustomDiagID(Level, Message));
+}
+
+ template <unsigned N>
clang::DiagnosticBuilder Report(clang::DiagnosticsEngine::Level Level,
- const clang::SourceLocation Loc,
- const char *Message);
+ const clang::SourceLocation Loc,
+ const char (&Message)[N]) {
+ clang::DiagnosticsEngine *DiagEngine = getDiagnostics();
+ const clang::SourceManager *SM = getSourceManager();
+ return DiagEngine->Report(clang::FullSourceLoc(Loc, *SM),
+ DiagEngine->getCustomDiagID(Level, Message));
+}
// Utility functions to report errors and warnings to make the calling code
// easier to read.
- clang::DiagnosticBuilder ReportError(const char *Message) {
- return Report(clang::DiagnosticsEngine::Error, Message);
+ template <unsigned N>
+ clang::DiagnosticBuilder ReportError(const char (&Message)[N]) {
+ return Report<N>(clang::DiagnosticsEngine::Error, Message);
}
+
+ template <unsigned N>
clang::DiagnosticBuilder ReportError(const clang::SourceLocation Loc,
- const char *Message) {
- return Report(clang::DiagnosticsEngine::Error, Loc, Message);
+ const char (&Message)[N]) {
+ return Report<N>(clang::DiagnosticsEngine::Error, Loc, Message);
}
- clang::DiagnosticBuilder ReportWarning(const char *Message) {
- return Report(clang::DiagnosticsEngine::Warning, Message);
+
+ template <unsigned N>
+ clang::DiagnosticBuilder ReportWarning(const char (&Message)[N]) {
+ return Report<N>(clang::DiagnosticsEngine::Warning, Message);
}
+
+ template <unsigned N>
clang::DiagnosticBuilder ReportWarning(const clang::SourceLocation Loc,
- const char *Message) {
- return Report(clang::DiagnosticsEngine::Warning, Loc, Message);
+ const char (&Message)[N]) {
+ return Report<N>(clang::DiagnosticsEngine::Warning, Loc, Message);
}
~RSContext();