luau/prototyping
Lily Brown 0bd21762ae
Prototype bools and relational operators (#387)
Prototypes booleans and relational operators.

As part of this I removed `FFI/Data/Bool.agda`, because it was getting in the way - we already use `Agda.Builtin.Bool` instead for other cases.
2022-02-24 11:17:46 -08:00
..
Examples Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
FFI Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
Luau Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
Properties Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
Tests Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
Utility Prototype bools and relational operators (#387) 2022-02-24 11:17:46 -08:00
.gitignore Prototyping: Revise CI (#371) 2022-02-17 17:15:33 -08:00
Examples.agda Add a typeToString function to the prototype (#354) 2022-02-11 14:38:35 -06:00
Interpreter.agda Prototyping: numbers (#368) 2022-02-18 11:09:00 -08:00
PrettyPrinter.agda Prototyping: numbers (#368) 2022-02-18 11:09:00 -08:00
Properties.agda Add Properties.Equality to prototyping (#376) 2022-02-18 16:47:04 -06:00
README.md Prototyping: Revise CI (#371) 2022-02-17 17:15:33 -08:00
tests.py Rename tests to tests.py (#374) 2022-02-18 10:04:38 -08:00

Prototyping Luau

prototyping workflow

An experimental prototyping system for the Luau type system. This is intended to allow core language features to be tested quickly, without having to interact with all the features of production Lua.

Building

First install Haskell and Agda.

Install dependencies:

  cabal update
  cabal install --lib aeson scientific vector

Then compile

  agda --compile PrettyPrinter.agda

and run!

  luau-ast Examples/SmokeTest.lua | ./PrettyPrinter

Testing

We have a series of snapshot tests in the Tests/ directory. You interact with the tests using the tests Python script in the prototyping directory. To simply run the tests, run:

tests --luau-cli ../build/luau-ast --build

This will build the test targets and run them. Run tests --help for information about all the command-line options.

Adding a new test

To add a new test, add it to Tests/{SUITE_NAME}/{CASE_NAME}. You'll need an in.lua file and an out.txt file. The in.lua file is the input Luau source code, while the out.txt file is the expected output after running luau-ast in.lua | test_executable.

Updating a test

If you make a change to the prototype that results in an expected change in behavior, you might want to update the test cases automatically. To do this, run tests with the --accept-new-output (-a for short) flag. Rather than diffing the output, this will overwrite the out.txt files for each test case with the actual result. Commit the resulting changes with your PR.