Commit graph

616 commits

Author SHA1 Message Date
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
d08bda6b01
update filenames to new rules 2024-02-09 19:46:39 +01:00
Anton-4
2b64123dbb
clippy 2024-02-09 19:20:41 +01:00
Trevor Settles
cd4adeb9c1
added nicer indentation 2024-02-08 16:37:46 -07:00
Trevor Settles
5f6d259e5d
updated error messages 2024-02-08 15:25:15 -07:00
Trevor Settles
4b4ad47312
added test for no file ext or shebang 2024-02-07 10:18:33 -07:00
Trevor Settles
50c8adbbbb
added test for non roc file 2024-02-06 23:10:18 -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
7e51dfd526
Update test fixtures to not use Nat indices 2024-01-26 16:06:07 -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
Richard Feldman
07ddd272e2
Merge pull request #6361 from faldor20/fix-lang-server-hang
Fix hang from bad imports
2024-01-21 22:06:48 -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
William Barbosa
3882262b70 Fix remaining test cases 2024-01-18 08:15:02 +01:00
faldor20
d1f60f9eae fix formatting 2024-01-13 20:32:31 +10:00
Brian Teague
60c639b60e
Consolidate gitignore
Keep certain files with no file extension

Keep specific files with no file extension

Delete all gitignore files
2024-01-10 22:16:04 -05: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
d2c3d346ad added test for package 2024-01-07 12:52:31 +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
Anton-4
1126f85b5a
fix clippy unnecessary hashes 2024-01-01 16:38:36 +01:00
Richard Feldman
4b743c8878
Replace UNKNOWN.roc in reports with real filename 2023-12-13 21:20:26 -05:00
Brendan Hansknecht
be17c0cadb
load world abilities sooner 2023-12-02 21:18:32 -08:00
Brendan Hansknecht
3966d63e2f
add src and location to dbg 2023-12-02 21:18:31 -08:00
Ayaz Hafiz
a53da2bc24
Make sure late specializations of opaques inherit Inspect as needed
A "late specialization" of a type is an ability specialization that
is not visible or needed until after type-specialization; i.e. during
monomorphization.

The `Inspect.toInspector` ability is special-cased for opaques that do
not claim or explicitly implement `Inspect`. In such cases, they are
treated as structural types, and given the immediate specialization of
`Inpect.inspectOpaque`.

However, prior to this commit, that special-casing would only be applied
during early specialiation (i.e. specializations visible during
generalized type inference). This commit applies the special case to
late specialization as well - the specialization decision for an opaque
type is always the specialization of the opaque type in the late case,
but now, when we go to look up the ambient lambda set of the
specialization, if it does not exist and corresponds to
`Inspect.toInspector`, we fall back to the immediate.

One concern I have here is that in a case like

```
Op := {}

x =
    dbg (@Op {})
```

the specialization of `Inspect.toInspector` for `Op` should be known
early. Indeed, the program

```
Op := {}

x =
    Inspect.toInspector (@Op {}) |> Inspect.apply (Inspect.init {}) |> Inspect.toDbgStr
```

Compiles fine without this change. This makes me suspect there is an
issue with the implementation of `dbg`'s desugaring. If possible, this
should be addressed sooner rather than later.

Closes #6127
2023-11-30 22:25:08 -06:00
Richard Feldman
89be091f87
Order modules in docs sidebar based on exposes 2023-11-18 21:02:49 -05:00
Ayaz Hafiz
886a367026
Go-to-definition basic support 2023-10-25 17:14:50 -05:00
Ayaz Hafiz
703ef6608e
Fix errors 2023-10-25 17:14:49 -05:00
Ayaz Hafiz
6e89821233
Update language server to support apps 2023-10-25 17:14:33 -05:00
Richard Feldman
eebec8a378
Add --output to build, default to app filename 2023-10-19 20:42:28 -04:00
Richard Feldman
2019909922
Use concat! to break up a long string literal 2023-10-15 20:32:20 -04:00
Richard Feldman
1f1b981110
Fix for future clippy 2023-10-15 20:22:03 -04:00
Richard Feldman
f2782e94d5
clippy 2023-10-14 21:49:07 -04:00
Richard Feldman
73f3250b8f
Don't report unhelpful things. 2023-10-14 21:49:06 -04:00
Richard Feldman
08c6a044c4
Improve error handling when mono panics 2023-10-14 21:49:06 -04:00
Richard Feldman
eb135637ef
Compute total_problems rather than asking for it 2023-10-14 21:49:06 -04:00
Richard Feldman
97f252c68b
Fix shut_down_worker_threads! in presence of panic 2023-10-14 21:49:06 -04:00
Richard Feldman
8ee88ba7cb
Minor cleanups 2023-10-14 21:49:06 -04:00
Richard Feldman
a13a3231c7
Exit the process instead of deadlocking on panic 2023-10-14 21:49:05 -04:00