https://issues.dlang.org/show_bug.cgi?id=22859
--- Comment #3 from Tomoya Tanjo <[email protected]> --- I reduced it as follows: ```d private struct __InoutWorkaroundStruct {} @property T rvalueOf(T)(T val) { return val; } @property T rvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); @property ref T lvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); // taken from std.traits.isAssignable template isAssignable(Lhs, Rhs = Lhs) { enum isAssignable = __traits(compiles, lvalueOf!Lhs = rvalueOf!Rhs) && __traits(compiles, lvalueOf!Lhs = lvalueOf!Rhs); } // taken from std.meta.allSatisfy template allSatisfy(alias F, T...) { static foreach (Ti; T) { static if (!is(typeof(allSatisfy) == bool) && // not yet defined !F!(Ti)) { enum allSatisfy = false; } } static if (!is(typeof(allSatisfy) == bool)) // if not yet defined { enum allSatisfy = true; } } struct None{} class C1 { static if(allSatisfy!(isAssignable, None, C2)) {} } class C2 { static if(allSatisfy!(isAssignable, None, C1, C2)) {} } void main() {} ``` Finally, I found that it was introduced by https://github.com/dlang/dmd/pull/13588. Here is an output of `git bisect`: ```console $ cat test.sh #!/bin/sh make -f posix.mak AUTO_BOOTSTRAP=1 -j ./generated/linux/release/64/dmd -c issue22859.d $ git bisect start v2.099.0 v2.089.1 $ git bisect run ./test.sh ... 5436d4d167e41f59b799071d8136bb051c87ae56 is the first bad commit commit 5436d4d167e41f59b799071d8136bb051c87ae56 Author: Iain Buclaw <[email protected]> Date: Sun Jan 30 16:42:45 2022 +0100 fix Issue 22714 - ICE: Assertion failure in ClassDeclaration::isBaseOf ... ``` Note: To make it bisectable, I fixed /workspaces/druntime/src/core/sys/darwin/mach/nlist.d (L225 only) to v2.098.1. --
