[m-dev.] for review: Aditi update round 2 [1]
Fergus Henderson
fjh at cs.mu.OZ.AU
Mon Jul 5 15:44:26 AEST 1999
Those changes look fine.
Cheers,
Fergus.
On 05-Jul-1999, Simon Taylor <stayl at cs.mu.OZ.AU> wrote:
> >
> > On 02-Jul-1999, Simon Taylor <stayl at cs.mu.OZ.AU> wrote:
> > > compiler/mercury_to_mercury.m:
> > > Add unary prefix operators `aditi_bottom_up' and `aditi_top_down',
> > > used as qualifiers on lambda expressions.
> > > + Add infix operator `==>' to separate the tuples in an
> > > + `aditi_modify' call.
>
> > Oh, I see you did actually modify ops.m, but I don't think you mentioned
> > it in the log message.
>
> `library/ops.m:' was the line above what you quoted (it didn't show up
> in the relative diff). I've added the operators to doc/transition_guide.texi.
>
>
> > > - % Shared constant cells can be allocated in static data.
> > > - % Others must be created on the heap.
> > > + % Cells marked `cell_is_shared' can be allocated in read-only memory.
> > > + % Cells marked `cell_is_unique' must be writeable.
> >
> > I suggest
> >
> > % Cells marked `cell_is_shared' can be allocated in read-only memory,
> > % and can be shared.
> > % Cells marked `cell_is_unique' must be writeable, and therefore
> > % cannot be shared.
>
> OK.
>
>
> --- compiler/make_hlds.m 1999/07/05 01:26:50 1.9
> +++ compiler/make_hlds.m 1999/07/05 01:29:24
> @@ -4914,8 +4914,15 @@
> aditi_update_arity_error(Context, UpdateStr, Arity, ExpectedArities) -->
> io__set_exit_status(1),
> { MaybePredOrFunc = no },
> - report_error_num_args(yes, Context, MaybePredOrFunc,
> - unqualified(UpdateStr), Arity, ExpectedArities).
> + prog_out__write_context(Context),
> + io__write_string("Error: "),
> + { MaybePredOrFunc = no },
> + report_error_num_args(MaybePredOrFunc, Arity, ExpectedArities),
> + io__nl,
> + prog_out__write_context(Context),
> + io__write_string(" in `"),
> + io__write_string(UpdateStr),
> + io__write_string("'.\n").
>
> % Produce an invalid goal when parsing of an Aditi update fails.
> :- pred invalid_aditi_update_goal(string, list(prog_term), hlds_goal_info,
> --- compiler/post_typecheck.m 1999/07/05 02:02:29 1.7
> +++ compiler/post_typecheck.m 1999/07/05 02:02:45
> @@ -525,13 +525,13 @@
> ;
> io__set_exit_status(1),
> prog_out__write_context(Context),
> - io__write_string("In call to "),
> + io__write_string("In "),
> hlds_out__write_call_id(
> generic_call(aditi_builtin(Builtin, CallId))
> ),
> io__write_string(":\n"),
> prog_out__write_context(Context),
> - io__write_string(" the modified "),
> + io__write_string(" error: the modified "),
> { pred_info_get_is_pred_or_func(PredInfo, PredOrFunc) },
> hlds_out__write_pred_or_func(PredOrFunc),
> io__write_string(" is not a base relation.\n")
> --- compiler/typecheck.m 1999/07/05 01:24:41 1.7
> +++ compiler/typecheck.m 1999/07/05 02:55:03
> @@ -153,14 +153,15 @@
> :- mode typecheck__reduce_context_by_rule_application(in, in, in, in, in, out,
> in, out, in, out) is det.
>
> - % report_error_num_args(IsFirst, Context, MaybePredOrFunc,
> - % SymName, Arity, CorrectArities).
> - % Report an error for a call with the wrong number of arguments.
> - % `IsFirst' should be `yes' if there are no previous lines in the
> - % error message.
> -:- pred report_error_num_args(bool, term__context, maybe(pred_or_func),
> - sym_name, int, list(int), io__state, io__state).
> -:- mode report_error_num_args(in, in, in, in, in, in, di, uo) is det.
> + % report_error_num_args(MaybePredOrFunc, Arity, CorrectArities).
> + %
> + % Write
> + % "wrong number of arguments (<Arity>; should be <CorrectArities>)",
> + % adjusting `Arity' and `CorrectArities' if `MaybePredOrFunc' is
> + % `yes(function)'.
> +:- pred report_error_num_args(maybe(pred_or_func), int, list(int),
> + io__state, io__state).
> +:- mode report_error_num_args(in, in, in, di, uo) is det.
>
> %-----------------------------------------------------------------------------%
> %-----------------------------------------------------------------------------%
> @@ -5028,19 +5029,18 @@
> PredOrFunc - SymName/Arity, Arities) -->
> write_context_and_pred_id(TypeCheckInfo),
> { typecheck_info_get_context(TypeCheckInfo, Context) },
> - report_error_num_args(no, Context, yes(PredOrFunc),
> - SymName, Arity, Arities).
> -
> -report_error_num_args(First, Context, MaybePredOrFunc,
> - SymName, Arity0, Arities0) -->
> prog_out__write_context(Context),
> - (
> - { First = yes },
> - io__write_string("Error: ")
> - ;
> - { First = no },
> - io__write_string(" error: ")
> - ),
> + io__write_string(" error: "),
> + report_error_num_args(yes(PredOrFunc), Arity, Arities),
> + io__nl,
> + prog_out__write_context(Context),
> + io__write_string(" in call to "),
> + hlds_out__write_pred_or_func(PredOrFunc),
> + io__write_string(" `"),
> + prog_out__write_sym_name(SymName),
> + io__write_string("'.\n").
> +
> +report_error_num_args(MaybePredOrFunc, Arity0, Arities0) -->
> io__write_string("wrong number of arguments ("),
>
> % Adjust arities for functions.
> @@ -5060,19 +5060,7 @@
> io__write_int(Arity),
> io__write_string("; should be "),
> report_error_right_num_args(Arities),
> - io__write_string(")\n"),
> - prog_out__write_context(Context),
> - io__write_string(" in call to "),
> - (
> - { MaybePredOrFunc = yes(PredOrFunc) },
> - hlds_out__write_pred_or_func(PredOrFunc),
> - io__write_string(" ")
> - ;
> - { MaybePredOrFunc = no }
> - ),
> - io__write_string("`"),
> - prog_out__write_sym_name(SymName),
> - io__write_string("'.\n").
> + io__write_string(")").
>
> :- pred report_error_right_num_args(list(int), io__state, io__state).
> :- mode report_error_right_num_args(in, di, uo) is det.
> @@ -5210,11 +5198,10 @@
> :- mode report_wrong_arity_constructor(in, in, in, in, di, uo) is det.
>
> report_wrong_arity_constructor(Name, Arity, ActualArities, Context) -->
> - io__write_string(" error: wrong number of arguments ("),
> - io__write_int(Arity),
> - io__write_string("; should be "),
> - report_error_right_num_args(ActualArities),
> - io__write_string(")\n"),
> + io__write_string(" error: "),
> + { MaybePredOrFunc = no },
> + report_error_num_args(MaybePredOrFunc, Arity, ActualArities),
> + io__nl,
> prog_out__write_context(Context),
> io__write_string(" in use of constructor `"),
> prog_out__write_sym_name(Name),
> Index: doc/transition_guide.texi
> ===================================================================
> RCS file: /home/staff/zs/imp/mercury/doc/transition_guide.texi,v
> retrieving revision 1.27
> diff -u -u -r1.27 transition_guide.texi
> --- transition_guide.texi 1999/03/24 13:09:02 1.27
> +++ transition_guide.texi 1999/07/03 23:49:23
> @@ -134,6 +134,7 @@
> = xfx 700
> =< xfx 700
> == xfx 700
> +==> xfx 1175
> => xfy 920
> > xfx 700
> >= xfx 700
> @@ -144,6 +145,8 @@
> \= xfx 700
> ^ xfy 200
> ~ fy 900
> +aditi_bottom_up fx 500
> +aditi_top_down fx 500
> all fxy 950
> and xfy 720
> div yfx 400
> Index: library/ops.m
> ===================================================================
> RCS file: /home/staff/zs/imp/mercury/library/ops.m,v
> retrieving revision 1.23
> diff -u -u -r1.23 ops.m
> --- ops.m 1998/03/03 17:26:02 1.23
> +++ ops.m 1999/07/03 23:52:18
> @@ -116,6 +116,8 @@
> ops__lookup_op(_OpTable, Name) :-
> ops__op_table(Name, _, _, _).
>
> + % Changes here may require changes to compiler/mercury_to_mercury.m
> + % and doc/transition_guide.texi.
> :- pred ops__op_table(string, ops__category, ops__specifier, ops__priority).
> :- mode ops__op_table(in, in, out, out) is semidet.
> :- mode ops__op_table(in, out, out, out) is nondet.
>
> --- tests/invalid/aditi_update_errors.err_exp 1999/07/05 01:37:23 1.3
> +++ tests/invalid/aditi_update_errors.err_exp 1999/07/05 01:38:02
> @@ -1,12 +1,12 @@
> aditi_update_errors.m:118: Error: wrong number of arguments (5; should be 3 or 4)
> -aditi_update_errors.m:118: in call to `aditi_modify'.
> +aditi_update_errors.m:118: in `aditi_modify'.
> aditi_update_errors.m:117: Error: expected
> aditi_update_errors.m:117: `aditi_modify(
> aditi_update_errors.m:117: (p(<Args0>) ==> p(<Args>) :- <Goal>),
> aditi_update_errors.m:117: DB0, DB)'
> aditi_update_errors.m:117: or `aditi_modify(PredOrFunc p/N, Closure, DB0, DB)'.
> aditi_update_errors.m:108: Error: wrong number of arguments (5; should be 3 or 4)
> -aditi_update_errors.m:108: in call to `aditi_modify'.
> +aditi_update_errors.m:108: in `aditi_modify'.
> aditi_update_errors.m:107: Error: expected
> aditi_update_errors.m:107: `aditi_modify(
> aditi_update_errors.m:107: (p(<Args0>) ==> p(<Args>) :- <Goal>),
> @@ -18,10 +18,10 @@
> aditi_update_errors.m:098: DB0, DB)'
> aditi_update_errors.m:098: or `aditi_modify(PredOrFunc p/N, Closure, DB0, DB)'.
> aditi_update_errors.m:094: Error: wrong number of arguments (5; should be 4)
> -aditi_update_errors.m:094: in call to `aditi_bulk_delete'.
> +aditi_update_errors.m:094: in `aditi_bulk_delete'.
> aditi_update_errors.m:093: Error: expected `PredOrFunc Name/Arity' in call to `aditi_bulk_delete'.
> aditi_update_errors.m:084: Error: wrong number of arguments (5; should be 4)
> -aditi_update_errors.m:084: in call to `aditi_bulk_delete'.
> +aditi_update_errors.m:084: in `aditi_bulk_delete'.
> aditi_update_errors.m:083: Error: expected `PredOrFunc Name/Arity' in call to `aditi_bulk_insert'.
> aditi_update_errors.m:075: Error: expected `aditi_delete((p(<Args>) :- <Goal>), DB0, DB)'
> aditi_update_errors.m:075: or `aditi_delete(PredOrFunc p/N, Closure, DB0, DB)'.
> @@ -32,9 +32,9 @@
> aditi_update_errors.m:063: Error: expected `aditi_delete((p(<Args>) :- <Goal>), DB0, DB)'
> aditi_update_errors.m:063: or `aditi_delete(PredOrFunc p/N, Closure, DB0, DB)'.
> aditi_update_errors.m:061: Error: wrong number of arguments (4; should be 3)
> -aditi_update_errors.m:061: in call to `aditi_insert'.
> +aditi_update_errors.m:061: in `aditi_insert'.
> aditi_update_errors.m:060: Error: wrong number of arguments (4; should be 3)
> -aditi_update_errors.m:060: in call to `aditi_insert'.
> +aditi_update_errors.m:060: in `aditi_insert'.
> aditi_update_errors.m:058: Error: expected tuple to insert in call to `aditi_insert'
> aditi_update_errors.m:100: In clause for predicate `aditi_update_errors:aditi_update_syntax/2':
> aditi_update_errors.m:100: warning: variable `X' has overlapping scopes.
> --------------------------------------------------------------------------
> mercury-developers mailing list
> Post messages to: mercury-developers at cs.mu.oz.au
> Administrative Queries: owner-mercury-developers at cs.mu.oz.au
> Subscriptions: mercury-developers-request at cs.mu.oz.au
> --------------------------------------------------------------------------
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list