Commit graph

512 commits

Author SHA1 Message Date
Agus Zubiaga
3217e5a3f0
Allow dots in import module names
We found some issues with the private submodules part of the proposal [1],
and we decided to keep module directories for now.

[1] https://docs.google.com/document/d/1E_77fO-44BtoBtXoVeWyGh1xN2KRTWTu8q6i25RNNx0/edit#heading=h.x84bh32l37em
2024-04-20 12:33:02 -03:00
Agus Zubiaga
1f347f6ca1
Fix package module resolution in inline imports
We were still passing `ModuleIds` from `load` to `can`, but now
that imports can appear in any scope, we don't know which package
an unqualified module name belongs to from the top level.

We now pass `PackageModuleIds` instead  and keep a Map of `ModuleName` to
`ModuleId` in `Scope`.

This also allow us to import multiple modules with the same name from different
packages as long as a unique alias is provided.
2024-04-20 12:16:37 -03:00
Agus Zubiaga
d5a38a26db
Merge branch 'main' into inline-imports 2024-04-20 12:01:11 -03:00
Luke Boswell
0143035dc0
cleanup, improve docs 2024-04-14 13:45:06 +10:00
Luke Boswell
5bb44fcce5
most tests passing 2024-04-14 13:45:05 +10:00
Luke Boswell
8b9e08bd76
WIP try simplification 2024-04-14 13:45:05 +10:00
Luke Boswell
3c3e523b45
add suffixed to Identifer and QualifiedIdentifier 2024-04-14 13:45:00 +10:00
Brendan Hansknecht
6dc5bfb1b7
Use roc_target over target_lexicon
Tailors a target class for our needs.
Replaces tons of uses across the entire compiler.
This is a base for later adding new targets like thumb.
2024-03-31 10:50:26 -07:00
Richard Feldman
14ba398b5d
Merge pull request #6569 from faldor20/docs
Add docs to completions and hover
2024-03-16 11:22:58 -04:00
Anton-4
121c585681
Merge pull request #6567 from jschear/js/expects_per_module
Run expects separately per module, report test results per module behind `--verbose` flag
2024-03-15 19:15:00 +01:00
Eli Dowling
cc4453b301
remove alias 2024-03-12 06:42:37 +10:00
Eli Dowling
15faf59c6b
removed unneeded imported modules info 2024-03-12 06:42:34 +10:00
Eli Dowling
3027fc2284
working completions 2024-03-12 06:42:22 +10:00
faldor20
be71514435
spelling 2024-03-12 00:26:29 +10:00
faldor20
45d994d7d7
clippy 2024-03-12 00:18:01 +10:00
faldor20
321baf86d1
moved exposed module filtering into docs 2024-03-12 00:02:19 +10:00
faldor20
3fe3a3439a
cleanup fetching module docs 2024-03-11 15:17:46 +10:00
faldor20
f6799cae92
support docs in app, platform and packages 2024-03-11 11:10:36 +10:00
faldor20
cdf218fe7a
first working version of docs hover 2024-03-11 11:10:34 +10:00
faldor20
6d3fd89f8e remove alias 2024-03-11 10:18:58 +10:00
Eli Dowling
a21f987e64 removed unneeded imported modules info 2024-03-11 10:18:58 +10:00
Eli Dowling
e809beb882 working completions 2024-03-11 10:18:58 +10:00
Anton-4
76c47c5d6f
stylistic improvements 2024-03-09 20:47:19 +01:00
Jonathan Schear
504e00d44d
Group toplevel expects by module, run them separately 2024-03-08 14:56:32 -05:00
Anton-4
f620508a37
misc improvements 2024-03-04 17:10:59 +01:00
Richard Feldman
739565e836
Revert "Remove obsolete ListLenUsize"
This reverts commit ad1bca4ac9c40d336522f944df60d61a814435dd.
2024-02-17 13:20:34 -05:00
Richard Feldman
87d4760356
Remove obsolete ListLenUsize 2024-02-17 13:20:34 -05:00
Richard Feldman
ada83561e5
Split ListLen into ListLenU64 and ListLenUsize
The usize one gets used internally for things like
pattern matches. This is both more efficient (means
they don't have to do unnecessary casts) and also
less error-prone due to e.g. comparing length to
capacity, which is usize.
2024-02-14 21:00:49 -05:00
Richard Feldman
24a38c4a26
Merge remote-tracking branch 'origin/main' into remove-nat 2024-02-11 12:26:36 -05:00
Anton-4
2b64123dbb
clippy 2024-02-09 19:20:41 +01:00
Trevor Settles
5f6d259e5d
updated error messages 2024-02-08 15:25:15 -07:00
Trevor Settles
1b757e724c
reverted import 2024-02-05 23:00:49 -07:00
Trevor Settles
2f9ecc7f8e
added no ext error checking 2024-02-05 22:06:53 -07:00
Trevor Settles
5270e896a8
moved file ext handling 2024-02-04 21:24:36 -07:00
Agus Zubiaga
eb68bf943a
Merge branch 'main' into module-params 2024-01-27 09:36:20 -03:00
Richard Feldman
e207a7ce53
Use Variable::U64 for List.len in file load 2024-01-26 16:06:08 -05:00
Richard Feldman
7f2e2d0803
Fix repro for nasty import bug
The bug reproduces if you go to the commit before this one;
seems to be the problem is importing an un-exposed value
as unqualified (possibly from a package, might be relevant)
2024-01-26 16:01:08 -05:00
Agus Zubiaga
002493e32c
Load and can ingested file imports
Moves handling of ingested file imports from load to can, so that they
can be properly introduced in the scope they appear.

Example:

  import "input.txt" as input : Str

  image =
      import "image.png" as bytes : List U8
      # `bytes` is only available under `image`
      decodePng bytes

  ...
2024-01-20 08:43:40 -03:00
Agus Zubiaga
7b3317dbb6
Update unused warnings for inline imports
Now that imports can be limited to smaller scopes than the entire module,
unused import warnings need to work like unused def warnings.

This commit moves unused import warnings discovery and reporting from load
to canonicalization where we can track their usage per scope.

This also fixes a longstanding bug where unused exposed names from an import
were not reported if they were only used in a qualified manner.
2024-01-20 08:43:36 -03:00
Agus Zubiaga
c617963b22
Load and can imports inside defs
After parsing a module, we now recursively traverse the tree to find
all imports inside Defs, not just the top-level ones.

Previously, imported modules were available in the entire file,
but that's no longer the case. Therefore, Scope now keeps track of
imported modules and Env::qualified_lookup checks whether a module
is available in the provided scope.

Note: Unused import warnings are still global and need to be updated.
2024-01-20 08:39:33 -03:00
Agus Zubiaga
710d62f754
Load and can new top-level imports
Previously, all imports were available in the header, so we could start
processing dependencies as soon as we parsed it. However, the new imports
are treated as defs, so we have to parse the whole module to find them.

This commit essentially moves the dependency resolution from the `LoadHeader`
phase to the `Parse` phase, and it updates canonicalization to introduce
module symbols into scope when a `ValueDef::ModuleImport` is encountered.

NOTE:
- The `imports` header still parses, but it's no longer wired up. I will remove
it in an upcoming commit.
- Ingested files and imports that appear in nested expressions are not
yet supported by load
2024-01-20 08:39:31 -03:00
faldor20
d1f60f9eae fix formatting 2024-01-13 20:32:31 +10:00
faldor20
7de39df63e Just stopping typechecking in interfaces when we have a package import 2024-01-09 06:21:35 +10:00
faldor20
ff7c2cf21b Fixed in interfaces properly 2024-01-07 14:18:32 +10:00
faldor20
1d2ed391c8 formatting, clippy etx 2024-01-07 12:58:35 +10:00
faldor20
e43ef067b9 oops 2024-01-07 12:34:09 +10:00
faldor20
f4d71a5485 Finialised error and tested 2024-01-07 12:32:21 +10:00
faldor20
f36befdd4c made nicer error 2024-01-07 11:28:05 +10:00
faldor20
124abc3620 kill process when would hang 2024-01-07 08:26:22 +10:00
Richard Feldman
4b743c8878
Replace UNKNOWN.roc in reports with real filename 2023-12-13 21:20:26 -05:00