Implemented Mouse::Role->does; modified Mouse::Meta::Class->initialise
authorNick Woolley <nick@noodlefactory.co.uk>
Fri, 27 Mar 2009 20:50:08 +0000 (20:50 +0000)
committerNick Woolley <nick@noodlefactory.co.uk>
Fri, 27 Mar 2009 20:50:08 +0000 (20:50 +0000)
commit6719984210754e8d012ae678536f194c35000823
treeea2b4f5dad6f45b64fd11a998a829ff8e21e99ae
parent56a558f97f2da37b37db51a6a8ef7f923e84724e
Implemented Mouse::Role->does; modified Mouse::Meta::Class->initialise
to allow use as an instance method to make this work.

Implemented Mouse::Role::override and ::super. To do this, added
Mouse::Meta::Class->add_override_method_modifier,

Implemented throwing stubs for Mouse::Role::augment and ::inner, as in
Moose::Role.

Added 020_roles/ tests from latest respoitory version of Moose.
Modified some tests to pass; the rest have been moved to
020_roles/failing for later examination.

Implemented Mouse::Role->does_role, from Moose.  This does not yet
quite seem to pass all the tests it should, not sure why.

Fixed bug in Mouse::Meta::Role->apply and ->combine_apply, so that
030_roles/002_role.t tests pass.

Implemented ->version, ->authority and ->identifier in Mouse/Utils.pm,
imported for use as methods by Mouse::Meta::Role and
Mouse::Meta::Class.

Tweaked .gitignore.

"make test" passes all tests, including the new ones.
38 files changed:
.gitignore
lib/Mouse/Meta/Class.pm
lib/Mouse/Meta/Role.pm
lib/Mouse/Role.pm
lib/Mouse/Util.pm
t/030_roles/002_role.t [new file with mode: 0755]
t/030_roles/003_apply_role.t [new file with mode: 0755]
t/030_roles/019_build.t [new file with mode: 0644]
t/030_roles/031_roles_applied_in_create.t [new file with mode: 0644]
t/030_roles/failing/001_meta_role.t [new file with mode: 0755]
t/030_roles/failing/004_role_composition_errors.t [new file with mode: 0644]
t/030_roles/failing/005_role_conflict_detection.t [new file with mode: 0755]
t/030_roles/failing/006_role_exclusion.t [new file with mode: 0644]
t/030_roles/failing/007_roles_and_req_method_edge_cases.t [new file with mode: 0644]
t/030_roles/failing/008_role_conflict_edge_cases.t [new file with mode: 0644]
t/030_roles/failing/009_more_role_edge_cases.t [new file with mode: 0644]
t/030_roles/failing/010_run_time_role_composition.t [new file with mode: 0644]
t/030_roles/failing/011_overriding.t [new file with mode: 0644]
t/030_roles/failing/012_method_exclusion_in_composition.t [new file with mode: 0644]
t/030_roles/failing/013_method_aliasing_in_composition.t [new file with mode: 0644]
t/030_roles/failing/014_more_alias_and_exclude.t [new file with mode: 0644]
t/030_roles/failing/015_runtime_roles_and_attrs.t [new file with mode: 0644]
t/030_roles/failing/016_runtime_roles_and_nonmoose.t [new file with mode: 0644]
t/030_roles/failing/017_extending_role_attrs.t [new file with mode: 0644]
t/030_roles/failing/018_runtime_roles_w_params.t [new file with mode: 0644]
t/030_roles/failing/020_role_composite.t [new file with mode: 0644]
t/030_roles/failing/021_role_composite_exclusion.t [new file with mode: 0644]
t/030_roles/failing/022_role_composition_req_methods.t [new file with mode: 0644]
t/030_roles/failing/023_role_composition_attributes.t [new file with mode: 0644]
t/030_roles/failing/024_role_composition_methods.t [new file with mode: 0644]
t/030_roles/failing/025_role_composition_override.t [new file with mode: 0644]
t/030_roles/failing/026_role_composition_method_mods.t [new file with mode: 0644]
t/030_roles/failing/032_roles_and_method_cloning.t [new file with mode: 0644]
t/030_roles/failing/033_role_exclusion_and_alias_bug.t [new file with mode: 0644]
t/030_roles/failing/034_create_role.t [new file with mode: 0644]
t/030_roles/failing/035_anonymous_roles.t [new file with mode: 0644]
t/030_roles/failing/036_free_anonymous_roles.t [new file with mode: 0644]
t/030_roles/failing/037_create_role_subclass.t [new file with mode: 0644]