This is (for once) not a breaking changes, instead backends will need to opt in to this change, using the utilities in Compiler.NoMangle. See the js backend for an example of how to do this.
This is the first step to being able to use idris to create libraries usable by other languages.
* Only normalise a search goal if it's fast
While we do end up normalising it anyway on success, there might be
things blocking it that make the intermediate terms very big, so only do
it speculatively to see if it's quick.
* Get information about names in reflection
Currently this is only whether it's a function, or data or type
constructor. I expect more may be useful/possible.
While we do end up normalising it anyway on success, there might be
things blocking it that make the intermediate terms very big, so only do
it speculatively to see if it's quick.
The prelude interfaces that have default definitions for all of
their fields are declared total so that users are forced to think
about meeting the minimal requirements for an implementation to be
valid.
* Add field for universe level to TType
This doesn't do anything yet, other than introduce new universe
variables whenever we introduce a new type, but it's the first step
towards checking the universe hierarchy. Next step is to add constraints
when checking pi, unifying/converting types, and when adding data
constructors.
* TTC version increment
Thought I'd done this, but apparently I didn't save the file. Oops!
* Add structure for universe constraints
* Fix display of ambiguity errors
We need to store the Context in errors at the point where the error
occurs, or we might get some nonsense in the message. There's still a
couple of places in Error where we don't do this right. This fixes one
of them, and improves a few messages in the process.
We need to store the Context in errors at the point where the error
occurs, or we might get some nonsense in the message. There's still a
couple of places in Error where we don't do this right. This fixes one
of them, and improves a few messages in the process.
* [ new ] :doc for keywords
* [ doc ] for visibility
* [ more ] fixing help text, sentence for "mutual"
* [ doc ] for if then else
* [ doc ] for implicit arguments
* [ doc ] import
* [ cleanup ] doc for data
* [ doc ] for record
* [ doc ] for forall quantifier
* [ doc ] for `in' keyword
* [ doc ] for parameters block
* [ fix ] missing fence
* [ doc ] for where and mutual blocks
* [ doc ] for namespace blocks
* [ doc ] for with/proof
* [ doc ] for do blocks
* [ doc ] for rewrite
* [ doc ] for let binding
* [ doc ] for case...of and interfaces
* [ doc ] for fixity
Also fix some typo
Also add 1 doc comment
Some code cleanup/optimisation too:
- with vmcode interpreter, don't generate indentation
if it's not needed
- don't add inline if function marked noinline
- remove some unused logging topics