Comments (7)
From [email protected] on 2020-12-13 04:27:25
:
On Wed Dec 09 23:36:18 2020, JWRIGHT wrote:
This code
use Types::Standard -types; use strict; use warnings; use Type::Utils
-all;
#use re 'debug'; local $Type::Tiny::AvoidCallbacks = 0; my $Distance =
declare
"Distance" => as StrMatch[ qr{^([0-9]+)\s*(mm|cm|m|km)$} ]; my $x =
"5ym"; my
$y = $Distance->($x);
throws (and warns) the following:
Cannot serialize regexp without callbacks; serializing using callbacks
at
/home/perl/perl5/perlbrew/perls/perl-
5.8.9/lib/site_perl/5.8.9/Type/Tiny.pm
line 853 Value "5ym" did not pass type constraint "Distance" at
./test-1.pl
line 13 "Distance" is a subtype of
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" Value "5ym" did not
pass type
constraint "StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]"
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" is defined as: do {
package
Type::Tiny; !ref($) and $ =~
$Types::Standard::StrMatch::expressions{"Regexp|(?-xism:^([0-
9]+)\s*(mm|cm|m|km)$)"}
}
on Perl 5.8.9 and 5.30.2 with or without Type::Tiny::XS installed,
with or
without AvoidCallbacks set
with AvoidCallbacks set to 1, this code throws the warning twice.
the warning is not thrown for ->check or ->validate, but it does appear on
calls to ->validate_explain.
The Type-Tiny pod does claim
"(StrMatch is sometimes unable to, and will issue a warning if it needs to rely
on callbacks when asked not to.)" but in this case, it isn't being asked to not
rely on callbacks
from p5-type-tiny.
From [email protected] on 2020-12-13 04:37:42
:
On Wed Dec 09 23:36:18 2020, JWRIGHT wrote:
This code
use Types::Standard -types; use strict; use warnings; use Type::Utils
-all;
#use re 'debug'; local $Type::Tiny::AvoidCallbacks = 0; my $Distance =
declare
"Distance" => as StrMatch[ qr{^([0-9]+)\s*(mm|cm|m|km)$} ]; my $x =
"5ym"; my
$y = $Distance->($x);
throws (and warns) the following:
Cannot serialize regexp without callbacks; serializing using callbacks
at
/home/perl/perl5/perlbrew/perls/perl-
5.8.9/lib/site_perl/5.8.9/Type/Tiny.pm
line 853 Value "5ym" did not pass type constraint "Distance" at
./test-1.pl
line 13 "Distance" is a subtype of
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" Value "5ym" did not
pass type
constraint "StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]"
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" is defined as: do {
package
Type::Tiny; !ref($) and $ =~
$Types::Standard::StrMatch::expressions{"Regexp|(?-xism:^([0-
9]+)\s*(mm|cm|m|km)$)"}
}
on Perl 5.8.9 and 5.30.2 with or without Type::Tiny::XS installed,
with or
without AvoidCallbacks set
from p5-type-tiny.
From [email protected] on 2020-12-13 04:38:04
:
On Wed Dec 09 23:36:18 2020, JWRIGHT wrote:
This code
use Types::Standard -types; use strict; use warnings; use Type::Utils
-all;
#use re 'debug'; local $Type::Tiny::AvoidCallbacks = 0; my $Distance =
declare
"Distance" => as StrMatch[ qr{^([0-9]+)\s*(mm|cm|m|km)$} ]; my $x =
"5ym"; my
$y = $Distance->($x);
throws (and warns) the following:
Cannot serialize regexp without callbacks; serializing using callbacks
at
/home/perl/perl5/perlbrew/perls/perl-
5.8.9/lib/site_perl/5.8.9/Type/Tiny.pm
line 853 Value "5ym" did not pass type constraint "Distance" at
./test-1.pl
line 13 "Distance" is a subtype of
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" Value "5ym" did not
pass type
constraint "StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]"
"StrMatch[(?-xism:^([0-9]+)\s*(mm|cm|m|km)$)]" is defined as: do {
package
Type::Tiny; !ref($) and $ =~
$Types::Standard::StrMatch::expressions{"Regexp|(?-xism:^([0-
9]+)\s*(mm|cm|m|km)$)"}
}
on Perl 5.8.9 and 5.30.2 with or without Type::Tiny::XS installed,
with or
without AvoidCallbacks set
from p5-type-tiny.
Hi,
It looks like this hasn't gone away in version 1.012004. I get cpan-testers reports with this problem.
I cannot reproduce on my systems (MacOs, Ubuntu, Win10) and don't know where to start investigating...
Thanks in advance,
-- Abe.
from p5-type-tiny.
Hi,
It looks like this hasn't gone away in version 1.012004. I get cpan-testers reports with this problem. I cannot reproduce on my systems (MacOs, Ubuntu, Win10) and don't know where to start investigating...
Thanks in advance, -- Abe.
As it turns out, installing Regexp::Util
removes this warning (from my test suite at least). Maybe add a hint in the documentation for this...
Good luck,
-- Abe.
from p5-type-tiny.
validate_explain
deliberately sets $AvoidCallbacks = 1
.
It might be worth having validate_explain
also catch $SIG{__WARN__}
.
from p5-type-tiny.
from p5-type-tiny.
Related Issues (20)
- Allow replacing Error::TypeTiny::Assertion HOT 6
- Add SYNOPSIS sections to Type::Tiny subclass pod
- Bitfield types should be able to return a list of constants that they export
- Using `declare` with a parent->plus_coercions seems to fail HOT 1
- Add a **BoolLike** type to Types::TypeTiny HOT 7
- Use of uninitialized value $i in pattern match (m//) HOT 7
- slurpy parameter cannot be optional HOT 3
- RFE: Type::Params: coerce undef to default value HOT 2
- Call to `tie` does not initialize variable as documented
- BoolLike in Types::TypeTiny should check `!` overloading to support boolean.pm HOT 2
- doc improvement: use strict
- Status of parameterized coercion API?
- Incorrect API docs for Type::Tiny::coercion_generator HOT 1
- cannot pass type parameter to is_InstanceOf()
- how to avoid loading class you want to coerce to?
- error in Type::Tiny::validate_explain for parameterized types without parents
- empty string expected when tying an undefined variable to a Str type constraint
- Document that Type::Tiny "coercion" attribute accepts arrayref to be passed to add_type_coercions
- Type::Params: unexpected error when die'ing in goto_next in a multiple signature HOT 1
- Optional accepts multiple parameters, only uses the first, but refers to all of them in error messages
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from p5-type-tiny.