PR d/88958
d/dmd: Merge upstream dmd
0fc786f49
Backport fix to disallow passing functions as parameters.
Fixes https://gcc.gnu.org/PR88958
Reviewed-on: https://github.com/dlang/dmd/pull/9437
From-SVN: r269557
-d517c0e6a10b548f44d82b71b3c079663cb94f8e
+0fc786f4908aa6bdd4220af87995333b1f24c3d7
The first line of this file holds the git revision number of the last
merge done from the dlang/dmd repository.
arg = new ErrorExp();
err = true;
}
+ else if (arg->type->toBasetype()->ty == Tfunction)
+ {
+ arg->error("cannot pass type %s as a function argument", arg->toChars());
+ arg = new ErrorExp();
+ err = true;
+ }
else if (checkNonAssignmentArrayOp(arg))
{
arg = new ErrorExp();
--- /dev/null
+// https://issues.dlang.org/show_bug.cgi?id=19608
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test19608.d(15): Error: cannot pass function `*& f` as a function argument
+---
+*/
+import core.stdc.stdarg;
+
+void f(int) {}
+void g(...) {}
+void h()
+{
+ g(&f); // OK, function address
+ g(*&f); // ICE -> Error
+}