fun ($a, $b) { ... }
[p5sagit/Devel-Declare.git] / t / proto.t
diff --git a/t/proto.t b/t/proto.t
new file mode 100644 (file)
index 0000000..240eb09
--- /dev/null
+++ b/t/proto.t
@@ -0,0 +1,26 @@
+use strict;
+use warnings;
+use Test::More 'no_plan';
+
+sub fun :lvalue { return my $sv; }
+
+sub X { "what?" }
+
+sub handle_fun {
+  my ($pack, $use, $name, $proto) = @_;
+  my $XX = sub (&) {
+    my $cr = $_[0];
+    return sub {
+      return join(': ', $proto, $cr->());
+    };
+  };
+  return (undef, $XX);
+}
+
+use Devel::Declare;
+use Devel::Declare fun => [ DECLARE_PROTO, \&handle_fun ];
+
+my $foo = fun ($a, $b) { "woot" };
+
+is($foo->(), '$a, $b: woot', 'proto declarator ok');
+is(X(), 'what?', 'X sub restored ok');