+{
+ eval <<' TEST';
+ use Sub::Op::LexicalSub what => \&wat;
+ local $wat_args = [ 1 ];
+ what 1;
+ local $wat_args = [ 2, 3 ];
+ what 2, 3;
+ local $wat_args = [ 4, 5 ];
+ sub {
+ what $_[0], 5;
+ }->(4);
+ TEST
+ is $@, '', 'what: no errors';
+}
+
+is prototype('main::foo'), undef, "foo's prototype was preserved";
+is prototype('main::bar'), '', "bar's prototype was preserved";
+is prototype('main::X'), '', "X's prototype was preserved";
+ok Sub::Op::_constant_sub(do { no strict "refs"; \&{"main::X"} }),
+ 'X is still a constant';
+