Commit Graph

651 Commits

Author SHA1 Message Date
Christian Rasmussen
3a436061ca Fix IDE Mode for Atom 2020-01-31 19:21:42 +01:00
Edwin Brady
802dee2192 Fix ! notation on ifs
It wasn't lifting out things in the expression to be tested (via
desugarB).
2020-01-30 14:38:28 +00:00
Edwin Brady
56b01f476b Temporarily disable a couple of unused things
The Chicken backend and reflection code are currently unused, and add to
memory usage and build time, so best leave them out for the moment.

They will be back! But probably best to wait until we can self host -
which hopefully won't be long - and we can take advantage of some of
the things Idris 2 does to compile quicker and using less space!
2020-01-27 19:17:02 +00:00
Edwin Brady
6f9cca6ce3 Change inference of function types in unification
Always infer a multiplicity of W. Since we can pass a linear function to
one which expects an unrestricted argument, this gives the more general
result if the multiplicity is otherwise unknown.
This makes things like 'maybe id (+) x y' type check again even in the
presence of an 'id' which is declared linear!
2020-01-27 17:54:21 +00:00
Edwin Brady
c725d37488 Add %unbound_implicits directive
This is the same as %auto_implicits in Idris 1, but with a more
appropriate name, because auto implicits are something else.
'%unbound_implicits off' turns off implicit forall bindings. See test
basic033 for an example.
2020-01-27 17:31:53 +00:00
Edwin Brady
3cb574102a Add idiom brackets 2020-01-26 17:24:25 +00:00
Edwin Brady
1da3af5b2a Add ! notation
In a small change from Idris 1, this lifts to the nearest binder or
block, so doesn't lift past an explicit "do" in particular. Blocks are:
- case branches
- if branches
- scope of local function definitions, or any binder
- do blocks
2020-01-26 16:52:25 +00:00
Edwin Brady
9cd040fcb4 Resolving ambiguity under IMustUnify
Need to use 'check' which expands ambiguous names, rather than
'checkImp' which does nothing. It won't insert any new dots since it
checks in expression context.
2020-01-25 13:23:56 +00:00
Edwin Brady
a26581f454 Use a data type for dotting reason
Then we can more safely match on it
2020-01-24 16:16:31 +00:00
Edwin Brady
118ea787c3 Add syntax for 'using' blocks 2020-01-24 15:21:16 +00:00
Edwin Brady
c84e2b5cb7 void's argument is certainly irrelevant!
Since it's the empty type...
2020-01-23 17:45:19 +00:00
Edwin Brady
04e4ebf80e Better approach to erasure in pattern matching
It's a big patch, but the summary is that it's okay to use a pattern in
an erased position if either:

- the pattern can also be solved by unification (this is the same as
  'dot patterns' for matching on non-constructor forms)
- the argument position is detaggable w.r.t. non-erased arguments, which
  means we can tell which pattern it is without pattern matching

The second case, in particular, means we can still pattern match on
proof terms which turn out to be irrelevant, especially Refl.

Fixes #178
2020-01-21 18:47:43 +00:00
Edwin Brady
6dd9c1296f Remove duplicate error display 2020-01-19 20:35:48 +00:00
Edwin Brady
641be8b1e6 Merge branch 'master' of github.com:edwinb/Idris2 2020-01-19 16:59:34 +00:00
Edwin Brady
5fa2e19632 Merge branch 'ohad-linearity-clean' 2020-01-19 16:56:30 +00:00
Edwin Brady
af9e920d74 Merge branch 'linearity-clean' of https://github.com/ohad/Idris2 into ohad-linearity-clean 2020-01-19 16:56:13 +00:00
Edwin Brady
9d0e2d8522
Merge pull request #182 from andrevidela/syntax-compiler-inline
Tidying up Inline.idr for streaming
2020-01-19 16:53:06 +00:00
Edwin Brady
16dd76e580
Merge pull request #172 from MilanKral/https
Use HTTPS instead of HTTP
2020-01-19 16:50:41 +00:00
Edwin Brady
ea8c22135c
Merge pull request #156 from clayrat/misc-fixes
Misc fixes and additions
2020-01-19 16:48:47 +00:00
Edwin Brady
a275b57a81
Merge pull request #154 from abailly/better-ide-mode
Improve IDE mode to provide basic Emacs mode interaction
2020-01-19 16:47:18 +00:00
Edwin Brady
02e716dfe8
Merge pull request #180 from ohad/contrib
Create a contrib directory in the standard library
2020-01-19 16:45:00 +00:00
Edwin Brady
692bd8a547 Generated names need to be unique in clauses
Otherwise we might think we've dealt with an erased name when we haven't
- given that clauses are compiled all together.
Fixes #186
2020-01-19 16:36:30 +00:00
Edwin Brady
f81085cf67 Normalise goal on initialising proof search
It needs normalising anyway to get for determining arguments, so might
as well do it up front (it can save time later).
2020-01-18 23:37:20 +00:00
Edwin Brady
b8a8f0ef1b Some fixes in time logging code 2020-01-18 15:14:23 +00:00
Edwin Brady
7e54065e00 Remove need for renameVars in unification
I don't know why I didn't do it this way in the first place... it's only
a small improvement, but saves a traversal of a potentiall big term.
2020-01-16 16:26:26 +00:00
Alex Gryzlov
ce15b48a78 Merge remote-tracking branch 'upstream/master' into misc-fixes 2020-01-15 22:52:38 +01:00
Edwin Brady
6495d603d7 Add %unifyLog for debugging
Prints debugging logs while elaborating the argument
2020-01-15 09:49:41 +00:00
Edwin Brady
d619c09ba3 Remove unnecessary solveConstraints 2020-01-13 11:49:16 +00:00
Edwin Brady
fe74d6bb7c Add impossibility flag to Erased
This is to help coverage checking, for LHS clauses which are impossible,
so that we can build the complete case tree from the impossible clauses
too.
2020-01-12 20:06:02 +00:00
Edwin Brady
751fd1f36a Experiment with hole name display
If unelaborating a term that's just a hole, show the scope it was
created in too, to help with error messages
2020-01-11 23:34:44 +00:00
Edwin Brady
62a86db1d5 Fix build! 2020-01-11 23:08:30 +00:00
Edwin Brady
4ce469cc03 Name choice of holes
The names should give more of a hint as to where the holes were created.
Might help with #161.
2020-01-11 22:52:18 +00:00
Edwin Brady
abd801c45a
Merge pull request #177 from SPY/testfix/chez010-macos
Fix chez010 test on MacOS
2020-01-11 22:50:16 +00:00
Edwin Brady
da293d1ce8 Check constructors are fully applied in case trees
This is necessary to build case trees correctly, and without this, we
can get mysterious and hard to debug run time errors!
2020-01-11 17:27:27 +00:00
Arnaud Bailly
432cc7ca5c Merge branch 'master' of https://github.com/edwinb/Idris2 into better-ide-mode 2020-01-11 09:45:39 +01:00
André Videla
a145ba99d7 Cosmetic changes in src/Compiler/Inline
Refactor LengthMatch into its own file
2020-01-10 18:26:32 +00:00
Ilya Rezvov
32b1c9b34f use an explicit extension for libcb references in %foreign pragmas 2020-01-09 11:55:33 -08:00
Ilya Rezvov
56d24e34d4 Merge remote-tracking branch 'origin/master' into testfix/chez010-macos 2020-01-09 11:44:51 -08:00
Ohad Kammar
971bfc5bbd Update prelude line numbers in a test 2020-01-09 13:06:39 +00:00
Ohad Kammar
9a591b83ac Add linearity annotations in the prelude 2020-01-09 13:05:05 +00:00
Ohad Kammar
be90749e22 Create a contrib directory in the standard library
Move the TailRec.idr and current poor-man's syntax for:
  equational reasoning (`Syntax.PreorderReasoning`)
  with proof           (`Syntax.WithProof`)
2020-01-09 12:54:55 +00:00
Edwin Brady
7cde0a7255
Merge pull request #174 from chrrasmussen/fix-double-subtraction
Fix subtraction of Double in interpreter
2020-01-09 11:41:40 +00:00
Edwin Brady
4b79b98db4
Merge pull request #173 from timmyjose/fix-mit-scheme-build-issues
Reorder Scheme compilers order to pick generic Scheme last.
2020-01-09 11:39:39 +00:00
Ilya Rezvov
b437323fd2 dylib extension added for libcb to fix chez010 test on MacOS 2020-01-01 14:23:02 -08:00
Edwin Brady
bf5b2298e0 Update test chez010
To use expressions to calculate FFI convention, so that it's tested.
2019-12-30 21:16:07 +00:00
Edwin Brady
9fe236d5b1 Allow expressions in %foreign directives
Rather than just raw Strings. They get evaluated immediately at the
point of elaboration, and this can be used to save repetition (e.g. of
shared library names) in declarations.
2019-12-30 21:10:41 +00:00
Edwin Brady
55bfceff07 Copy shared libraries to executable directory
(In the Racket/Chez back ends)
A bit ugly, but it means that after making an executable, all the
necessary files are in the same directory ready for packaging. The
executable can still only be run when the libraries are in the
racket/chez library search path. In practice at the moment that means
they need to be in the current working directory...
2019-12-30 17:34:52 +00:00
Edwin Brady
20aa7f7730 Executables now go in build/exec by default
Having a separate directory for generating executables will help deal
with packaging executables for back ends which need extra library
support, since we can copy the relevant libraries into the executable
directory and know where everything is.
2019-12-30 17:03:15 +00:00
Edwin Brady
f2a26ecfbd Deal with interface constraints in method types
To build the top level method and interface record correctly, we need to
know where to put the implicit arguments, so invent names if they don't
have them already then we'll know where to put things accurately.
2019-12-29 20:36:08 +00:00
Edwin Brady
6ab4657573 Do delayed elaborators in order they were added
Earlier solutions may influence later ones. Probably we should be
cleverer still here, and keep trying while any delayed elaborators are
run successfully, because really the order shouldn't matter!
2019-12-29 15:42:33 +00:00