mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 11:54:02 +00:00
41 lines
1.0 KiB
Mathematica
41 lines
1.0 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
%
|
|
% Regression test.
|
|
%
|
|
% Description of bug:
|
|
% The liveness of polymorphic type variables for accurate gc
|
|
% wasn't being computed correctly in the case of if-then-else.
|
|
%
|
|
% Symptom(s) of bug:
|
|
% A sanity check in liveness.m is failed.
|
|
%
|
|
% Software error: branches of if-then-else disagree on liveness
|
|
% Then: HeadVar__3 TypeInfo_for_Y
|
|
% Else: HeadVar__3 TypeInfo_for_X TypeInfo_for_Y
|
|
%
|
|
%
|
|
% Date bug existed: 19-June-1997
|
|
% Author: trd
|
|
|
|
:- module agc_ite.
|
|
|
|
:- interface.
|
|
|
|
:- import_module list.
|
|
|
|
:- pred filter_map(pred(X, Y)::in(pred(in, out) is semidet),
|
|
list(X)::in, list(Y)::out) is det.
|
|
|
|
:- implementation.
|
|
|
|
filter_map(_, [], []).
|
|
filter_map(Pred, [Head0 | Tail0], List) :-
|
|
( if call(Pred, Head0, Head) then
|
|
List = [Head | List1]
|
|
else
|
|
List = List1
|
|
),
|
|
agc_ite.filter_map(Pred, Tail0, List1).
|