From 55f82a803e59ad68a56714ddf008b4f82baea3a3 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Mon, 27 May 2013 10:44:06 +0200 Subject: [PATCH] Automake::Rule: expose suffix rules as a function, not a scalar This is just a preparatory refactoring in view of future patches. No semantic change is intended. * lib/Automake/Rule.pm ($suffix_rules): Turn from a package-level variable to a lexical variable. (suffix_rule): New function, expose the details of $suffix_rules that are actually required by code outside thus modules --- and only those details, no more. (@EXPORT): Adjust. * automake.in (derive_suffix): Likewise. Signed-off-by: Stefano Lattarini --- automake.in | 9 ++++----- lib/Automake/Rule.pm | 20 +++++++++++++++++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/automake.in b/automake.in index ef2cf6d..7829875 100644 --- a/automake.in +++ b/automake.in @@ -5990,12 +5990,11 @@ sub derive_suffix ($$) { my ($source_ext, $obj) = @_; - while (! $extension_map{$source_ext} - && $source_ext ne $obj - && exists $suffix_rules->{$source_ext} - && exists $suffix_rules->{$source_ext}{$obj}) + while (!$extension_map{$source_ext} && $source_ext ne $obj) { - $source_ext = $suffix_rules->{$source_ext}{$obj}[0]; + my $new_source_ext = suffix_rule ($source_ext, $obj); + last if not defined $new_source_ext; + $source_ext = $new_source_ext; } return $source_ext; diff --git a/lib/Automake/Rule.pm b/lib/Automake/Rule.pm index 47f3a9d..5f6f3a2 100644 --- a/lib/Automake/Rule.pm +++ b/lib/Automake/Rule.pm @@ -29,8 +29,8 @@ use Automake::DisjConditions; require Exporter; use vars '@ISA', '@EXPORT', '@EXPORT_OK'; @ISA = qw/Automake::Item Exporter/; -@EXPORT = qw (reset register_suffix_rule suffix_rules_count - suffixes rules $suffix_rules $KNOWN_EXTENSIONS_PATTERN +@EXPORT = qw (reset register_suffix_rule suffix_rules_count suffix_rule + suffixes rules $KNOWN_EXTENSIONS_PATTERN depend %dependencies %actions register_action accept_extensions reject_rule msg_rule msg_cond_rule err_rule err_cond_rule @@ -154,7 +154,7 @@ C function. =cut -use vars '$suffix_rules'; +my $suffix_rules; =item C<$KNOWN_EXTENSIONS_PATTERN> @@ -384,6 +384,20 @@ sub reset() %actions = (); } +=item C + +XXX + +=cut + +sub suffix_rule ($$) +{ + my ($source_ext, $obj) = @_; + return undef unless (exists $suffix_rules->{$source_ext} and + exists $suffix_rules->{$source_ext}{$obj}); + return $suffix_rules->{$source_ext}{$obj}[0]; +} + =item C Register a suffix rule defined on C<$where> that transforms -- 2.7.4