Fixes a regression caused by an incomplete backport of converting the
Expression semantic pass to a Visitor.
gcc/d/ChangeLog:
PR d/95250
* dmd/expressionsem.c (class ExpressionSemanticVisitor): Return early
if error occurred during semantic of DivExp.
gcc/testsuite/ChangeLog:
PR d/95250
* gdc.dg/pr95250.d: New test.
(cherry picked from commit
1d19c9cd3dd99ba8885c0fc93223918399f73939)
if (Expression *ex = binSemanticProp(exp, sc))
{
result = ex;
+ return;
}
Expression *e = exp->op_overload(sc);
if (e)
--- /dev/null
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95250
+// { dg-do compile }
+
+template Unsigned(T)
+{
+ static assert(false, "Type " ~ T.stringof ~
+ " does not have an Unsigned counterpart");
+}
+
+
+void* f(T)(T a, T b)
+{
+ alias UnsignedVoid = Unsigned!(T);
+ return cast(T)(cast(T)(cast(UnsignedVoid)(a-b) / 2));
+}
+
+static assert(is(typeof(f!(void*)(null, null)) == void*));
+// { dg-error "static assert \(.*\) is false" "" { target *-*-* } .-1 }