Adding safe to the stable sort unit tests, as follows:
@safe unittest
{
// Showcase stable sorting
string[] words = [ "aBc", "a", "abc", "b", "ABC", "c" ];
sort!("toUpper(a) < toUpper(b)", SwapStrategy.stable)(words);
assert(words == [ "a", "aBc", "abc", "ABC", "b", "c" ]);
}
std/algorithm.d(10241): Error: safe function 'std.algorithm.__unittestL10237_301' cannot call system function 'std.algorithm.sort!("toUpper(a) < toUpper(b)", cast(SwapStrategy)2, string[]).sort'
I see no direct tests for either the quicksortimpl or timsortimpl, which is itself a problem. Creation of tests for both of those impls and having them marked @safe should be a part of fixing this issue.
Comment #1 by bugzilla — 2016-06-08T05:43:10Z
This sort() calls TimSortImpl.sort(). It is @system because it calls uninitializedArray(), which is an @system function.