mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-10 11:23:15 +00:00
compiler/par_conj_dep.m:
Check the determinism of goals before inserting a signal in them of testing
if we should insert a signal in them.
Create a new constructor symbol in the cost_after_signal type that is
returned by should_we_push_signal when the code that we would normally
insert a signal into is unreachable.
Use an instantiation sub type to list the values of cost_after_signal that
are valid inputs to the should_we_push_signal predicate.
In should_we_push_signal: Replace some if-then-else goals with switches,
this ensures that the determinism checker can alert us when there are
uncovered values in the switches.
Merge the results of should_we_push_signal after branching code.
tests/par_conj/bug_130_unreachable.m:
This was originally bug_130.m except that it doesn't test for bug 130 but a
similar bug with the same symptom.
Simplified this test case, this still triggers the bug in unpatched
compilers.
tests/par_conj/bug_130_unreachable.exp:
The expected output for bug_130_unreachable.
tests/par_conj/bug_130_should_push_signal.m:
tests/par_conj/bug_130_should_push_signal.exp:
Discovered another bug when should_we_push_signal/4 seems to get confused
around erroneous code.
tests/par_conj/bug_130.m:
tests/par_conj/bug_130.exp:
Removed this test case since it's a duplicate of bug_130_unreachable.
1 line
12 B
Plaintext
1 line
12 B
Plaintext
state(1, []) |