aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/errors.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/d/dmd/errors.d')
-rw-r--r--gcc/d/dmd/errors.d109
1 files changed, 56 insertions, 53 deletions
diff --git a/gcc/d/dmd/errors.d b/gcc/d/dmd/errors.d
index 79efc6e..90c18c3 100644
--- a/gcc/d/dmd/errors.d
+++ b/gcc/d/dmd/errors.d
@@ -1,20 +1,22 @@
/**
* Functions for raising errors.
*
- * Copyright: Copyright (C) 1999-2024 by The D Language Foundation, All Rights Reserved
+ * Copyright: Copyright (C) 1999-2025 by The D Language Foundation, All Rights Reserved
* Authors: $(LINK2 https://www.digitalmars.com, Walter Bright)
* License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
- * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/errors.d, _errors.d)
+ * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/compiler/src/dmd/errors.d, _errors.d)
* Documentation: https://dlang.org/phobos/dmd_errors.html
- * Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/errors.d
+ * Coverage: https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/errors.d
*/
module dmd.errors;
-import core.stdc.stdarg;
+public import core.stdc.stdarg;
+public import dmd.root.string: fTuple;
import dmd.errorsink;
import dmd.globals;
import dmd.location;
+import dmd.root.string;
nothrow:
@@ -37,60 +39,39 @@ class ErrorSinkCompiler : ErrorSink
extern (C++):
override:
- void error(const ref Loc loc, const(char)* format, ...)
+ void verror(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.error);
- va_end(ap);
}
- void errorSupplemental(const ref Loc loc, const(char)* format, ...)
+ void verrorSupplemental(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReportSupplemental(loc, format, ap, ErrorKind.error);
- va_end(ap);
}
- void warning(const ref Loc loc, const(char)* format, ...)
+ void vwarning(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.warning);
- va_end(ap);
}
- void warningSupplemental(const ref Loc loc, const(char)* format, ...)
+ void vwarningSupplemental(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReportSupplemental(loc, format, ap, ErrorKind.warning);
- va_end(ap);
}
- void deprecation(const ref Loc loc, const(char)* format, ...)
+ void vdeprecation(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.deprecation);
- va_end(ap);
}
- void deprecationSupplemental(const ref Loc loc, const(char)* format, ...)
+ void vdeprecationSupplemental(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReportSupplemental(loc, format, ap, ErrorKind.deprecation);
- va_end(ap);
}
- void message(const ref Loc loc, const(char)* format, ...)
+ void vmessage(Loc loc, const(char)* format, va_list ap)
{
- va_list ap;
- va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.message);
- va_end(ap);
}
}
@@ -130,9 +111,9 @@ enum Color : int
static if (__VERSION__ < 2092)
- private extern (C++) void noop(const ref Loc loc, const(char)* format, ...) {}
+ private extern (C++) void noop(Loc loc, const(char)* format, ...) {}
else
- pragma(printf) private extern (C++) void noop(const ref Loc loc, const(char)* format, ...) {}
+ pragma(printf) private extern (C++) void noop(Loc loc, const(char)* format, ...) {}
package auto previewErrorFunc(bool isDeprecated, FeatureState featureState) @safe @nogc pure nothrow
@@ -174,7 +155,7 @@ package auto previewSupplementalFunc(bool isDeprecated, FeatureState featureStat
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void error(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void error(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -182,7 +163,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void error(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void error(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -202,7 +183,7 @@ else
static if (__VERSION__ < 2092)
extern (C++) void error(const(char)* filename, uint linnum, uint charnum, const(char)* format, ...)
{
- const loc = Loc(filename, linnum, charnum);
+ const loc = SourceLoc(filename.toDString, linnum, charnum);
va_list ap;
va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.error);
@@ -211,13 +192,23 @@ static if (__VERSION__ < 2092)
else
pragma(printf) extern (C++) void error(const(char)* filename, uint linnum, uint charnum, const(char)* format, ...)
{
- const loc = Loc(filename, linnum, charnum);
+ const loc = SourceLoc(filename.toDString, linnum, charnum);
va_list ap;
va_start(ap, format);
verrorReport(loc, format, ap, ErrorKind.error);
va_end(ap);
}
+/// Callback for when the backend wants to report an error
+extern(C++) void errorBackend(const(char)* filename, uint linnum, uint charnum, const(char)* format, ...)
+{
+ const loc = SourceLoc(filename.toDString, linnum, charnum);
+ va_list ap;
+ va_start(ap, format);
+ verrorReport(loc, format, ap, ErrorKind.error);
+ va_end(ap);
+}
+
/**
* Print additional details about an error message.
* Doesn't increase the error count or print an additional error prefix.
@@ -227,7 +218,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void errorSupplemental(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void errorSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -235,7 +226,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void errorSupplemental(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void errorSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -251,7 +242,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void warning(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void warning(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -259,7 +250,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void warning(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void warning(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -276,7 +267,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void warningSupplemental(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void warningSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -284,7 +275,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void warningSupplemental(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void warningSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -301,7 +292,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void deprecation(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void deprecation(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -309,7 +300,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void deprecation(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void deprecation(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -326,7 +317,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void deprecationSupplemental(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void deprecationSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -334,7 +325,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void deprecationSupplemental(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void deprecationSupplemental(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -351,7 +342,7 @@ else
* ... = printf-style variadic arguments
*/
static if (__VERSION__ < 2092)
- extern (C++) void message(const ref Loc loc, const(char)* format, ...)
+ extern (C++) void message(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -359,7 +350,7 @@ static if (__VERSION__ < 2092)
va_end(ap);
}
else
- pragma(printf) extern (C++) void message(const ref Loc loc, const(char)* format, ...)
+ pragma(printf) extern (C++) void message(Loc loc, const(char)* format, ...)
{
va_list ap;
va_start(ap, format);
@@ -395,7 +386,7 @@ else
* see verrorReport for arguments
* Returns: true if error handling is done, false to continue printing to stderr
*/
-alias DiagnosticHandler = bool delegate(const ref Loc location, Color headerColor, const(char)* header, const(char)* messageFormat, va_list args, const(char)* prefix1, const(char)* prefix2);
+alias DiagnosticHandler = bool delegate(const ref SourceLoc location, Color headerColor, const(char)* header, const(char)* messageFormat, va_list args, const(char)* prefix1, const(char)* prefix2);
/**
* The diagnostic handler.
@@ -441,7 +432,13 @@ else
* p1 = additional message prefix
* p2 = additional message prefix
*/
-extern (C++) void verrorReport(const ref Loc loc, const(char)* format, va_list ap, ErrorKind kind, const(char)* p1 = null, const(char)* p2 = null);
+private extern(C++) void verrorReport(Loc loc, const(char)* format, va_list ap, ErrorKind kind, const(char)* p1 = null, const(char)* p2 = null)
+{
+ return verrorReport(loc.SourceLoc, format, ap, kind, p1, p2);
+}
+
+/// ditto
+private extern(C++) void verrorReport(const SourceLoc loc, const(char)* format, va_list ap, ErrorKind kind, const(char)* p1 = null, const(char)* p2 = null);
/**
* Implements $(D errorSupplemental), $(D warningSupplemental), and
@@ -454,7 +451,13 @@ extern (C++) void verrorReport(const ref Loc loc, const(char)* format, va_list a
* ap = printf-style variadic arguments
* kind = kind of error being printed
*/
-extern (C++) void verrorReportSupplemental(const ref Loc loc, const(char)* format, va_list ap, ErrorKind kind);
+private extern(C++) void verrorReportSupplemental(Loc loc, const(char)* format, va_list ap, ErrorKind kind)
+{
+ return verrorReportSupplemental(loc.SourceLoc, format, ap, kind);
+}
+
+/// ditto
+private extern(C++) void verrorReportSupplemental(const SourceLoc loc, const(char)* format, va_list ap, ErrorKind kind);
/**
* The type of the fatal error handler