As a status update: This seems to be specific to the REPL. Executing the code from the command line throws a typed exception X::Export::NameClash (output is identical for perl6-m and perl6-j):
$ perl6-p -e 'constant %a is export = 5 => 5; constant %a is export = 5 => 5' ===SORRY!=== Error while compiling -e A symbol '%a' has already been exported at -e:1 ------> In the REPL only Moar gets it right. With Parrot there is a Null PMC access and with JVM a NullPointerException: $ echo 'constant %a is export = 5 => 5; constant %a is export = 5 => 5' | perl6-m ===SORRY!=== Error while compiling A symbol '%a' has already been exported at :1 ------> $ echo 'constant %a is export = 5 => 5; constant %a is export = 5 => 5' | ./perl6-p > constant %a is export = 5 => 5; constant %a is export = 5 => 5 Null PMC access in get_string() > $ echo 'constant %a is export = 5 => 5; constant %a is export = 5 => 5' | ./perl6-j > constant %a is export = 5 => 5; constant %a is export = 5 => 5 java.lang.NullPointerException