[Parseperl-discuss] Bug: undef location for empty list
Brought to you by:
adamkennedy
From: Chris D. <ch...@ch...> - 2006-02-09 17:47:22
|
Adam et al., I've discovered that an empty list falsely returns undef from its location() method. Consider this code snippet: "()" which yields a tree like this: PPI::Document PPI::Structure::List ( ... ) If I try to access the location of that List, I get undef. For example: use Data::Dumper; use PPI::Document; $d = PPI::Document->new(\"()"); $d->index_locations; print Dumper($d->find("PPI::Structure::List")->[0]->location); $VAR1 = undef; This should instead do something like this: print Dumper($d->find("PPI::Structure::List")->[0]->{start}- >location); $VAR1 = [1,1,1]; The reason is that the List has no children, and thus no PPI::Token instances to hold a location. Instead, List nodes have "start" and "finish" properties that hold their bracket tokens. To solve this, I propose that the PPI::Structure::List class overrides location() to return the location of its start token. If this sounds sensible, I'd be happy to implement it. Chris -- Chris Dolan, Software Developer, http://www.chrisdolan.net/ Public key: http://www.chrisdolan.net/public.key vCard: http://www.chrisdolan.net/ChrisDolan.vcf |