I've got D2 code:
> template ObjcMethodSelectorCheck(string sel, A...) {
> const n = countMethodArguments(sel);
and:
pure static uint countMethodArguments(string name) {
if (name.length == 0) return 0;
if (name[0] == ':') return 1+countMethodArguments(name[1..$]);
return countMethodArguments(name[1..$]);
}
Original version of this method was pure too, but used count++. Fine, maybe
compiler wasn't smart enough to understand that, but now I've rewritten it in
purely functional style, and it's still not "constant" enough!
objc/method.d(54): Error: cannot evaluate
countMethodArguments(ToSetterSelector) at compile time
objc/method.d(57): Error: expression 1u !=
countMethodArguments(ToSetterSelector) is not constant or does not evaluate to
a bool