Files
mercury/LIMITATIONS
Fergus Henderson 731ae2051f Allow a predicate to have matching cc' and non-cc' modes.
Estimated hours taken: 3

Allow a predicate to have matching `cc' and `non-cc' modes.

compiler/det_analysis.m:
	If there is a call to a cc procedure in a non-cc context,
	then search for a mode of that predicate which is
	identical to the called mode except that it is not cc.
	If such a mode is found, use it, rather than reporting
	an error.

compiler/modecheck_call.m:
	Add predicate modes_are_identical_bar_cc, for use by
	det_analysis.m.

NEWS:
LIMITATIONS:
doc/reference_manual.texi:
	Document the new feature and delete documentation about the
	lack of this feature.

tests/hard_coded/Mmakefile:
tests/hard_coded/cc_and_non_cc_test.m:
tests/hard_coded/cc_and_non_cc_test.exp:
	Add a test case for the new feature.
1998-05-30 15:23:14 +00:00

28 lines
956 B
Plaintext

The current implementation does not yet completely implement the
Mercury language. The main limitations of the current implementation
are the following:
* We do not allow definite aliasing in the mode system.
Without this, partially instantiated modes are unusable,
and so are nested unique modes :-(
* The compiler does not yet use structure reuse or compile-time
garbage collection to exploit unique modes :-(
* Type inference and mode inference are a bit imperfect.
We are working on eliminating all of these problems.
In addition, design decisions in this implementation have imposed the
following fixed limits:
* Predicates and functions can have at most about 1000 arguments.
* Higher order terms are limited to arity of about 500.
These limits can be lifted (with some effort), but would possibly incur
performance penalties. Contact the Mercury team (mercury@cs.mu.oz.au) if
you find these limits are affecting your application.