Commit Graph

84 Commits

Author SHA1 Message Date
Denis Buzdalov
6815aefbe0 [ elab ] Implement file operations, e.g. applicable for type providers 2023-10-13 13:26:46 +01:00
Denis Buzdalov
1256ded110 [ elab ] Implement Ord for Count 2023-10-04 16:31:38 +01:00
G. Allais
c52b029986
[ new ] function options for case blocks (#3062) 2023-09-01 11:35:52 +01:00
Denis Buzdalov
5dcf62499d
[ elab ] Make elab scripts be able to record warnings (#2999) 2023-06-19 16:34:19 +01:00
Aleksei Volkov
298f91cf0a
[ base ] Implemented Ord for Name, Namespace and UserName (#2973) 2023-05-15 14:45:42 +01:00
madman-bob
a00b7ee7ec
Public export TTImp reflection functions (#2947)
Co-authored-by: Thomas E. Hansen <teh6@st-andrews.ac.uk>
Co-authored-by: Ohad Kammar <ohad.kammar@gmail.com>
2023-05-05 10:33:32 +01:00
G. Allais
2f55a3ef8a
[ fix ] elaboration of records' telescopes of parameters (#2816) 2022-12-15 17:55:50 +00:00
Guillaume Allais
5631608782 [ base ] deriving Foldable 2022-09-24 10:20:25 +01:00
G. Allais
55926f30c5
[ fix #2655 ] Add support for DataOpts in records (#2658) 2022-09-14 14:57:04 +01:00
Guillaume Allais
6891490ed2 [ fix ] support for implicits in Deriving.Functor
A lot of refactoring to bring these. That's hopefully the last
feature that was needed...
2022-08-29 18:35:24 +01:00
Zoe Stafford
86c060ef13
Reimplement %nomangle in terms of %export (#2604)
* Reimplement %nomangle in terms of %export
Also deprecate %nomangle

* [ lint ] fix linter errors
2022-08-15 13:26:06 +01:00
G. Allais
0cbbf97b79
[ new ] extend Deriving.Functor to (non-strictly) positive functors (#2591) 2022-07-18 14:10:46 +01:00
Guillaume Allais
8b20da7e39 [ cleanup ] remove TT from base
As discussed with edwin, let's get rid of the external TT type.
There is no way to get your hands on a TT value anyway so this
should not change anything.
2022-07-07 16:42:19 +01:00
G. Allais
4874bf2114
[ fix ] handle implicit arguments in Deriving.Functor (#2572) 2022-07-07 09:55:13 +01:00
G. Allais
aeeb338e6c
[ new ] deriving Functor (#2568) 2022-07-04 08:58:18 +01:00
Denis Buzdalov
38caff23b8 [ fix ] Make the result Show of case .. of compilable
1. The arrow was fixed
2. Put explicit type ascription into a comment
3. Don't print type when it was not present in the expression
2022-06-27 15:32:02 +01:00
Denis Buzdalov
afaa80a5ae [ re #2533 ] Fix printing of lazy values in Show TTImp 2022-06-27 15:32:02 +01:00
G. Allais
4024857d20
[ base ] Various Language.Reflection improvements (#2554) 2022-06-22 13:07:27 +01:00
Denis Buzdalov
113085d0c3 [ base ] Add a function for changing the topmost FC of a TTImp 2022-06-17 19:53:07 +01:00
Denis Buzdalov
a7fb6722a0
[ re #2533 ] Fix recently added reflection's Show (#2543) 2022-06-16 11:08:51 +01:00
Denis Buzdalov
df6f4f69cd [ doc ] Add clarification to the doc of a function of Elaboration 2022-06-16 09:49:56 +01:00
Guillaume Allais
cd324f9ff3 [ base ] Name convenience functions 2022-06-14 16:07:37 +01:00
Guillaume Allais
c9dbc3d743 [ new ] Show implementations for Language.Reflection 2022-06-14 16:07:37 +01:00
Guillaume Allais
a8fe4a778c [ base ] Show for Constants 2022-06-14 16:07:37 +01:00
Denis Buzdalov
95caed3c4f [ refactor ] Support alternative equalities for TTImp 2022-05-18 11:12:05 +01:00
Edwin Brady
7c5650e94e
Allow functions to be marked for foreign export (#2433)
* Allow functions to be marked for foreign export

This relies on the backend knowing what to do with such things, but the
general idea is to mark them with '%export "backend:exportedname"' then
'getCompileDataWith', given a back end, will search for every function
that needs to be exported, as well as every function starting from the
expression to be compiled. This will allow Idris functions to be called
from other languages, where a backend supports it.

This is hard to set up a test case for, for the moment, since no
backends actually do anything with it. So consider it a bit of a
placeholder for now.

* Add missing clause to Eq FnOpt

Thanks to @buzden
2022-04-25 13:48:30 +01:00
Denis Buzdalov
77cf47f962
[ re #2423 ] Make Eq implementations in Language.Reflection.TTImp total (#2430)
* [ re #2423 ] Turn newly added `Eq` implementations to be total
* [ fix ] Add lacking `Eq TTImp` clauses and lacking `Eq` implementations
2022-04-22 18:01:42 +01:00
G. Allais
22b98f231e
[ fix ] highlight unambiguous names in `with' (#2423) 2022-04-22 13:34:05 +01:00
Daniel Kröni
5eea546642 Aligned the signature of NoMangle from Language.Reflection.FnOpts with that of TTImp.TTImp.FnOpt'. 2022-03-30 13:34:49 +02:00
Denis Buzdalov
05d64483f6 [ refactor ] Factor out a type for primitive types out of Constant 2022-03-10 23:07:20 +00:00
Guillaume Allais
bec4a0a88e [ re #499 ] quantity-aware with-clauses 2022-02-09 09:19:40 +00:00
Balazs Komuves
c3ec522077
[ fix #1404 ] Totality annotation for data type definitions (#2179)
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: stefan-hoeck <hock@zhaw.ch>
2021-12-08 16:08:26 +00:00
Mathew Polzin
0eba4c691e
Add %deprecate pragma (#2086) 2021-11-17 10:41:03 +00:00
Zoe Stafford
3063218d46
[ new ] Add %nomangle (#2063)
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.
2021-11-09 16:23:50 +00:00
Edwin Brady
2f6ec76223
Get information about names in reflection (#2110)
* 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.
2021-11-07 15:06:53 +00:00
Denis Buzdalov
377ae22eac [ elab ] Implement Alternative for Elab using recently added Try 2021-10-25 16:16:51 +01:00
Denis Buzdalov
a47b3d7d0e
[ new ] Elaboration interface (#1860) 2021-10-25 16:16:13 +01:00
Daniel Kröni
aa107a9754
Implemented %noinline (#2027)
* Implemented %noinline

* Removed trailing spaces.

* Added missing case in Reify FnOpt

* Added error message when both %inline and %noinline are set.

* Added test.

* Changed from perror to error
2021-10-19 15:22:36 +01:00
Edwin Brady
40f72e74f0
Case building performance/heuristics (#2020)
* Case tree/coverage checking shortcuts

We were calculating some things we didn't need - we can stop computing
the type of a case operator when we know the head, because that's all we
need for coverage checking. We can also abandon checking a left hand
side for coverage purposes if we encounter an empty type. Both of these
can save quite a bit of time in complex cases.

* Normalisation heuristic for pattern variables

If they get bit, fully normalise (like we do with case types) since it's
likely a big term with lots of applications will normalise a lot.
2021-10-17 18:21:35 +01:00
Edwin Brady
cfb7395eac
Add try primitive to reflection library (#2008) 2021-10-16 11:24:12 +01:00
Guillaume ALLAIS
1877e66309 [ new ] log sugared term Elab primitive 2021-10-14 14:16:14 +01:00
Denis Buzdalov
f6281afe88
[ elab ] Erase check and quote's main argument (#1847) 2021-09-15 15:01:36 +01:00
G. Allais
32e26c5bd1
[ refactor ] introduce UserName for (UN/RF) (#1926)
Instead of having UN & RF (& Hole in the near future & maybe even
more later e.g. operator names) we have a single UN constructor
that takes a UserName instead of a String.

UserName is (for now)

```idris
data UserName : Type where
  Basic : String -> UserName -- default name constructor       e.g. map
  Field : String -> UserName -- field accessor                 e.g. .fst
  Underscore : UserName      -- no name                        e.g. _
```

This is extracted from the draft PR #1852 which is too big to easily
debug. Once this is working, I can go back to it.
2021-09-15 13:20:58 +01:00
Denis Buzdalov
940f588890 [ ttimp ] Add a utility function returning an FC by TTImp 2021-08-11 14:18:41 +01:00
Denis Buzdalov
c3398274d5 [ elab ] Add an ability to fail elab script with a custom FC 2021-08-11 14:18:41 +01:00
Zoe Stafford
0fec867583 [ fix ] Name in Language.Reflection.TT
This was different to `Name` in `Core.Name`
Specifically `CaseBlock` and `WithBlock` had an `Int` instead of a `String`
2021-07-16 20:05:49 +01:00
Giuseppe Lomurno
07c62e9eef Fixed wrong reflection of records and parameters 2021-07-16 04:28:52 +02:00
Edwin Brady
9b0ebcd08b Merge branch 'elab-name-changes' of https://github.com/MarcelineVQ/Idris2 into MarcelineVQ-elab-name-changes 2021-07-15 13:16:47 +01:00
Stefan Höck
39d596f3b9
[ new ] Support reflecting on new intX types (#1642) 2021-06-29 20:58:41 +01:00
Ruslan Feizerakhmanov
7aee7c9b7c
[ new ] --install-with-src; refactoring around FCs (#1450)
Why:

* To implement robust cross-project go-to-definition in LSP
  i.e you can jump to definition of any global name coming
  from library dependencies, as well as from the local project files.

What it does:

*  Modify `FC`s to carry `ModuleIdent` for .idr sources,
   file name for .ipkg sources or nothing for interactive runs.

*  Add `--install-with-src` to install the source code alongside
   the ttc binaries. The source is installed into the same directory
   as the corresponding ttc file. Installed sources are made read-only.

*  As we install the sources pinned to the related ttc files we gain
   the versioning of sources for free.
2021-06-05 12:53:22 +01:00