int[] foo1(int x) pure { return null; } int[] foo2(string s) pure { return null; } void main() { immutable a1 = foo1(10); // OK immutable a2 = foo2("hello"); // currently error }The idea behind this is that the type of s is different from the return type of foo2, so foo2 is a strongly pure function.
Bye, bearophile