Commit Graph

76 Commits

Author SHA1 Message Date
Edwin Brady
85c002c771 Progress on elaborator reflection
Add %runElab and start on scripts, although all they can do so far is
check a term. This does gives us, sort of, "template Idris" (as
demonstrated in test reflection002)
2020-05-31 01:36:54 +01:00
Edwin Brady
c212255290 IOArray needs to export max 2020-05-30 17:40:48 +01:00
Edwin Brady
3f914889b8 Add visibility rules on types
Can't export a type which refers to a private name. This has caught a
couple of visibility errors in the libraries, code and tests, so they've
been updated too.
2020-05-30 17:03:15 +01:00
Edwin Brady
c90410334b
Merge pull request #201 from andylokandy/pathfix
Make pathToNS handle absolute path
2020-05-30 16:13:53 +01:00
andylokandy
f007c7816e Sync Utils.Path with System.Path 2020-05-30 21:51:12 +08:00
Edwin Brady
2b08a9df0f
Merge pull request #199 from karroffel/console-api
added more functions to Control.App.Console
2020-05-30 12:42:47 +01:00
Thomas Herzog
e39477aa0e added more functions to Control.App.Console
Now all common console IO functions available from the
prelude are available through the `Control.App.Console`
interface.

Added:
- putChar
- getChar
- getCharLn
- print
- printLn

Renamed:
- getStr to getLine
2020-05-30 12:44:40 +02:00
Edwin Brady
e067355c58 Allow parsing multiple separators in Path
Might help with #194
2020-05-30 11:19:28 +01:00
Edwin Brady
e1dbcad2fc Make a start on reflection
Don't get too excited yet - I want this in so that it doesn't get too
out of sync, but I still have to think about exactly how it's going to
work in practice.
2020-05-29 22:40:29 +01:00
Edwin Brady
843b30b4d1
Merge pull request #196 from edwinb/with-experiment
Experiment %syntactic flag on with
2020-05-29 17:01:41 +01:00
Edwin Brady
d869eb666c Experiment %syntactic flag on with
This means it abstracts over the value syntactically, rather than by
value, and can significantly speed up elaboration where large types are
involved, at a cost of being less general. Try it if "with" is slow.

There are more flags we want on with (well, at least one: "proof")
2020-05-29 16:39:11 +01:00
Fabián Heredia Montiel
0537aa12f5 Let DocComments trough from Lexer to Parser 2020-05-29 10:37:04 +01:00
Edwin Brady
aad56c723f
Merge pull request #191 from edwinb/totality
Totality checking
2020-05-28 16:28:06 +01:00
Edwin Brady
4ae01d7264 %default doesn't affect interface methods
The required totality of interface methods is now only affected if
there's an explicit modifier on the method. This allows us to set
%default total on the Prelude, which is a good thing to do anyway,
without also requiring that every implementation of the interface in the
prelude has to be total, which would potentially be a pain.

Another good affect is that it speeds up totality checking elsewhere
because totality checking is done lazily, and so with the total flag set
we know in advance that prelude functions are total.
2020-05-28 15:52:03 +01:00
Tim Süberkrüb
46f7b78b0e Try to fix pclose for Windows
Co-authored-by: Niklas Larsson <metaniklas@gmail.com>
2020-05-28 16:12:26 +02:00
Tim Süberkrüb
c2dfe7de7f Add popen and pclose from Idris 1 2020-05-28 12:58:03 +02:00
Edwin Brady
6b8324db3b
Merge pull request #178 from edwinb/performance
Performance
2020-05-27 21:34:11 +01:00
Niklas Larsson
696db7f58f
Merge pull request #169 from andylokandy/pathcom
Use Path in the compiler
2020-05-27 21:23:29 +02:00
Edwin Brady
9129df359f Simplify doParse
If we're going to use assert_total. we might as well not have the
distinction between empty and non empty results, which only makes the
code harder to follow.

Also there's some kind of issue which seems to mean the token list can't
be erased if we do that. I will investigate if I can make a smaller
example.
2020-05-27 18:16:54 +01:00
Edwin Brady
c88bf7af8d Fix import loading
This was taking too long, and adding too many things, because it was
going too deep in the name of having everything accessible at the REPL
and for the compiler. So, it's done a bit differently now, only chasing
everything on a "full" load (i.e., final load at the REPL)

This has some effects:
+ As systems get bigger, load time gets better (on my machine, checking
  Idris.Main now takes 52s from scratch, down from 76s)
+ You might find import errors that you didn't previously get, because
  things were being imported that shouldn't have been. The new way is
  correct!

An unfortunate effect is that sometimes you end up getting "undefined
name" errors even if you didn't explicitly use the name, because
sometimes a module uses a name from another module in a type, which then
gets exported, and eventually needs to be reduced. This mostly happens
because there is a compile time check that should be done which I
haven't implemented yet. That is, public export definitions should only
be allowed to use names that are also public export. I'll get to this
soon.
2020-05-27 15:49:03 +01:00
andylokandy
e8b1d54e0a Refactor Core.Directory 2020-05-27 18:21:40 +08:00
andylokandy
40401b53ec Remove the duplicate isWindows 2020-05-27 03:12:54 +08:00
andylokandy
712a4df140 Gather the straw isWindowss 2020-05-26 17:59:14 +08:00
Jinwoo Lee
893fbb78c9 Provide sum' and product' separate from sum and product
Not to break backwards compatibility.
2020-05-25 09:59:18 -07:00
Jinwoo Lee
728149f2d1 [prelude] Use foldl for sum and product
To make them tail recursive. Fixes #132.
2020-05-25 09:59:18 -07:00
Edwin Brady
087cb84dda
Merge pull request #130 from clayrat/list-quantifiers
add Data.List.Quantifiers
2020-05-25 11:57:08 +01:00
Alex Gryzlov
eb04046b43 inline removed anyElim, refactor more 2020-05-25 03:53:29 +02:00
Alex Gryzlov
5757c5e5cb remove anyElim 2020-05-25 02:27:19 +02:00
Edwin Brady
1ea54e764b
Merge pull request #144 from idris-lang/coverage
%default covering
2020-05-24 20:42:08 +01:00
Edwin Brady
c3d13d0854
Merge pull request #93 from ska80/better-names
Rename some file/dir manipulation functions for consistency
2020-05-24 20:16:01 +01:00
Edwin Brady
498421a236 All functions now need to be covering by default
This has caught a couple of things in the Idris 2 code base itself. Some
tests needed partial annotations too.
2020-05-24 19:58:20 +01:00
Edwin Brady
222a6a7f31 More fine-grained assert_total in unpack
If it's around the whole thing, it might drop out if unpack is partially
evaluated by the unifier. It should be as fine grained as possible.
2020-05-24 19:13:24 +01:00
Edwin Brady
3ec8631480 More coverage checking fixes
Still a couple of things to resolve in coverage and totality checking
before we can switch on %default, so don't expect quite the right
behaviour just yet. More progress though!

Also working on this has caught a few totality errors in the Idris 2
code base that Idris 1 missed... so these are fixed on the way.
2020-05-24 18:33:43 +01:00
Alex Gryzlov
723f690f7e erase function argument of cong 2020-05-24 05:16:52 +02:00
Kamil Shakirov
80344b5435 Merge branch 'master' into better-names 2020-05-24 07:59:25 +06:00
Alex Gryzlov
4aede51098 fix typos 2020-05-24 03:18:15 +02:00
Alex Gryzlov
a312409e19 add Data.List.Quantifiers 2020-05-24 03:15:38 +02:00
Edwin Brady
ad9a2a187f Fix Char casting
For the same behaviour as Idris 1, the primitive cast should return 0 if
the integer is out of bounds. (We should probably drop the Cast
implementation though, since ideally they won't be lossy in general, but
that's an issue for another time...)

All the tests pass in racket now, for me.
2020-05-23 22:19:10 +01:00
Edwin Brady
cff5fc2625 Workaround for byte vectors in Racket
Racket appears to have a different notion of current directory than the
system does, so we need to tell it which directory we think we're in
when reading and writing bytevectors using the scheme file functions.
2020-05-23 21:37:31 +01:00
Kamil Shakirov
e61e44205b Merge branch 'master' into better-names 2020-05-24 00:26:52 +06:00
Tim Süberkrüb
5dde7063f8 Add popen and pclose from Idris 1 2020-05-23 18:42:05 +02:00
Edwin Brady
e17f66244a Move network support to libidris2_support
This makes the support stuff much simpler, and also makes the racket
bootstrap process easier
2020-05-23 15:52:33 +01:00
Edwin Brady
1524b865c0 Remove needless %cg directives
These now refer to an old library file that is no longer used since the
network library was ported to the new FFI
2020-05-23 13:06:39 +01:00
Edwin Brady
c4b8c90687
Merge pull request #111 from err0r500/minusProofsOnNats
minus proofs on Nats from Idris1
2020-05-23 12:23:14 +01:00
Niklas Larsson
77df65012c Fix Path ambiguity 2020-05-23 11:08:25 +02:00
Matthieu JACQUOT
f84850ea36 add minus proofs on Nats from Idris1 2020-05-22 22:39:09 +02:00
Edwin Brady
0958f1fd8b Keep inlining %tcinlines under let
This fixes a productivity issue with map in the parser library
2020-05-22 17:52:20 +01:00
Edwin Brady
17ee7a293a
Merge pull request #92 from ska80/base-clock
Move System.Clock from 'contrib' to 'base'
2020-05-21 19:16:55 +01:00
Edwin Brady
bd093e9cba Propagate totality options on methods
As in Idris 1 - if an interface declares a method as total or covering,
then all implementations have to satisfy that.

Temporarily turn off %default directive again, at least until totality
checking works as it should (this is probably better than removing it
from various places because I'll forget to put them back)
2020-05-21 16:04:22 +01:00
Kamil Shakirov
f696335f2d Rename some file/dir manipulation functions
Renamed:

fileRemove -> removeFile

dirOpen -> openDir
dirClose -> closeDir
rmDir -> removeDir
2020-05-21 18:32:35 +06:00