Commit Graph

1128 Commits

Author SHA1 Message Date
KtorZ
d905f24e7f Forbid solo-assignment as the only function body
In the similar spirit to what we did for sequences. Yet, we need to handle the case of body being just an assignment -- or a trace of an assignment which is basically the same thing.
2023-01-21 10:32:06 +01:00
KtorZ
2101bb924d Fix tuple-pattern parser
This case was originally left out but, tuple parsers are almost always exclusively starting with a NewLineLeftParen token.
2023-01-21 10:04:11 +01:00
KtorZ
d321b85df2 Refactor type errors back into macro annotations
Far less verbose than defining classes by hand, plus, it allows to have everything about a single error be co-located. And finally, it allows to use 'related', 'label' and so on more easily.
2023-01-20 20:11:44 +01:00
KtorZ
4459fdb360 Fix error reporting on cyclic definitions.
Fixes #292
2023-01-20 20:09:00 +01:00
KtorZ
ce65236514 Parse tests as private functions.
They actually are private; we can't export / import tests. Fixes #284.
2023-01-20 12:50:07 +01:00
KtorZ
61be8ca73e Add diagnostic codes to type-check warnings. 2023-01-20 12:27:48 +01:00
Lucas
e0046eea2b Merge pull request #299 from aiken-lang/forbid-assignment-as-last-expression 2023-01-19 19:49:14 -05:00
KtorZ
10fb7455f3 Forbid let-binding as last expression of a sequence
Fixes #283
2023-01-19 18:05:57 +01:00
KtorZ
c5e876e817 Fix typo in variant name: Implicity -> Implicitly 2023-01-19 17:26:33 +01:00
KtorZ
bb82b1bc1e slightly rework hint for 'ImpliclyDiscardedExpression' 2023-01-19 17:25:18 +01:00
KtorZ
092151d6a0 Remove dead-code and fix comment about discarded expressions
While Gleam originally allowed various kinds of expressions to be discarded in a sequence, we simply do not allow expressions to be discarded implicitly. So any non-final expression in a sequence must be a let-binding. This prevents silly mistakes.
2023-01-19 16:35:39 +01:00
Matthias Benkort
dcfa730de9 Merge pull request #296 from aiken-lang/zero-arg-anon-funcs
feat: handle anon zero arg functions
2023-01-19 11:23:21 +01:00
Kasey White
52724ea0e0 feat: handle anon zero arg functions.
Test 045
2023-01-19 01:34:27 -05:00
Kasey White
7215bf33e9 fix: get_variant_name was not properly traversing type args on map and data types 2023-01-18 16:06:44 -05:00
rvcas
2f6c794cdf fix: ci... :facepalm 2023-01-18 15:29:51 -05:00
rvcas
479d49bdfc fix: ci... again 2023-01-18 15:29:51 -05:00
rvcas
086de8cbc0 chore: switch things back 2023-01-18 15:29:51 -05:00
rvcas
be6327cf59 fix: ci 2023-01-18 15:29:51 -05:00
rvcas
f975c345c9 fix: ci 2023-01-18 15:29:51 -05:00
Kasey White
71ae85a720 missing a condition check on when 2023-01-18 15:29:51 -05:00
KtorZ
439a54d9f1 Fix CI workflow not erroring on acceptance test failure. 2023-01-18 15:29:51 -05:00
Kasey White
d7e4aef4c5 feat: Add boolean conditions to when statements 2023-01-18 15:29:51 -05:00
KtorZ
75808cc046 Add new acceptance scenario: 044
 044
  Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/uplc.rs:846:89
    ╰─▶ called `Option::unwrap()` on a `None` value
2023-01-18 15:29:51 -05:00
KtorZ
c440026e36 Fix generated projects' README + rename 'certify' -> 'publish'
This hints to how this particular purpose is about publishing
  certificate (either delegation or key de-registration).
2023-01-18 16:48:42 +01:00
KtorZ
20ac9c20a2 Remove some dead-code. 2023-01-18 16:43:40 +01:00
KtorZ
b475d6a6a4 Provide better errors when packages aren't found. 2023-01-18 16:34:26 +01:00
KtorZ
6e64bb72e6 Add new acceptance test scenario 045
Error:
    × Main thread panicked.
    ├─▶ at crates/aiken-lang/src/uplc.rs:3435:48
    ╰─▶ called `Option::unwrap()` on a `None` value
2023-01-18 16:28:44 +01:00
KtorZ
071dc00624 Implement various visual improvements for the doc generator
- Display function's signature next to the function name
    (instead of being repeated below the function documentation).

  - Same for module constants

  - Display record constructors in a more concise manner, with
    constructors fields next to constructors.

  - Display generic parameters, if any, next to the type

  - Plus some minor color and icon rework.
2023-01-18 15:12:15 +01:00
Kasey White
33d902ba2a feat: Now opaque types with one constr and one field are converted to inner field type 2023-01-17 08:44:28 -05:00
Kasey White
98d2cb5afc in progress: working on taking special opaque types and converting them to their inner type 2023-01-17 08:44:28 -05:00
Kasey White
0da4560792 fix failing unit tests 2023-01-17 03:02:06 -05:00
rvcas
5ceb3b07fb fix: call was not capturing full span 2023-01-16 15:26:07 -05:00
rvcas
38734361d0 feat: make part of summary red if errors exist 2023-01-16 15:17:39 -05:00
rvcas
4024add4da feat: error when an expression is implicitly discarded 2023-01-16 15:17:39 -05:00
KtorZ
844570caf5 Fix multi-line type-alias tuple definitions
Somehow missed it when reworking tuples. We need to allow the new
  'NewLineLeftParen' token in this situation as well. Especially because
  this is what the formatter outputs.
2023-01-16 11:30:20 +01:00
rvcas
1adac64585 feat(imports): return a nice error if a validator module is imported 2023-01-15 18:54:35 -05:00
rvcas
f114905f7d fix: small typos in error messages 2023-01-15 18:54:35 -05:00
rvcas
c66d07a54c feat: validator fns no longer need to be public
If the function doesn't match a script purpose
and is unused then it will till present as a
warning.
2023-01-15 12:33:10 -05:00
rvcas
63bfb4e05d chore: no longer need pub here 2023-01-15 12:33:10 -05:00
rvcas
00f2150eed feat: add identity, always, & flip 2023-01-14 23:33:49 -05:00
rvcas
9daf86e984 chore: fix version for hello world 2023-01-14 22:22:36 -05:00
rvcas
b69c1f66d7 feat: return err if data type contains functions
Due to how PlutusData works it doesn't make sense
to allow user defined types to contain
functions.

```
type Foo {
  bar: fn(Int) -> Int
}
```

The above definition will now return an error.
2023-01-14 22:03:56 -05:00
rvcas
95c9be5c52 chore: acceptance test 040 had the wrong name 2023-01-14 22:03:56 -05:00
Lucas
8ac2d75ef1 Merge pull request #259 from aiken-lang/basic-add-upgrade-packages
Basic commands for manipulating the aiken.toml
2023-01-14 22:03:32 -05:00
KtorZ
d2c03b0094 Remove restriction on the project's package name
There are restrictions regarding how modules are called, but given that packages are tight to repositories anyway; there's no way someone can publish and use an aiken package on 'aiken-lang' without being part of the organization. So the restriction on the command-line is pointless. Plus, it prevents us from using 'aiken-lang' as a placeholder name for tutorials.
2023-01-14 23:47:57 +01:00
KtorZ
219e81cb75 Add 'packages upgrade' command. 2023-01-14 23:29:28 +01:00
KtorZ
6286132a3e Rename sub-command 'deps' → 'packages'
Slightly more readable and self-explanatory.
2023-01-14 23:29:28 +01:00
KtorZ
38df9a586e Add new 'deps add' command
This makes it easier to add new dependencies, without having to
  manually edit the `aiken.toml` file.

  The command is accessible via two different paths:

  - aiken deps add

  or simply

  - aiken add

  for this is quite common to find at the top-level of the command-line,
  and, we still want to keep commands for managing dependencies grouped
  under a command sub-group and not all at the top-level. So we're
  merely promoting that one for visibility.
2023-01-14 23:29:28 +01:00
KtorZ
d4f905b1db Also move some associated methods to the 'Config' module
And refactor the 'new' command implementation.
2023-01-14 23:29:28 +01:00
KtorZ
0771ab24bd Move 'PackageName' and associated methods in its own module.
This is a bit cleaner, as the 'cmd/new' had many on-the-fly functions
  which are better scoped inside this module.

  Plus, it plays nicely with the std::str::FromStr trait definition.
2023-01-14 23:29:28 +01:00