aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/initsem.d
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2023-10-15 19:09:05 +0200
committerIain Buclaw <ibuclaw@gdcproject.org>2023-10-16 19:14:10 +0200
commit964fd402c9b48eb4da91fb3e4e45d4560d6c676c (patch)
treea34980fffb3f1e8e7347b727a6d7243cc0ad7320 /gcc/d/dmd/initsem.d
parentc7609acb8a8210188d21b2cd72ecc6d3b2de2ab8 (diff)
downloadgcc-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.d31
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();
}
}