Test that we don't export sugar into main
[gitmo/Mouse.git] / lib / Mouse / Role.pm
index b222a1d..e905004 100644 (file)
@@ -1,11 +1,10 @@
-#!/usr/bin/env perl
 package Mouse::Role;
 use strict;
 use warnings;
 use base 'Exporter';
 
 use Carp 'confess';
-use Mouse::Util 'blessed';
+use Scalar::Util 'blessed';
 
 use Mouse::Meta::Role;
 
@@ -52,10 +51,11 @@ sub extends  { confess "Roles do not support 'extends'" }
 sub with     {
     my $meta = Mouse::Meta::Role->initialize(caller);
     my $role  = shift;
-    confess "Mouse::Role only supports 'with' on individual roles at a time" if @_;
+    my $args  = shift || {};
+    confess "Mouse::Role only supports 'with' on individual roles at a time" if @_ || !ref $args;
 
     Mouse::load_class($role);
-    $role->meta->apply($meta);
+    $role->meta->apply($meta, %$args);
 }
 
 sub requires {
@@ -67,10 +67,19 @@ sub requires {
 sub excludes { confess "Mouse::Role does not currently support 'excludes'" }
 
 sub import {
+    my $class = shift;
+
     strict->import;
     warnings->import;
 
     my $caller = caller;
+
+    # we should never export to main
+    if ($caller eq 'main') {
+        warn qq{$class does not export its sugar to the 'main' package.\n};
+        return;
+    }
+
     my $meta = Mouse::Meta::Role->initialize(caller);
 
     no strict 'refs';