// Verify that modifying a string used as a dict key
// does not corrupt the dictionary

proc main()
{
    var s1, s2, s3;
    var d;
    s1 = @"aaaaa";
    s2 = @"aaaab";
    s3 = @"aaaac";

    d = <<< s1, 1, s2, 2, s3, 3 >>>;
    "d[s1] = ", d[s1], "\n";
    "d[aaaaa] = ", d["aaaaa"], "\n";
    "d[s2] = ", d[s2], "\n";
    "d[s3] = ", d[s3], "\n";

    s1[0] = 'z';
    "d[s1] = ", d[s1], "\n";            // This should be nil
    "d[aaaaa] = ", d["aaaaa"], "\n";    // This should still be 1
    "d[s2] = ", d[s2], "\n";
    "d[s3] = ", d[s3], "\n";
}