Commit Graph

1219 Commits

Author SHA1 Message Date
KtorZ 18d2beeadb
add format test
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-16 00:45:42 +01:00
KtorZ b8f42dd555
also support using Types as namespace when nested in module.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-16 00:45:42 +01:00
KtorZ 2adc1fab66
ensure import resolution is done according to local bindings
Might it be from a module that has multiple path fragments or one that is aliased.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 23:50:51 +01:00
KtorZ 983902fca8
add extra regression test from stdlib.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 23:02:13 +01:00
KtorZ 660ff7fa31
adjust spans & tweak errors for maximum UX
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 23:02:13 +01:00
KtorZ b9052949f7
hide internal functions from suggested hints on unknown modules/constructor/value.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 21:52:45 +01:00
KtorZ 3db9828fe8
allow use of types as namespaces for constructing values.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 21:52:45 +01:00
KtorZ c66bca5829
remove unused value constructors from modules type info
This is a mildly scaring change, as it may horribly break things down
  the line if we have ever relied on that information... However, the
  value constructors inside each module are meant to reflect the own
  module public API, and shouldn't be populated with Prelude stuff. Not
  only does that mean this information is duplicated for all modules
  (possibly significantly slowing things down), but it may also cause
  weird scoping issues (e.g. one accessing a Prelude's constructor
  through some random module).

  Hence why I am isolating this change in this single commit, so it's
  easier to troubleshoot if that ends up causing weird issues.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 21:37:19 +01:00
KtorZ 79a7d80c7f
Fix dependency namespacing in 'checks' tests.
We were mixing module names and package names in a very weird way but it was somehow working. However, the generated ASTs would vastly differ from what we would typically get from running those tests on a standard project -- which defies a bit the purpose of those tests.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 21:37:19 +01:00
KtorZ 81713d93a0
allow types to be used as namespace in patterns.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 21:37:19 +01:00
KtorZ c556ada7d5
introduce namespace enum to distinguish module select from type constructor select in patterns.
Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-15 15:49:22 +01:00
rvcas fc8c196e14 chore: fix issues for Pi 2025-03-02 22:20:18 -05:00
KtorZ 862fc490c1
Use error's description for snapshot assertions + sort reported expected tokens
Turns out the snapshot test would randomly fail because the expected
  tokens are a HashSet, which is unordered by construction. So, using
  the auto-derived `Debug` instance to compare it with snapshot would
  only succeed if the tokens happened to be in the same order in the
  HashSet, which only happens by accident.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-02 13:45:05 +01:00
KtorZ 9b8137c056
Better trace parsing + default behaviour.
Somehow, we allow traces with no continuation after and currently
  default to a Todo. That todo is completely invisible from a user
  standpoint and return a generic `a`.

  So it is pretty easy for someone to think their program is okay,
  compiles, and have no issues, while simply crashing at runtime because
  of an invisible todo.

  Hence, I've changed that to default to `Void` instead, which is more
  sensible as a default for an empty trace.

  Also, I've made the parser fail with one puts a colon for label, but
  doesn't add any value to display.

  Fixes #1113.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-02 13:31:04 +01:00
KtorZ 222d244bcf
Do not allow empty continuation for backpassed assignments
Fixes #1111.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-03-02 12:56:41 +01:00
Pi Lanningham 900bf91216 Version 1.1.13 2025-02-26 10:07:00 -05:00
KtorZ 9f24a5c577
Fix wrong use of 'UnknownVariable' instead of 'UnknownTypeConstructor'
While the feedback for human users is mostly the same, it does in fact
  matter for the LSP since the quickfix will be different depending on
  whether we look for a top-level identifier or if we look for a
  constructor.

  The typical case we see in the stdlib is the `VerificationKey` and
  `Script` constructors for `Credential`, often being mixed with
  their types counterparts in aiken/crypto!

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-02-22 19:14:37 +01:00
KtorZ a89694ed75
Use less vertical space for type-constructor hint;
Also, show it actually for UnknownTypeConstructor, and not
  UnknownVariable. There's currently an error that wrongly assign an
  'UnknownVariable' in place where it should be an
  'UnknownTypeConstructor'. Fix coming in the next commit.

Signed-off-by: KtorZ <matthias.benkort@gmail.com>
2025-02-22 17:52:21 +01:00
Pi Lanningham 0da4f70c39 chore: Release 2025-02-18 15:24:16 -05:00
Pi Lanningham 4adf6f27ad Avoid wiping out traces when accessing logs
The clones are cheap enough here that we likely don't need to worry about the cost of cloning; and this removes a significant foot-gun where you can wipe out the logs/labels by accessing the other field.
2025-02-17 19:58:26 -05:00
Pi Lanningham ec6f1f84e2 fix: formatting 2025-02-17 19:58:26 -05:00
Pi Lanningham 17a75d2481 Return an EvalResult alongside the redeemer
This refactors things so that eval_phase_two can expose logs even when the script succeeds.

It also enriches traces to be either Logs or Labels, so that we can tell the difference between the two when inspecting the traces.
2025-02-17 19:58:26 -05:00
KtorZ 3bce2e2d78
chore: Release
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 14:26:12 +01:00
KtorZ 58d782fa78
Scope type-aliases per module in blueprint.
Similarly to how we're already doing it for non-alias types.

  Fix #1074.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-11 12:55:45 +01:00
KtorZ d53f770d90
minor tweaks and proof-reading.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:53:58 +01:00
KtorZ 8edd8d37db
fix benchmark output when either the sampler or bench fails
This is likely even better than what was done for property testing. We
  shall revise that one perhaps one day.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:23:01 +01:00
KtorZ b4aa877d6a
rework benchmarks output
Going for a terminal plot, for now, as this was the original idea and it is immediately visual. All benchmark points can also be obtained as JSON when redirecting the output, like for tests. So all-in-all, we provide a flexible output which should be useful. Whether it is the best we can do, time (and people/users) will tell.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:22:58 +01:00
KtorZ 41440f131b
rework sizing of benchmarks, taking measures at different points
The idea is to get a good sample of measures from running benchmarks
  with various sizes, so one can get an idea of how well a function
  performs at various sizes.

  Given that size can be made arbitrarily large, and that we currently
  report all benchmarks, I installed a fibonacci heuristic to gather
  data points from 0 to the max size using an increasing stepping.

  Defined as a trait as I already anticipate we might need different
  sizing strategy, likely driven by the user via a command-line option;
  but for now, this will do.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:02 +01:00
KtorZ 2dbc33e91f
fuse together bench & test runners, and collect all bench measures.
This commit removes some duplication between bench and test runners,
  as well as fixing the results coming out of running benchmarks.

  Running benchmarks is expected to yield multiple measures, for each of
  the iteration. For now, it'll suffice to show results for each size;
  but eventually, we'll possibly try to interpolate results with
  different curves and pick the best candidate.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:02 +01:00
KtorZ 37f721ff06
fixup aesthetics
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 2a1253cb52
Add additional test to check for Sampler alias formatting.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 428d30c3bb
refactor and fix benchmark type-checking
Fixes:

  - Do not allow bench with no arguments; this causes a compiler panic
    down the line otherwise.

  - Do not force the return value to be a boolean or void. We do not
    actually control what's returned by benchmark, so anything really
    works here.

  Refactor:

  - Re-use code between test and bench type-checking; especially the
    bits related to gathering information about the via arguments.
    There's quite a lot and simply copy-pasting everything will likely
    cause issues and discrepency at the first change.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 0a4d60b821
minor aesthetic changes in test framework.
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 497f663513
actually fail if a (seeded) sampler return None
This is not supposed to happen, as only replayed sampler/fuzzer can
  stop.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:01 +01:00
KtorZ 782c3274f8
remove unnecessary intermediate variables
Introduced in some previous commits, so basically reverting that.

Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-09 16:18:00 +01:00
microproofs c382e6fba8 Add a debug flag for uplc eval 2025-02-09 08:39:38 -05:00
KtorZ 55cc1b932e
Run formatter across the codebase (rust 1.84.1)
Signed-off-by: KtorZ <5680256+KtorZ@users.noreply.github.com>
2025-02-08 15:03:26 +01:00
microproofs 7d6925545c
Fix: additional tipo case when using Pairs type inside of a redeemer or datum type 2025-01-30 18:54:14 +07:00
Riley-Kilgore 798e60fe78 Changes to lexer to keep clippy happy 2025-01-22 15:23:17 -08:00
Riley-Kilgore 79ac1b2bfa Fix benchmarking and cleanup for PR 2025-01-22 15:23:17 -08:00
Riley-Kilgore 07679b8acc Ran fmt 2025-01-22 15:23:17 -08:00
Riley-Kilgore bd44b22d59 Addressed comments on benchmarking PR 2025-01-22 15:23:17 -08:00
Riley-Kilgore df05ae7e5d Uh, formatting again.. 2025-01-22 15:23:17 -08:00
Riley-Kilgore d73ee3dfe7 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore 84a0abeb0f Old Fuzzer, new Sampler 2025-01-22 15:23:17 -08:00
Riley-Kilgore c0fabcd26a Added benchmark keyword and unified Samplers and Fuzzers as Generator 2025-01-22 15:23:17 -08:00
Riley-Kilgore d353e07ea1 Formatting 2025-01-22 15:23:17 -08:00
Riley-Kilgore 699628df62 Added ScaledFuzzer capabilities 2025-01-22 15:23:17 -08:00
Riley-Kilgore f55419e8fb Fixed basic benchmarking functionality 2025-01-22 15:23:17 -08:00
Riley-Kilgore e97e85a272 Dump (benchmarking wip) 2025-01-22 15:23:17 -08:00