[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