Skip to content

OrchestrateLang v0.12.0

Choose a tag to compare

@Immanuel-Fowler Immanuel-Fowler released this 21 Sep 00:09
· 84 commits to main since this release

Wrong programs are told so in OrchestrateLang.

Fixed

An audit wrote twenty-eight deliberately wrong programs across the language and checked how
each one failed. Eleven reached rustc, reporting on generated code the user never wrote,
with advice about traits and moves that means nothing here. All eleven are now the
compiler's own errors, and the corpus is a test so they stay that way.

  • Calls check argument types, not just how many there are.
  • An unknown function is an error, not a warning followed by a rustc failure. print
    is generic over anything displayable, as the generated code always was.
  • A serverlet client only answers handlers its serverlet declares, and the error lists
    the ones it has. Handlers reached through a module alias resolve correctly.
  • start X() must name a serverlet that exists.
  • trigger must name a declared event, with the right number and types of arguments.
  • A struct literal must fill every field.
  • Comparing two unrelated types is an error, rather than a missing PartialOrd.
  • A function declared to return nothing cannot return a value.
  • fn, task, and process names must be unique, and an enum cannot repeat a variant.
  • process[...] must name processes, and each name must be declared.

Added

  • tests/error_cases/diagnostics/ holds the audit corpus, and diagnostics_never_leak_rustc
    asserts that every file there is rejected by the compiler rather than by Cargo, and that
    none is accepted.