diff --git a/lib/MooseX/Declare.pm b/lib/MooseX/Declare.pm index d196d68..3905c29 100644 --- a/lib/MooseX/Declare.pm +++ b/lib/MooseX/Declare.pm @@ -3,7 +3,6 @@ use warnings; package MooseX::Declare; -use MooseX::Method::Signatures; use aliased 'MooseX::Declare::Syntax::Keyword::Class', 'ClassKeyword'; use aliased 'MooseX::Declare::Syntax::Keyword::Role', 'RoleKeyword'; @@ -22,8 +21,6 @@ sub import { for my $keyword ($class->keywords) { $keyword->setup_for($caller, %args); } - - MooseX::Method::Signatures->setup_for($caller) } sub keywords { diff --git a/lib/MooseX/Declare/Syntax/Keyword/Method.pm b/lib/MooseX/Declare/Syntax/Keyword/Method.pm new file mode 100644 index 0000000..0319591 --- /dev/null +++ b/lib/MooseX/Declare/Syntax/Keyword/Method.pm @@ -0,0 +1,14 @@ +package MooseX::Declare::Syntax::Keyword::Method; + +use Moose; + +use namespace::clean -except => 'meta'; + +with 'MooseX::Declare::Syntax::MethodDeclaration'; + +sub register_method_declaration { + my ($self, $class, $method) = @_; + return $class->meta->add_method($method->name, $method->body); +} + +1; diff --git a/lib/MooseX/Declare/Syntax/MooseSetup.pm b/lib/MooseX/Declare/Syntax/MooseSetup.pm index 93ea30c..94f4499 100644 --- a/lib/MooseX/Declare/Syntax/MooseSetup.pm +++ b/lib/MooseX/Declare/Syntax/MooseSetup.pm @@ -6,6 +6,7 @@ use Moose::Util qw( find_meta ); use Sub::Install qw( install_sub ); use aliased 'MooseX::Declare::Syntax::Keyword::MethodModifier'; +use aliased 'MooseX::Declare::Syntax::Keyword::Method'; use aliased 'MooseX::Declare::Syntax::Keyword::Clean', 'CleanKeyword'; use namespace::clean -except => 'meta'; @@ -25,6 +26,9 @@ sub import_symbols_from { 'Moose' } around default_inner => sub { return [ + Method->new( + identifier => 'method', + ), MethodModifier->new( identifier => 'around', modifier_type => 'around', diff --git a/t/inner_keywords.t b/t/inner_keywords.t index 971c771..211f0d4 100644 --- a/t/inner_keywords.t +++ b/t/inner_keywords.t @@ -1,9 +1,8 @@ -use Test::More tests => 1; +use Test::More tests => 6; use MooseX::Declare; -TODO: { - local $TODO = 'method is set up outside of classes and roles'; - eval 'method foo ($bar) { }'; - ok($@, 'method keyword not set up outside of classes'); +for my $inner (qw( method around before after augment override )) { + eval $inner . ' foo ($bar) { }'; + ok($@, "$inner keyword not set up outside of classes"); }