diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2023-10-15 19:09:05 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2023-10-16 19:14:10 +0200 |
commit | 964fd402c9b48eb4da91fb3e4e45d4560d6c676c (patch) | |
tree | a34980fffb3f1e8e7347b727a6d7243cc0ad7320 /gcc/d/dmd/initsem.d | |
parent | c7609acb8a8210188d21b2cd72ecc6d3b2de2ab8 (diff) | |
download | gcc-964fd402c9b48eb4da91fb3e4e45d4560d6c676c.zip gcc-964fd402c9b48eb4da91fb3e4e45d4560d6c676c.tar.gz gcc-964fd402c9b48eb4da91fb3e4e45d4560d6c676c.tar.bz2 |
d: Merge upstream dmd, druntime 4c18eed967, phobos d945686a4.
D front-end changes:
- Import latest fixes to mainline.
D runtime changes:
- Import latest fixes to mainline.
Phobos changes:
- Import latest fixes to mainline.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 4c18eed967.
* d-diagnostic.cc (verrorReport): Update for new front-end interface.
(verrorReportSupplemental): Likewise.
* d-lang.cc (d_init_options): Likewise.
(d_handle_option): Likewise.
(d_post_options): Likewise.
(d_parse_file): Likewise.
* decl.cc (get_symbol_decl): Likewise.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime 4c18eed967.
* src/MERGE: Merge upstream phobos d945686a4.
Diffstat (limited to 'gcc/d/dmd/initsem.d')
-rw-r--r-- | gcc/d/dmd/initsem.d | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/gcc/d/dmd/initsem.d b/gcc/d/dmd/initsem.d index 45f09af8..28c7c2b 100644 --- a/gcc/d/dmd/initsem.d +++ b/gcc/d/dmd/initsem.d @@ -29,6 +29,7 @@ import dmd.expression; import dmd.expressionsem; import dmd.func; import dmd.globals; +import dmd.hdrgen; import dmd.id; import dmd.identifier; import dmd.importc; @@ -59,12 +60,12 @@ Expression toAssocArrayLiteral(ArrayInitializer ai) if (!dim) { error(ai.loc, "invalid associative array initializer `%s`, use `null` instead", - ai.toChars()); + toChars(ai)); return ErrorExp.get(); } auto no(const char* format, Initializer i) { - error(i.loc, format, i.toChars()); + error(i.loc, format, toChars(i)); return ErrorExp.get(); } Expression e; @@ -399,13 +400,13 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ } if (i.exp.op == EXP.type) { - i.exp.error("initializer must be an expression, not `%s`", i.exp.toChars()); + error(i.exp.loc, "initializer must be an expression, not `%s`", i.exp.toChars()); return err(); } // Make sure all pointers are constants if (needInterpret && hasNonConstPointers(i.exp)) { - i.exp.error("cannot use non-constant CTFE pointer in an initializer `%s`", currExp.toChars()); + error(i.exp.loc, "cannot use non-constant CTFE pointer in an initializer `%s`", currExp.toChars()); return err(); } Type ti = i.exp.type.toBasetype(); @@ -563,7 +564,7 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ } if (dim1 != dim2) { - i.exp.error("mismatched array lengths, %d and %d", cast(int)dim1, cast(int)dim2); + error(i.exp.loc, "mismatched array lengths, %d and %d", cast(int)dim1, cast(int)dim2); i.exp = ErrorExp.get(); } } @@ -571,7 +572,7 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ const errors = global.startGagging(); i.exp = i.exp.implicitCastTo(sc, t); if (global.endGagging(errors)) - currExp.error("cannot implicitly convert expression `%s` of type `%s` to `%s`", currExp.toChars(), et.toChars(), t.toChars()); + error(currExp.loc, "cannot implicitly convert expression `%s` of type `%s` to `%s`", currExp.toChars(), et.toChars(), t.toChars()); } } L1: @@ -791,12 +792,12 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ const length = (*dlist).length; if (length == 0 || !(*dlist)[0].ident) { - error(ci.loc, "`.identifier` expected for C struct field initializer `%s`", ci.toChars()); + error(ci.loc, "`.identifier` expected for C struct field initializer `%s`", toChars(ci)); return err(); } if (length > 1) { - error(ci.loc, "only 1 designator currently allowed for C struct field initializer `%s`", ci.toChars()); + error(ci.loc, "only 1 designator currently allowed for C struct field initializer `%s`", toChars(ci)); return err(); } auto id = (*dlist)[0].ident; @@ -912,12 +913,12 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ const length = (*dlist).length; if (length == 0 || !(*dlist)[0].exp) { - error(ci.loc, "`[ constant-expression ]` expected for C array element initializer `%s`", ci.toChars()); + error(ci.loc, "`[ constant-expression ]` expected for C array element initializer `%s`", toChars(ci)); return err(); } if (length > 1) { - error(ci.loc, "only 1 designator currently allowed for C array element initializer `%s`", ci.toChars()); + error(ci.loc, "only 1 designator currently allowed for C array element initializer `%s`", toChars(ci)); return err(); } //printf("tn: %s, di.initializer: %s\n", tn.toChars(), di.initializer.toChars()); @@ -988,7 +989,7 @@ extern(C++) Initializer initializerSemantic(Initializer init, Scope* sc, ref Typ } else { - error(ci.loc, "unrecognized C initializer `%s`", ci.toChars()); + error(ci.loc, "unrecognized C initializer `%s`", toChars(ci)); return err(); } } @@ -1103,9 +1104,9 @@ Initializer inferType(Initializer init, Scope* sc) { TemplateInstance ti = se.sds.isTemplateInstance(); if (ti && ti.semanticRun == PASS.semantic && !ti.aliasdecl) - se.error("cannot infer type from %s `%s`, possible circular dependency", se.sds.kind(), se.toChars()); + error(se.loc, "cannot infer type from %s `%s`, possible circular dependency", se.sds.kind(), se.toChars()); else - se.error("cannot infer type from %s `%s`", se.sds.kind(), se.toChars()); + error(se.loc, "cannot infer type from %s `%s`", se.sds.kind(), se.toChars()); return new ErrorInitializer(); } @@ -1119,7 +1120,7 @@ Initializer inferType(Initializer init, Scope* sc) } if (hasOverloads && !f.isUnique()) { - init.exp.error("cannot infer type from overloaded function symbol `%s`", init.exp.toChars()); + error(init.exp.loc, "cannot infer type from overloaded function symbol `%s`", init.exp.toChars()); return new ErrorInitializer(); } } @@ -1127,7 +1128,7 @@ Initializer inferType(Initializer init, Scope* sc) { if (ae.e1.op == EXP.overloadSet) { - init.exp.error("cannot infer type from overloaded function symbol `%s`", init.exp.toChars()); + error(init.exp.loc, "cannot infer type from overloaded function symbol `%s`", init.exp.toChars()); return new ErrorInitializer(); } } |