Commit graph

189 commits

Author SHA1 Message Date
Folkert
0c9b49f5cd
Merge remote-tracking branch 'origin/main' into roc-dev-inline-expects 2022-11-02 23:02:22 +01:00
Ayaz Hafiz
cbd014a98a
let_import_constraint take a type index 2022-11-02 15:05:23 -05:00
Richard Feldman
5e00522a47
Merge pull request #4443 from joshuawarner32/move-min_indent-to-parse-pr
Refactor Parser trait to pass min_indent
2022-10-31 17:46:05 -07:00
Joshua Warner
07be8ec000
Refactor Parser trait to pass min_indent
This removes the need to explicitly pass thru min_indent when using the parser combinators.

My ultimate goal here is to evolve the current parser closer toward a purely combinator-based parser,
at which point we can more easily transition smoothly to a formal(ish) grammar, or expand the meanings of combinators
to include things like:
* Incremental (re)parsing
* Unified parsing and formatting code
* Better error recovery
* Using the main parser directly for syntax highlighting
2022-10-31 13:31:47 -07:00
Ayaz Hafiz
debe6332c5
Support OIOP for type aliases 2022-10-31 09:38:21 -05:00
Folkert
dbd0d30893
Merge remote-tracking branch 'origin/main' into roc-dev-inline-expects 2022-10-30 15:57:07 +01:00
Ayaz Hafiz
fc6f7d2613
Basic support for multi-ability docs 2022-10-24 14:00:46 -05:00
Ayaz Hafiz
548a235c25
Support parsing multiple abilities in a clause 2022-10-24 13:56:06 -05:00
Ayaz Hafiz
e75f3c3c79
Get rid of MemberImpl::Derived
We don't need this anymore, since derived members become Impls during
canonicalization now!
2022-10-23 20:48:07 -05:00
Ayaz Hafiz
2a21cd8c6e
Resolve ability specializations looked up in expects 2022-10-18 01:04:21 +02:00
Ayaz Hafiz
d26e9c81e0
Resolve ability specializations looked up in expects 2022-10-17 17:56:48 -05:00
Folkert
323210c547
Merge remote-tracking branch 'origin/main' into roc-dev-inline-expects 2022-10-16 13:56:30 +02:00
Ayaz Hafiz
a256947a9f
Move Eq to Bool 2022-10-12 16:37:51 -05:00
Ayaz Hafiz
bd5f5ed735
Old implementations can be overwritten before solving 2022-10-12 16:37:51 -05:00
Ayaz Hafiz
3674f6861e
Compile derived structural equality 2022-10-12 16:37:49 -05:00
Ayaz Hafiz
16d12a51c2
Add Eq to the standard library 2022-10-12 16:37:48 -05:00
Ayaz Hafiz
76ce025faa
Turn on type caching for Encode, Decode, Hash 2022-10-11 10:48:25 -05:00
Ayaz Hafiz
7e79ff55f1
Serialize abilities store and solved implementations with subs 2022-10-11 10:31:21 -05:00
Folkert
e62ab00c65
Merge remote-tracking branch 'origin/main' into roc-dev-inline-expects 2022-10-09 18:46:57 +02:00
Ayaz Hafiz
5416eb7cbf
List dependencies in the stdlib explicitly rather than hard-coding 2022-10-05 18:53:49 -05:00
Folkert
fe9da8316d
clone less 2022-10-05 23:45:31 +02:00
Ayaz Hafiz
eadbc0912a
Update the compiler to be aware of Hash 2022-10-04 10:22:22 -05:00
Ayaz Hafiz
5bf71edf0c
Some cleanup 2022-10-02 21:42:28 -05:00
Ayaz Hafiz
a6cf21dcf9
Revert "Lints"
This reverts commit f7e85b5295a44217bde9b6b83d188d84ee863d0c.
2022-10-02 21:39:48 -05:00
Ayaz Hafiz
852fd0a127
Lints 2022-10-02 21:38:04 -05:00
Ayaz Hafiz
0cc9ea4b05
Detect and report module names that don't match what they are used as
Prior to this commit, if you had a module structure like

```
| - A.roc
| - Dep
    | - B.roc
```

where `B.roc` was defined as

```
interface B exposes [] imports []
```

and `A.roc` was defined as

```
interface A exposes [] imports [Dep.B]
```

The compiler would hang on you. The reason is that even though we expect
`B` to be named `Dep.B` relative to `A`, that would not be enforced.

With this patch, we now enforce such naming schemes - a module must have
the namespaced name it is referenced by. Currently, we determine the
expected namespaced name by looking at how transitive dependencies of the
root module reference the module. In the future, once we have a package
ecosystem and a solid idea of "package roots", we can use the "package
root" to determine how a module should be named.

Closes #4094
2022-10-02 21:38:03 -05:00
Ayaz Hafiz
a5ebd7f477
Comments and optimizations for builtins 2022-10-02 21:38:03 -05:00
Ayaz Hafiz
5d649666fa
Detect and report module import cycles
Closes #3557
2022-10-02 21:38:03 -05:00
Ayaz Hafiz
c67be21636
Check that module names correspond to the paths they are defined in
Closes #3440
Closes #4050
2022-10-02 21:38:02 -05:00
Ayaz Hafiz
cc125d62bc
Remove redundant reference 2022-09-30 13:40:35 -05:00
Ayaz Hafiz
92aa0912ea
Report unused imports in modules 2022-09-30 13:40:34 -05:00
Ayaz Hafiz
ae122a0aea
Improve style 2022-09-30 13:40:34 -05:00
Ayaz Hafiz
c521668d4c
Simplify how builtin types are added to a module 2022-09-30 13:40:33 -05:00
Ayaz Hafiz
2a508721ed
Don't resolve builtin modules imported from platform interfaces as namespaced 2022-09-27 17:57:45 -05:00
Anton-4
1bf355feb9
fmt 2022-09-24 14:55:37 +02:00
Anton-4
3b0293a87d
improved file problem msg 2022-09-24 14:41:06 +02:00
Anton-4
d83f23928e
quotes to make error stand out 2022-09-23 18:35:54 +02:00
rezzaghi
8278d37f1d
fix format 2022-09-23 11:56:31 -03:00
rezzaghi
ce70fce3b2
Add path to error message when trying to read directory 2022-09-23 11:01:00 -03:00
Ayaz Hafiz
06bef34829
Import Decode by default in all modules 2022-09-21 12:29:07 -05:00
Ayaz Hafiz
454f3634fd
Import all types from Encode by default 2022-09-21 12:29:06 -05:00
Ayaz Hafiz
7e5ff4883f
Do not qualify builtin modules with package shorthand when loading 2022-09-21 12:29:06 -05:00
Ayaz Hafiz
44772b8f3d
Don't add to host exposed during roc test 2022-09-14 11:26:50 -05:00
Ayaz Hafiz
3b4b1838b8
Push layout interner further through Layout 2022-08-31 14:33:52 -05:00
Ayaz Hafiz
c5466810a4
Add LayoutInterner to LayoutCache
Adds a thread-local interner of layouts to LayoutCache, and updates all
references appropriately.

This is a bit suboptimal for single-threaded workloads that will look at
creating layout caches again, like the REPL, but I think that's okay for
now - since the global interner will be uncontested for those workloads, it
should still be plenty fast to access the interner, even behind a lock.
2022-08-31 14:33:51 -05:00
Ayaz Hafiz
9d170be5c7
Add layout interner to load_internal 2022-08-31 14:33:51 -05:00
Ayaz Hafiz
66e65714b9
Fix release errors 2022-08-31 14:16:44 -05:00
Ayaz Hafiz
d13b556295
Trace stats for layout cache 2022-08-31 14:16:43 -05:00
Richard Feldman
c6516acdb4
Drop unused ExecutionMode 2022-08-28 16:01:37 -04:00
ayazhafiz
3456a44742
Only compile and run expects that belong to the same package
In particular, don't run expects that come from modules with a different
package qualification (including subpackages; we can loosen this
restriction later), or builtins when run on userspace apps/interfaces.

Closes #3722
2022-08-28 10:16:55 -05:00