#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 2;

BEGIN {
    use_ok('Class::MOP');
}

=pod

This tests a bug which is fixed in 0.22 by 
localizing all the $@'s around any evals.
This a real pain to track down. 

Moral of the story:

  ALWAYS localize your globals :)

=cut

{
    package Company;
    use strict;
    use warnings;
    use metaclass;
    
    sub new {
        my ($class) = @_;
        return bless {} => $class;
    }  
    
    sub employees {
        die "This didnt work";
    }
    
    sub DESTROY {
    	my $self = shift;
    	foreach my $method ($self->meta->find_all_methods_by_name('DEMOLISH')) {
    		$method->{code}->($self);
    	}        
    }
}

eval {        
    my $c = Company->new();    
    $c->employees();
};  
ok($@, '... we die correctly with bad args');