Commit graph

6920 commits

Author SHA1 Message Date
ayazhafiz
352754960f Remove stale todos in load tests
These no longer seem to be issues.
2021-12-23 15:29:27 -06:00
Folkert de Vries
db44d03e66
Merge pull request #2259 from rtfeldman/i/2227-record-layout-hang
Turn invalid record field types into runtime errors
2021-12-23 20:17:34 +01:00
Folkert de Vries
5d7aff373c
Merge pull request #2262 from rtfeldman/ListDropIf
Implement List.dropIf
2021-12-23 20:15:14 +01:00
Folkert de Vries
639c2e91c8
Merge pull request #2264 from rtfeldman/i/2217
Mark tag unions to recursive when they become so during unification
2021-12-23 13:24:40 +01:00
Joshua Warner
090a8923c5 Improve Debug format of Position 2021-12-22 21:09:02 -08:00
Joshua Warner
22e2545fd6 format 2021-12-22 20:46:42 -08:00
Joshua Warner
f170509bf1 rename col -> column 2021-12-22 20:37:40 -08:00
Joshua Warner
4d7070ce3b Always combine line,column into Position 2021-12-22 20:32:46 -08:00
Joshua Warner
f19220473a Rename Located -> Loc 2021-12-22 19:18:22 -08:00
ayazhafiz
ac54a5e024 Remove nonsene panic 2021-12-22 19:38:10 -06:00
ayazhafiz
d6184e5529 1-branch match -> "if let" 2021-12-22 18:01:53 -06:00
ayazhafiz
88888b0854 Mark tag unions to recursive when they become so during unification
See the comment on line 811 of unify.rs in this commit for motivation
and justification.

Closes #2217
2021-12-22 17:51:07 -06:00
Richard Feldman
c66c845cd2
Merge pull request #2258 from rtfeldman/joshuawarner32/format-all-examples
Format all examples and add a test to assert they stay that way
2021-12-22 16:53:47 -05:00
ayazhafiz
0a94f82bc6 Simplify expect_runtime_error_panic 2021-12-22 12:43:48 -06:00
ayazhafiz
ed64ff912a Implement List.dropIf
This was referenced in the `List` documentation and in the
[tutorial](./TUTORIAL.md), but wasn't actually implemented prior to this
commit!

Part of #2227
2021-12-22 12:34:48 -06:00
ayazhafiz
3c2822224a Update expected failure tests to use expect_runtime_error_panic 2021-12-22 09:23:50 -06:00
ayazhafiz
823e32961f Add macro to expect runtime error panic through llvm backend, and a test 2021-12-22 09:17:54 -06:00
Brian Carroll
d33c1b54fd Ensure unique names for helper procs 2021-12-22 09:28:20 +00:00
Brian Carroll
4a970f089a Eq for empty list 2021-12-22 09:22:31 +00:00
Brian Carroll
e9ae8452b0 Equality tests passing for List I64 2021-12-22 08:42:39 +00:00
Joshua Warner
825b93696c Improve error message & comment 2021-12-21 18:23:04 -08:00
Joshua Warner
6786acb939 Remove redundant space in aliases 2021-12-21 18:16:58 -08:00
ayazhafiz
903fa7d363 Fix clippy warning: implement From over Into 2021-12-21 19:55:50 -06:00
Joshua Warner
4fed812389 add test_fmt_examples 2021-12-21 17:25:36 -08:00
ayazhafiz
e451c3a1f9 Small refactoring: coalesce record field collection loop 2021-12-21 19:23:07 -06:00
ayazhafiz
576f1293fd Turn invalid record field types into runtime errors
By emitting a runtime error rather than panicking when we can't layout
a record, we help programs like

```
main =
    get = \{a} -> a
    get {b: "hello world"}
```

execute as

```
Mismatch in compiler/unify/src/unify.rs Line 1071 Column 13
Trying to unify two flat types that are incompatible: EmptyRecord ~ { 'a' : Demanded(122), }<130>

🔨 Rebuilding host...
── TYPE MISMATCH ───────────────────────────────────────────────────────────────

The 1st argument to get is not what I expect:

8│      get {b: "hello world"}
            ^^^^^^^^^^^^^^^^^^

This argument is a record of type:

    { b : Str }

But get needs the 1st argument to be:

    { a : a }b

Tip: Seems like a record field typo. Maybe a should be b?

Tip: Can more type annotations be added? Type annotations always help
me give more specific messages, and I think they could help a lot in
this case

────────────────────────────────────────────────────────────────────────────────

'+fast-variable-shuffle' is not a recognized feature for this target (ignoring feature)
'+fast-variable-shuffle' is not a recognized feature for this target (ignoring feature)
Done!
Application crashed with message

    Can't create record with improper layout

Shutting down
```

rather than the hanging

```
Mismatch in compiler/unify/src/unify.rs Line 1071 Column 13
Trying to unify two flat types that are incompatible: EmptyRecord ~ { 'a' : Demanded(122), }<130>

thread '<unnamed>' panicked at 'invalid layout from var: UnresolvedTypeVar(104)', compiler/mono/s
rc/layout.rs:1510:52
```

that was previously produced.

Part of #2227
2021-12-21 19:11:59 -06:00
Brian Carroll
d58a2814f6 Generate IR for list equality 2021-12-21 23:14:55 +00:00
Brian Carroll
a2ada314ce local constants for ARG_1 and ARG_2 2021-12-21 23:14:55 +00:00
Brian Carroll
7477b8239d Get rid of some function arguments that are always the same 2021-12-21 23:14:55 +00:00
Brian Carroll
471e2c3143 Completely delete Wasm BlockType 2021-12-21 23:14:55 +00:00
Brian Carroll
1c20075d7b Change usage of Wasm if instruction now that we don't support block results anymore 2021-12-21 23:14:55 +00:00
Brian Carroll
a99db445e4 Disable broken tests 2021-12-21 18:36:30 +00:00
Folkert de Vries
2f1c648602
Merge pull request #2253 from rtfeldman/wasm-no-block-results
Wasm: fix nested conditionals
2021-12-21 16:35:22 +01:00
Folkert de Vries
af03ba13b1
Merge pull request #2246 from rtfeldman/wasm-refactor-symbol-layouts
Wasm: Move symbol_layouts to storage.rs
2021-12-21 16:24:38 +01:00
Folkert de Vries
18187bc43f
Merge pull request #2245 from rtfeldman/wasm-tag-eq
Wasm tag equality
2021-12-21 16:24:14 +01:00
Brian Carroll
2a141b3586 Automatically clean up any unused values at the end of a block 2021-12-21 13:16:15 +00:00
Brian Carroll
17dc6668ec Make all Wasm blocks NoResult and always put return value in a local var. 2021-12-21 13:16:15 +00:00
Brian Carroll
51119c8142 Emit less code for ensure_value_has_local 2021-12-21 13:16:15 +00:00
rvcas
e269fc4345 test(wasm): more wasm_str tests 2021-12-20 17:48:34 -05:00
rvcas
c6eaf3abd3 feat(wasm): enable more Str LowLevels 2021-12-20 17:47:39 -05:00
Richard Feldman
3ffe5768e1
Merge pull request #2239 from rtfeldman/joshuawarner32/pipeline-format-fail
Fix formatting of pipelined call exprs
2021-12-20 15:46:23 -05:00
Richard Feldman
5aa67d4244
Merge pull request #2231 from rtfeldman/joshuawarner32/record_func_type_decl
Allow function types in records
2021-12-20 11:45:27 -05:00
Brian Carroll
6480a720ae Move symbol_layouts to storage.rs 2021-12-20 16:06:39 +00:00
Richard Feldman
4a900b3097
Merge pull request #2238 from rtfeldman/joshuawarner32/refactor-BadOperator
Refactor BadOperator to take a &str rather than &[u8]
2021-12-20 10:16:27 -05:00
Richard Feldman
f32b208ba9
Merge pull request #2240 from rtfeldman/joshuawarner32/trailing-spaces
Remove trailing whitespace from the output of the formatter
2021-12-20 10:14:10 -05:00
Brian Carroll
3b2aa0bf6a Fix bugs with symbol layouts in Wasm 2021-12-20 09:53:24 +00:00
Brian Carroll
9b833720d4 Further refactor and debug == in Wasm 2021-12-20 08:39:16 +00:00
Brian Carroll
f59e0e249b Use native instructions for NotEq in Wasm 2021-12-19 21:20:06 +00:00
Brian Carroll
e0ffaca3df Refactor Wasm equality operator 2021-12-19 21:20:06 +00:00
Brian Carroll
c510226c15 Reorganise Wasm lowlevels to get pointer equality working correctly 2021-12-19 21:20:06 +00:00