// https://issues.dlang.org/show_bug.cgi?id=16047
module test16047;
void main()
{
    Reassignable[int][int] aa;
    aa[0][0] = Reassignable.init;
    aa[s()][0] = Reassignable.init; // range violation
}
struct Reassignable
{
    void opAssign(Reassignable) {}
}
int s() { return 1; }