Locally I simply added a type constraint to method new for class Failure: $ diff src/core/Failure.pm Failure.pm.orig 5c5 < method new(Exception $exception) { self.bless(:$exception) } --- > method new($exception) { self.bless(:$exception) }
With that change the error message became: $ perl6 -e 'Failure.new("foo").();' Type check failed in binding $exception; expected 'Exception' but got 'Str' in method new at src/gen/m-CORE.setting:15706 in block <unit> at -e:1 Would that be good enough?