From b180d098f917be6835e10bcb6fe72f3907306570 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 22 Jul 2013 20:52:17 -0400 Subject: note that lexical subs don't work (fixes #2) --- lib/Parse/Keyword.pm | 4 ++++ t/lexical.t | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 t/lexical.t diff --git a/lib/Parse/Keyword.pm b/lib/Parse/Keyword.pm index 7047482..3f93523 100644 --- a/lib/Parse/Keyword.pm +++ b/lib/Parse/Keyword.pm @@ -174,6 +174,10 @@ This module also inherits the limitation from L that custom parsing is only triggered if the keyword is called by its unqualified name (C, not C, for instance). +This module doesn't yet work with lexical subs, such as via +L. This will hopefully be fixed in the future, but will +likely require modifications to perl. + Please report any bugs to GitHub Issues at L. diff --git a/t/lexical.t b/t/lexical.t new file mode 100644 index 0000000..15ba1d2 --- /dev/null +++ b/t/lexical.t @@ -0,0 +1,35 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +BEGIN { + if (!eval { require Exporter::Lexical }) { + plan skip_all => "This test requires Exporter::Lexical"; + } +} + +BEGIN { plan skip_all => "This doesn't work yet." } + +BEGIN { + package My::Parser; + use Exporter::Lexical -exports => ['foo']; + use Parse::Keyword { foo => \&parse_foo }; + + sub foo { $_[0]->() } + sub parse_foo { + lex_read_space; + my $code = parse_block; + return sub { $code }; + } + $INC{'My/Parser.pm'} = __FILE__; +} + +{ + use My::Parser; + is(foo { my $x = 1; $x + 3 }, 4); +} +eval "foo { 1 }"; +like $@, qr/slkfdj/; + +done_testing; -- cgit v1.2.3