From: dpvc v. a. <we...@ma...> - 2005-06-16 04:06:02
|
Log Message: ----------- Fixed a problem with auto-generated functions getting an incomplete variable list. Modified Files: -------------- pg/lib/Value: Formula.pm Revision Data ------------- Index: Formula.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/Formula.pm,v retrieving revision 1.26 retrieving revision 1.27 diff -Llib/Value/Formula.pm -Llib/Value/Formula.pm -u -r1.26 -r1.27 --- lib/Value/Formula.pm +++ lib/Value/Formula.pm @@ -81,15 +81,12 @@ if ($l->promotePrecedence($r)) {return $r->$call($l,!$flag)} if ($flag) {my $tmp = $l; $l = $r; $r = $tmp} my $formula = $pkg->blank; my $parser = $formula->{context}{parser}; - my $vars = {}; if (ref($r) eq $pkg) { $formula->{context} = $r->{context}; - $vars = {%{$vars},%{$r->{variables}}}; $r = $r->{tree}->copy($formula); } if (ref($l) eq $pkg) { $formula->{context} = $l->{context}; - $vars = {%{$vars},%{$l->{variables}}}; $l = $l->{tree}->copy($formula); } $l = $pkg->new($l) if (!ref($l) && Value::getType($formula,$l) eq "unknown"); @@ -99,8 +96,8 @@ $bop = 'U' if $bop eq '+' && ($l->type =~ m/Interval|Union/ || $r->type =~ m/Interval|Union/); $formula->{tree} = $parser->{BOP}->new($formula,$bop,$l,$r); - $formula->{variables} = {%{$vars}}; - return $formula->eval if scalar(%{$vars}) == 0; + $formula->{variables} = $formula->{tree}->getVariables; + return $formula->eval if scalar(%{$formula->{variables}}) == 0; return $formula; } |