[m-rev.] trivial diff: fix failure of hard_coded/foreign_import_module
Julien Fischer
juliensf at csse.unimelb.edu.au
Mon Jul 16 15:03:17 AEST 2007
Estimated hours taken: 0.2
Branches: main
Fix the failure of hard_coded/foreign_import_module in C grades.
This test case previously relied on an undocumented "feature" of export
pragmas, namely that an export pragma would export a procedure for both the
C and IL backends. The export pragma was changed to a foreign_export pragma
(but only for IL) and this broke the test in C grades.
tests/hard_coded/foreign_import_module.m:
tests/hard_coded/foreign_import_module_2.m:
Foreign export foo/2 to C.
Change uses of pragma c_code into foreign_procs.
Julien.
Index: foreign_import_module.m
===================================================================
RCS file: /home/mercury1/repository/tests/hard_coded/foreign_import_module.m,v
retrieving revision 1.4
diff -u -r1.4 foreign_import_module.m
--- foreign_import_module.m 14 Jul 2007 02:33:27 -0000 1.4
+++ foreign_import_module.m 16 Jul 2007 04:56:40 -0000
@@ -21,14 +21,17 @@
:- pragma foreign_import_module(c, foreign_import_module_2).
:- pragma foreign_import_module(il, foreign_import_module_2).
-% :- pragma foreign_import_module(il, std_util).
-:- pragma c_code(bar(X::in, Y::out), may_call_mercury,
+:- pragma foreign_proc("C",
+ bar(X::in, Y::out),
+ [may_call_mercury, promise_pure],
"
foo(X, &Y);
").
-:- pragma foreign_proc("C#", bar(X::in, Y::out),
- [may_call_mercury, promise_pure], "
+:- pragma foreign_proc("C#",
+ bar(X::in, Y::out),
+ [may_call_mercury, promise_pure],
+"
int Y1, Y2;
foreign_import_module_2.mercury_code.foo(X, ref Y1);
@@ -42,12 +45,16 @@
").
:- pred bar2(int::in, int::out) is det.
-:- pragma c_code(bar2(X::in, Y::out), may_call_mercury,
+:- pragma foreign_proc("C",
+ bar2(X::in, Y::out),
+ [may_call_mercury, promise_pure],
"
foo(X, &Y);
").
-:- pragma foreign_proc("C#", bar2(X::in, Y::out),
- [may_call_mercury, promise_pure], "
+:- pragma foreign_proc("C#",
+ bar2(X::in, Y::out),
+ [may_call_mercury, promise_pure],
+"
int Y1 = 0, Y2 = 0;
foreign_import_module_2.mercury_code.foo(X, ref Y1);
Index: foreign_import_module_2.m
===================================================================
RCS file: /home/mercury1/repository/tests/hard_coded/foreign_import_module_2.m,v
retrieving revision 1.3
diff -u -r1.3 foreign_import_module_2.m
--- foreign_import_module_2.m 14 Jul 2007 02:33:27 -0000 1.3
+++ foreign_import_module_2.m 16 Jul 2007 04:56:11 -0000
@@ -9,6 +9,7 @@
:- import_module int.
:- pragma foreign_export("IL", foo(in, out), "foo").
+:- pragma foreign_export("C", foo(in, out), "foo").
foo(X, X+1).
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list