Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Implement does trait on variables.
  • Loading branch information
jnthn committed Jul 18, 2015
1 parent 059dac9 commit 9eb336f
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/core/Variable.pm
Expand Up @@ -96,6 +96,22 @@ multi sub trait_mod:<is>(Variable:D $v, :$export!) {
EXPORT_SYMBOL($var.VAR.name, @tags, $var);
}

# does trait
multi sub trait_mod:<does>(Variable:D $v, Mu:U $role) {
if $role.HOW.archetypes.composable() {
$v.var.VAR does $role;
}
elsif $role.HOW.archetypes.composalizable() {
$v.var.VAR does $role.HOW.composalize($role);
}
else {
X::Composition::NotComposable.new(
target-name => 'a variable',
composer => $role,
).throw;
}
}

# "of" traits
multi sub trait_mod:<of>(Variable:D $v, |c ) {
$v.throw( 'X::Comp::Trait::Unknown',
Expand Down

0 comments on commit 9eb336f

Please sign in to comment.