diff options
Diffstat (limited to 'gcc/d/dmd/errors.d')
-rw-r--r-- | gcc/d/dmd/errors.d | 109 |
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 |