Log Message:
-----------
Fix the check for equivalent answers so that it uses the limits and
other settings from the answer checker and the original formula
object.
Modified Files:
--------------
pg/lib/Value:
AnswerChecker.pm
Revision Data
-------------
Index: AnswerChecker.pm
===================================================================
RCS file: /webwork/cvs/system/pg/lib/Value/AnswerChecker.pm,v
retrieving revision 1.120
retrieving revision 1.121
diff -Llib/Value/AnswerChecker.pm -Llib/Value/AnswerChecker.pm -u -r1.120 -r1.121
--- lib/Value/AnswerChecker.pm
+++ lib/Value/AnswerChecker.pm
@@ -1646,10 +1646,14 @@
my $self = shift; my $ans = shift;
$ans->{_filter_name} = "produce_equivalence_message";
return $ans if $ans->{ans_message}; # don't overwrite other messages
- $ans->{prev_formula} = Parser::Formula($self->{context},$ans->{prev_ans});
+ my $context = $self->context;
+ $ans->{prev_formula} = Parser::Formula($context,$ans->{prev_ans});
if (defined($ans->{prev_formula}) && defined($ans->{student_formula})) {
- my $prev = eval {$self->promote($ans->{prev_formula})}; break unless defined($prev);
- $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},{});
+ my $prev = eval {$self->promote($ans->{prev_formula})->inherit($self)}; # inherit limits, etc.
+ break unless defined($prev);
+ $context->{answerHash} = $ans; # values here can override context flags
+ $ans->{prev_equals_current} = Value::cmp_compare($prev,$ans->{student_formula},$ans);
+ $context->{answerHash} = undef;
if ( !$ans->{isPreview} # not preview mode
and $ans->{prev_equals_current} # equivalent
and $ans->{prev_ans} ne $ans->{original_student_ans}) # but not identical
|