// 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";
}