Commit Graph

390 Commits

Author SHA1 Message Date
normalcoder
5e1c0f26bf Support callbacks in ffi for gambit 2020-06-01 02:59:16 +03:00
normalcoder
e001d266fe Add sys/time.h to satisfy xcode.
It seems relevant to all BSD systems.

In xcode the option -Wno-error-implicit-function-declaration is enabled. So the following error occured:
Idris2/support/c/idris_file.c:76:13: Missing '#include <sys/time.h>'; declaration of 'select' must be imported from module 'Darwin.POSIX.sys.time' before it is required

I hope it won't break anything on linux.
2020-06-01 00:48:19 +03:00
Edwin Brady
54119bc4e2
Merge pull request #210 from edwinb/elab-reflection
Initial steps to elaborator reflection
2020-05-31 15:06:50 +01:00
Edwin Brady
5b20fbd45c Workaround for bug in bootstrap version
The bootstrap version has an occasional bug with as patterns, which is
tripped by elabScript. This works around it.
(I'd rather do this than update the Scheme, since Idris2-boot will still
work this way!)
2020-05-31 14:48:40 +01:00
Edwin Brady
106235c165 Allow scripts to inspect goal
If available (sometimes, say a top level expression, it might need
inferring so there'll be no goal available). Also add the ability to log
the current goal, or indeed any term.
2020-05-31 14:33:34 +01:00
Edwin Brady
9544e05da1 Process elaborator scripts
Still all they can do is check and log. Now scripts must return
something of type TT, which is in practice a TTImp that goes to the
elaborator for final checking
2020-05-31 13:05:06 +01:00
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
bb240d4390
Merge pull request #206 from edwinb/coverage-fix
Calculate compile time references even in case
2020-05-30 22:15:18 +01:00
Edwin Brady
26e6e1ed82 Calculate compile time references even in case
If we don't do this, we don't look inside case blocks to check they
cover, and so we might miss coverage errors in nested case blocks.
Fixes #202
2020-05-30 21:53:29 +01:00
Edwin Brady
12aa6b6228
Merge pull request #204 from edwinb/fix-vim
findIpkg needs to set working directory
2020-05-30 19:22:01 +01:00
Edwin Brady
773d0dfdee findIpkg needs to set working directory
This makes vim mode work again.
I don't know a good way to test this, since it involves dealing with
absolute paths. If anyone has the bash skills to get this working in a
pkg test, please do...
2020-05-30 18:49:48 +01:00
Edwin Brady
e7baf313f0
Merge pull request #203 from edwinb/visibility
Add visibility rules on types
2020-05-30 18:01:24 +01:00
Edwin Brady
c212255290 IOArray needs to export max 2020-05-30 17:40:48 +01:00
Edwin Brady
ecaa73bad5 Update test result
Not sure why this didn't fail for me locally... possibly libraries out
of sync.
2020-05-30 17:30:31 +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
Edwin Brady
6c37636c1b
Merge pull request #200 from edwinb/findipkg
Allow absolute paths in --find-ipkg
2020-05-30 16:13:02 +01:00
andylokandy
f007c7816e Sync Utils.Path with System.Path 2020-05-30 21:51:12 +08:00
andylokandy
1de3c3bb15 Make pathToNS handle absolute path 2020-05-30 21:43:48 +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
Edwin Brady
24664dd9b1 Allow absolute paths in --find-ipkg
Otherwise they need to be relative to know where the root of the module
tree is, so report an error with absolute paths in other cases.
2020-05-30 12:31:44 +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
5fd0f77f4e
Merge pull request #198 from edwinb/path-fix
Allow parsing multiple separators in Path
2020-05-30 11:38:25 +01:00
Edwin Brady
e067355c58 Allow parsing multiple separators in Path
Might help with #194
2020-05-30 11:19:28 +01:00
Edwin Brady
2005269c00
Merge pull request #197 from edwinb/reflection
Make a start on reflection
2020-05-29 23:23:33 +01:00
Edwin Brady
eb141cd54e Oops, forgot Elab.Quote 2020-05-29 22:47: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
1d87e3cd18
Merge pull request #192 from edwinb/as-patterns
As patterns
2020-05-28 19:46:31 +01:00
Edwin Brady
3b5f47d922 As patterns fix
As patterns weren't getting propagated to local definitions, due to a
combination of being stored as let bindings and being part of a pattern
scrutinee. The solution removes the computation behaviour, but that is
consistent with the way let works everywhere else.

(If we do as patterns as let bindings, the way case and locals elaborate
mean that the value gets recomputed. Fixing this would require changing
the way the core works, and I'm not going to do that for a while.)
2020-05-28 18:57:06 +01:00
Edwin Brady
aad56c723f
Merge pull request #191 from edwinb/totality
Totality checking
2020-05-28 16:28:06 +01:00
Edwin Brady
fdda6b1a70 Merge https://github.com/idris-lang/Idris2 2020-05-28 16:16:23 +01:00
Niklas Larsson
40614638b7
Merge pull request #121 from timsueberkrueb/add-popen-pclose
Add popen and pclose from Idris 1
2020-05-28 17:13:26 +02:00
Edwin Brady
8c5d5055fa Update scheme
Changing the prelude totality default means we need to update the scheme
to be able to cope with its new meaning
2020-05-28 16:05:08 +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
42a1522a3b Try to make Windows happy with backslashes 2020-05-28 16:42:56 +02:00
Edwin Brady
2223d50c3a Skip totality check on case blocks and MNs
These are checked as part of checking the top level names
2020-05-28 15:32:46 +01:00
Edwin Brady
674027f7ce Termination checking performance improvement
Remove duplicates from the size change graph, and cut short the search
on encountering a name with an already known termination status.
2020-05-28 15:17:22 +01:00
Fabián Heredia Montiel
97366f022d Add missing totality annotations 2020-05-28 15:17:14 +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
Fabián Heredia Montiel
fd58d25783 Remove unused imports from Idris.Main 2020-05-28 14:56:28 +01:00
Edwin Brady
684c5037ae
Merge pull request #190 from edwinb/various-fixes
Various fixes
2020-05-28 13:18:21 +01:00
Edwin Brady
6ffe4c5257 Don't write metavariable types to ttc!
On second thoughts, and after further experimentation, better to recheck
the metavariable if it arises in linearity checking, because the type
could be very big and in general will be much bigger than the
definition. If this turns out to be a performance issue later, we can
revisit it.
2020-05-28 12:42:38 +01:00
Edwin Brady
00d6027b75 Unset tcinline flag after checking interface
In this case, it's only needed to ensure the dictionaries are inlined
when checking recursive methods, so can be unset once we're done, to
save excessive inlining when totality checking later.
2020-05-28 12:38:49 +01:00
Edwin Brady
a4671bae30 Save metavariable types in ttc
It's a small performance hit, but not as big as it used to be because we
don't load everything any more. This is necessary because saved
metavariables might turn up during evaluation, and then be needed in the
final linearity check. Another way is to check them again if this
happens, but there's a risk that might be even more expensive (and
saving the type is much safter anyway).
2020-05-28 12:00:39 +01:00
Tim Süberkrüb
c2dfe7de7f Add popen and pclose from Idris 1 2020-05-28 12:58:03 +02:00
Edwin Brady
dddd95e5da
Merge pull request #182 from edwinb/hash-public-import
Fix hash generation of public imports
2020-05-27 22:51:57 +01:00
Edwin Brady
315f8bff54 Fix hash generation of public imports
public imports need to change the present modules hash, but we were
updating before initialising the hash, so they never got included. Oops!
2020-05-27 22:25:40 +01:00