Extended case: if the "of" clause comes after an "is default" clause, then the explicit default is not subjected to the type constraint. Other behaviour remains the same.
$ ./perl6 -e 'my $a is default("foo") of Int; say $a'
foo
$ ./perl6 -e 'my $a is default("foo") of Int; $a = $a; say $a'
Type check failed in assignment to '$a'; expected 'Int' but got 'Str'
in block <unit> at -e:1
$ ./perl6 -e 'my $a is default("foo") of Int; $a = 3; say $a; $a = Nil; say $a'
3
foo
-zefram
