Subject: | Does strange things to the optree or parser under threads |
Unfortunately I really can't narrow this down much. It involved loading a module which used List::Gather as part of a Test::Class::Moose test suite. The symptom was that a TCM internal class didn't see k/v pairs passed to its constructor. It would complain that an attribute wasn't passed, even though a stack trace shows that k/v pair being passed to the new() sub!
Somehow the values get eaten!
Here's another example of something weird:
use strict;
use warnings;
use v5.22;
use lib 'lib';
use List::Gather;
use HTTP::Headers;
say 'foo';
Note the warning that shows up, '"my" variable $h masks earlier declaration in same scope at lib/HTTP/Headers.pm line 182.'
If you look at the code you'll see that there's no way that warning should show up.