rvcas
df992cba67
chore: remove check_type
2023-11-17 13:58:13 -05:00
rvcas
9ab458dcc6
feat: delay typemismatch errors in the machine runtime
...
to pass 2 of the conformance tests, we need to make sure
that we aren't typechecking builtin arguments as arguments
are applied. This switches push to by removing the call to check_type
and then reworking all the associated unwrap methods on Value
so that they return the same errors that were being returned before.
2023-11-17 13:58:13 -05:00
rvcas
ed909055b5
chore: temp remove conformance tests that are failing
2023-11-15 15:55:56 -05:00
rvcas
308fb47e40
fix: don't panic on invalid hex strings
2023-11-15 15:55:56 -05:00
rvcas
dfa0378404
chore: explain a todo in the machine
2023-11-15 15:55:56 -05:00
rvcas
3f8f624a7b
fix(uplc): more whitespace characters
2023-11-15 15:55:56 -05:00
rvcas
58d98b3325
fix(uplc): parser should accept single quote in var name and comments
2023-11-15 15:55:56 -05:00
rvcas
b6f6064aaf
test: add all plutus conformance tests
2023-11-15 15:55:56 -05:00
rvcas
b80db2f7f8
fix(bls): wrong types for equals functions
2023-11-15 15:55:56 -05:00
rvcas
d53d2665b2
test(bls): g1 and g2 formatting
2023-11-15 15:55:56 -05:00
rvcas
c910e0054e
test(bls): constant parsing tests
2023-11-15 15:55:56 -05:00
rvcas
7073fd29b3
test(bls): literal parsing tests
2023-11-15 15:55:56 -05:00
microproofs
8b89ba3b93
feat: implement bls primitives in code gen
2023-11-15 15:55:56 -05:00
microproofs
d51374aac1
feat: add conversion to data and from data for new primitive types
2023-11-15 15:55:56 -05:00
rvcas
3675762c3e
feat(bls): aiken level g1 and g2 literals
2023-11-15 15:55:56 -05:00
rvcas
90aea6476a
feat: uplc g1 and g2 literal parsing
2023-11-15 15:55:56 -05:00
rvcas
6ce85e1662
fix: add keccak to TryFrom<u8>
2023-11-15 15:55:56 -05:00
rvcas
49ae8152f8
feat(bls): add new aiken level builtins
2023-11-15 15:55:56 -05:00
rvcas
8a3a465237
feat(bls): add new types to aiken prelude
2023-11-15 15:55:56 -05:00
rvcas
cdcd8172e6
feat(bls): pretty print mlresult type
2023-11-15 15:55:56 -05:00
rvcas
318ae6aad4
feat(bls): finish cost model
2023-11-15 15:55:56 -05:00
rvcas
5243c36ed6
feat(bls): add default costs for the new functions
2023-11-15 15:55:56 -05:00
microproofs
18db1c394a
feat: Implemented builtin semantic versioning
...
feat: impl flat serialization and deserialization for bls constants
feat: started on cost models for the new builtins
Co-authored-by: rvcas <x@rvcas.dev>
2023-11-15 15:55:56 -05:00
rvcas
f101581813
feat(bls): pretty printing for g1 and g1 element
...
Co-authored-by: Kasey White <kwhitemsg@gmail.com>
2023-11-15 15:55:56 -05:00
microproofs
0d2ac952d0
feat: implemented the Bls381-12 builtins and types
...
also implemented Keccak256 and Blake2b_224
TODO: cost model, flat serialization, pretty
Co-authored-by: rvcas <x@rvcas.dev>
2023-11-15 15:55:56 -05:00
microproofs
446ef11606
chore: finishing acceptance test 29
...
and updating acceptance test lock files
2023-11-08 14:31:44 -05:00
microproofs
d50fb99b75
feat: add acceptance tests 28-30
2023-11-08 14:31:44 -05:00
microproofs
7d319077e6
chore: clean up validator comments and
...
commit script context test lockfile
2023-11-06 15:49:13 -05:00
microproofs
2f694b01cb
chore: use insta snapshot for blueprint validator tests
2023-11-06 15:37:04 -05:00
microproofs
4eebd4628b
chore: fix comment
2023-11-06 15:37:04 -05:00
microproofs
7427bac4a0
chore: remove unused code
2023-11-06 15:37:04 -05:00
microproofs
598ec5eaef
Use a better algorithm for inlining single occurrences
2023-11-06 15:37:04 -05:00
microproofs
49bd4ba33d
chore: Release
2023-10-25 19:00:03 -04:00
microproofs
4dd17dacf3
chore: rename uplc builder builtins
2023-10-22 17:08:48 -04:00
waalge
3e283a59ec
Split off builtin function builders
...
- sort alphabetically
- add some of the missing builtins used for ints
- comment on what is "correct" for future additions
- comment on the current remaining missing builtins
- comment on the current incoherent method names
2023-10-22 17:08:48 -04:00
KtorZ
46c58dbd61
Implement quickfixes for redundant imports.
2023-10-22 00:29:09 +02:00
KtorZ
28b699c86a
Merge unused imported constructors and unused imported type with unused imported value
...
This was somewhat weirdly done, with a boolean 'imported' set on the
formers; but an explicit new warning for values. I don't see the point
of distinguishing them so I just merged them all into a single
warning.
I have however preserved the 'UnusedType' and 'UnusedConstructor'
warnings since they were ALSO used for unused private constructors or
types.
2023-10-22 00:27:33 +02:00
KtorZ
5f8e256050
Present aiken-lsp & fill-in CHANGELOG
2023-10-21 21:39:30 +02:00
KtorZ
17832fc5af
Fix clippy warnings: remove redundant closures & guards.
2023-10-21 21:27:31 +02:00
KtorZ
c0513da032
Add quickfix for unknown constructors.
2023-10-21 14:24:47 +02:00
KtorZ
f6eff7ec58
Fix incoherent 'UnknownVariable' being returned in type-check
...
I initially removed the 'UnkownTypeConstructor' since it wasn't used anywhere and was in fact dead-code. On second thoughts however, it is nicer to provide a slightly better error message when a constructor is missing as well as some valid suggestion. Prior to that commit, we would simply return a 'UnknownVariable' and the hint might suggest lowercase identifiers; which is wrong.
2023-10-21 14:10:45 +02:00
KtorZ
5986163ba7
Add quickfix for unknown alias & data types.
2023-10-21 13:57:06 +02:00
KtorZ
d965467a53
Fix insertion of unqualified import when first
...
I previously missed a case and it causes qualified imports to be added at the end if they are lexicographically smaller than ALL other qualified imports. No big deal, but this is now fixed.
2023-10-21 13:56:15 +02:00
KtorZ
c550b4766d
Implement quickfix for 'UnknownModule'.
2023-10-21 12:59:48 +02:00
KtorZ
e48ac6b592
Relocate and refactor quickfix code into its own module
...
We're going to have more quickfixes, to it's best not to overload the
'server' module. Plus, there's a lot of boilerplate around the
quickfixes so we might want to factor it out.
2023-10-21 12:00:58 +02:00
KtorZ
763516eb96
Refactor and relocate document edits function for imports.
...
It's a bit 'off-topic' to keep these in aiken-lang as those functions are really just about lsp. Plus, it removes a bit some of the boilerplate and make the entire edition more readable and re-usable. Now we can tackle other similar errors with the same quickfix.
2023-10-21 11:31:01 +02:00
KtorZ
699d0a537c
Use (untyped) AST to find the right insert location for imports.
...
This removes the need to rely on the formatter to clear things up
after insert a new import. While this is not so useful for imports, I
wanted to experiment with the approach for future similar edits (for
example, when suggesting an inline rewrite).
2023-10-21 10:43:00 +02:00
KtorZ
66ade8e3e3
Implement simple code action quickfix for unknown variable.
2023-10-20 18:01:07 +02:00
KtorZ
c4221730bf
Define 'ExtraData' trait for errors
...
This should allow passing some extra information to LSP diagnostic in order to provide quickfix actions, such as auto-imports.
2023-10-20 18:00:12 +02:00
KtorZ
41e26b216b
Some LSP improvements regarding hovering
...
- Resolve module select properly
- Add some type annotations to _some patterns_ such as assignments
2023-10-19 20:04:10 +02:00
rvcas
e5801f9c19
feat: support doc comments for functions args and validator params
...
- Add support to the formatter for these doc comments
- Add a new field to `Arg` `doc: Option<String>`
- Don't attach docs immediately after typechecking a module
- instead we should do it on demand in docs, build, and lsp
- the check command doesn't need to have any docs attached
- doing it more lazily defers the computation until later making
typechecking feedback a bit faster
- Add support for function arg and validator param docs in
`attach_module_docs` methods
- Update some snapshots
- Add put_doc to Arg
closes #685
2023-10-16 13:38:23 -04:00
rvcas
10b9dc2042
chore: remove unused constants
2023-10-13 16:56:03 -04:00
microproofs
596ce49327
fix: mixed up operators for ConstAboveDiagonal and ConstBelowDiagonal
...
Closes #618
2023-10-13 11:40:07 -04:00
rvcas
e8bcbecf31
chore: avoid cloning name
2023-10-12 17:50:44 -04:00
rvcas
55f89a7ff4
fix: incorrect 'unused::constructor'
...
`ExprTyper` was not incrementing the usage of a constructor
when infering `RecordAccess`.
closes #554
2023-10-12 17:44:57 -04:00
rvcas
52dfc13f8f
chore: explain a weird if condition
2023-10-12 17:24:11 -04:00
microproofs
c764a6f99c
fix: reset option should not reset special functions in only a multivalidator
2023-10-07 19:42:24 -04:00
microproofs
4649a5a9d2
fix: don't reset the used special functions
2023-10-07 19:42:24 -04:00
microproofs
8964675670
feat: Add tracing for common multivalidator issues
2023-10-07 19:42:24 -04:00
microproofs
a86f08c6d1
update tests for new trace reduction
2023-10-07 19:42:24 -04:00
microproofs
7a6ddc45a0
feat: Rework codegen traces to prevent repeated messages from taking up uplc script space
2023-10-07 19:42:24 -04:00
microproofs
44021cde19
Detect when fields_expose is unnecessary in clause_pattern
2023-10-07 19:42:24 -04:00
microproofs
9335522df4
Make change @ktorz suggested
2023-10-07 19:42:24 -04:00
microproofs
98cb01413b
chore: prevent strings from being inlined and replicated
2023-10-07 19:42:24 -04:00
KtorZ
c2bf6e5682
Add missing keywords to documentation generator.
2023-10-06 14:46:34 +02:00
KtorZ
a524836c94
Add compiler version & system information to panic error message
...
So that we stop constantly asking people about it.
2023-10-06 14:46:11 +02:00
KtorZ
524d0dadf5
Add compiler's version to blueprint.
2023-10-06 14:17:55 +02:00
KtorZ
d56d5180cf
Move compile-time build info to aiken-project
...
So that we can use it as part of the blueprints.
2023-10-06 14:08:47 +02:00
microproofs
8a1c824dd7
chore: add specific error for when the validator returns false
2023-10-04 11:08:22 -04:00
rvcas
135dbd8335
feat: handle pipe fn infer TODOs
...
This improves error messages for `a |> b(x)`.
We need to do a special check when looping over the args
and unifying. This information is within a function that does not belong
to pipe typer so I used a closure to forward along a way to add
metadata to the error when the first argument in the loop has a
unification error. Simply adding the metadata at the pipe typer
level is not good enough because then we may annotate regular
unification errors from the args.
2023-10-03 01:17:15 -04:00
microproofs
fb6cbbec8b
chore: Release
2023-09-29 22:08:09 -04:00
microproofs
add513790d
hotfix: cyclic functions hoisted as a dependency used the wrong key to modify its own cyclic_calls
2023-09-29 22:01:43 -04:00
microproofs
82ceb5b696
chore: Release
2023-09-29 19:39:28 -04:00
microproofs
83f0dd2cbe
chore: fix blueprint validator tests
2023-09-29 17:47:39 -04:00
microproofs
fb2ca0e3e0
inline is actually cheaper in a lot of cases
2023-09-29 17:47:39 -04:00
microproofs
a2068ff062
fix: optmizer should never inline recursive functions
...
chore: some renames
2023-09-29 17:47:39 -04:00
microproofs
335560b81f
Add placeholders for new terms in optimize
...
Update tests to check optimization is applied properly
2023-09-29 17:47:39 -04:00
microproofs
5e2a78173b
optimization: increase the cases that inline_basic_reduce can handle
2023-09-29 17:47:39 -04:00
waalge
dbd4fe2aab
fix rust version
2023-09-28 13:30:34 -04:00
waalge
37ec2b121b
rev
2023-09-28 13:30:34 -04:00
waalge
3c11c95e01
insert into rust
2023-09-28 13:30:34 -04:00
microproofs
47596f0324
feat: Remove tuple_index and record_access in favor of faster more direct functions for
...
accessing an item in a tuple or a field in a record
2023-09-28 01:05:05 -04:00
microproofs
1bcc9e8524
fix: expect on tuples from data now checks for no more items after the last
2023-09-26 12:49:50 -04:00
microproofs
1ca3499128
chore: rename type
2023-09-25 21:16:19 -04:00
microproofs
534eb62a07
fix: There was a stack overflow due to passing unbound types to a function
2023-09-25 21:16:19 -04:00
microproofs
1cab479b81
fix: dependency hoisting for cyclic functions
...
Add more tests
2023-09-25 21:16:19 -04:00
microproofs
2f80d07132
fix: minor stuff including fixing the var name used in modify_cyclic_calls
...
and carefully controling the functions we add to sorted dependencies
2023-09-25 21:16:19 -04:00
microproofs
f4310bcf33
feat: finished up mutual recursion
...
Now we "handle" vars that call the cyclic function.
That includes vars in the cyclic function as well as in other functions
"handle" meaning we modify the var to be a call that takes in more arguments.
2023-09-25 21:16:19 -04:00
microproofs
ae3053522e
feat: Update cyclic functions to be aware of being in a cycle.
...
Finish the creation of cyclic functions
The last part is to update vars that call into a function in the cycle
2023-09-25 21:16:19 -04:00
microproofs
794fc93084
remove unused structs
2023-09-25 21:16:19 -04:00
microproofs
0b38855ce4
add new enum for hoistablefunctions
2023-09-25 21:16:19 -04:00
microproofs
ced818c455
checkpoint commit
2023-09-25 21:16:19 -04:00
microproofs
0fb9837ddf
chore: change UserFunction to HoistableFunction to prepare for mututal recursion
2023-09-25 21:16:19 -04:00
microproofs
74b8ab62b2
chore: add comments
2023-09-25 21:16:19 -04:00
microproofs
a4aa51ed2d
WIP: first part of mutual recursion is done.
...
This involves creating the function definition and detecting cycles.
The remaining part is to "fix" the call sites
of the mutually recursive functions
2023-09-25 21:16:19 -04:00
microproofs
5b018b7c07
test: add a test around a tuple of constructors when with many conditions
2023-09-20 16:20:42 -04:00
KtorZ
ee4001d2c8
chore: Release
2023-09-20 18:03:46 +02:00
KtorZ
f379039efc
Fix record shorthand causing parsing ambiguity in if/else expressions.
...
Fixes #735 .
2023-09-15 09:41:00 +02:00
rvcas
1dea348a2e
chore: rust rover error
2023-09-13 21:29:05 -04:00
rvcas
7b915b7dcf
chore: allow clippy::arc_with_non_send_sync in tests
2023-09-13 19:07:45 -04:00