# New Ticket Created by  Timothy Bollman 
# Please include the string:  [perl #130364]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=130364 >


You cannot use the type provided in a parametric role to constrain the return 
value of a method. It errors with "X::TypeCheck::Return exception produced no 
message".


use v6;
use Test;

role A[::B] {
    method build-it(*@attr) {
        return B.new(|@attr.Capture);
    }
    method build-it-constrain(*@attr) returns B {
        return B.new(|@attr.Capture);
    }
}

class Point {
    has $.x;
    has $.y;
}

plan 2;

lives-ok {
    my Point $p = A[Point].new.build-it(x => 5, y => 10);
}, 'Built without constraint';

lives-ok {
    my Point $p = A[Point].new.build-it-constrain(x => 5, y => 10);
}, 'Built with constraint';

Reply via email to