mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 18:03:36 +00:00
Currently, we return a placeholder string ("foreignxx") if we attempt to look
up the functor of a foreign type in the C# or Java grades. For C, we return a
string of the form:
<<foreign(Name, Rep)>>
where Name is the type's Mercury name and Rep is its "value" as results from
casting it to (void *) and then using sprintf's %p conversion specifier. Do
something similar for both the C# and Java grades, except that for Rep we
return the output of the calling the toString() (ToString()) method. If the
object in question is a null reference then we return "null" for Rep.
Document how the predicates in the deconstruct module handle foreign types.
library/rtti_implementation.m:
Return more information about foreign type functors.
library/deconstruct.m:
Make the above changes to the documentation.
tests/hard_coded/csharp_print_foreign.{m,exp}:
tests/hard_coded/java_print_foreign.{m,exp}:
Tests of the new functionality in the C# and Java grades.
tests/hard_coded/Mmakefile:
Add the new tests.
Add a new category of test programs that are only run in the C# grades.
9 lines
312 B
Plaintext
9 lines
312 B
Plaintext
'<<foreign(foreign_bool, True)>>'
|
|
'<<foreign(foreign_char, A)>>'
|
|
'<<foreign(foreign_int, 561)>>'
|
|
'<<foreign(foreign_long, 561)>>'
|
|
'<<foreign(foreign_float, 3.402823E+38)>>'
|
|
'<<foreign(foreign_double, 1.79769313486232E+308)>>'
|
|
'<<foreign(uuid, 00000000-0000-0000-0000-000000000000)>>'
|
|
'<<foreign(object, null)>>'
|