mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-25 14:24:11 +00:00
Estimated hours taken: 5 Branches: main Allow field names to be used in the paths used with subterm dependency tracking. Allow the user to cd to the return value of a function by giving the number of arguments plus one as an argument to the `cd' command. browser/browse.m: Export the predicate that removed ".." from paths. Make the return value of this predicate a subtype, so we can be sure the simplification has been applied to the path. Allow the user to do `cd N', where N is the number of arguments of a function plus one. This will cd to the return value of the function. Add some more aliases for the directory name of the return value of a function. browser/browser_info.m: Use the new simplified_dirs inst. When converting a list of directories to a term path, look at the value the path applies to to resolve field names in the path. browser/declarative_user.m: Report an error if the user tries to track an I/O action. Call the new version of convert_dirs_to_term_path which handles field names in the path. browser/term_rep.m: Add predicates to lookup a subterm in a term representation and also to look up a named field in a term representation. tests/debugger/declarative/Mercury.options: tests/debugger/declarative/Mmakefile: tests/debugger/declarative/named_fields.exp: tests/debugger/declarative/named_fields.inp: tests/debugger/declarative/named_fields.m: Test tracking of subterms using a path with a field name. tests/debugger/polymorphic_output.exp* The output of this test has changed, because cd's to the return value of a function, using a number, are now allowed.
28 lines
313 B
Mathematica
28 lines
313 B
Mathematica
:- module named_fields.
|
|
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
:- pred main(io::di, io::uo) is det.
|
|
|
|
:- implementation.
|
|
|
|
main(!IO) :-
|
|
gen_t(T),
|
|
_ = swap(T).
|
|
|
|
:- type t --->
|
|
t(
|
|
field1 :: int,
|
|
field2 :: int
|
|
).
|
|
|
|
:- pred gen_t(t :: out) is det.
|
|
|
|
gen_t(t(1, 2)).
|
|
|
|
:- func swap(t) = t.
|
|
|
|
swap(t(X, Y)) = t(Y, X).
|