* Allow compile-time constants as toplevel declarations
* Remove the test that fails on toplevel consts
* Warn when shadowing a constant
* Allow records to be used as compile time constants
* Allow data constructors in compile-time constants
* Disable some warnings for toplevel constants
Since variables and functions cannot be used in the definition of
a compile time constants, the following warnings are not going to be
reported:
* Used/Unused variable
* Used/Unused function
* Do not reverse constants declarations
* Add tests for all valid expressions
* Add test for accessing const from namespace
* Revert "Do not reverse constants declarations"
This reverts commit c4647fadacd134866e4be9c2ab4b0d54870a35fd.
* Add test for assigining constant to a constant
* Show empty map or record error when assigning to const
* Report all invalid constant expressions before fail
* Allow accessing records fields in toplevel consts
* Undo a mistake
* Add test for warning on const shadowing
* Show error message when using pattern matching for consts
* Remove unused error
* Ban toplevel constants in contract interfaces
* Varibles rename
* Change the error message for invalid_const_id
* Make constants public in namespaces and private in contracts
* Add a warning about unused constants in contracts
* Use ban_when_const for function applications
* Test for qualified access of constants in functions
* Add failing tests
* Add test for the unused const warning
* Update CHANGELOG
* Update all_syntax test file
* Treat expr and type inside bound as bound
* Allow typed ids to be used for constants
* List valid exprs in the error message for invalid exprs
* Fix tests
* Update the docs about constants
* Update syntax docs
* Check validity of const exprs in a separate functions
* Call both resolve_const and resolve_fun from resolve_var
* Return mapping from variables to registers
* Fix dialyzer issues
* Record real names
* Report saved fresh names as part of fcode env
* Undo whitespace changes
* Fix dialyzer warnings
* Formatting fix
* Use function names as strings
* Manually handle making function names
* Update CHANGELOG
* Make variables registers optional
* Update docs about the new flag
* Remove empty saved_fresh_names map from fcode env
* Move the missing_definition error to the type checker
* Move the parameterised_event and parameterised_state errors to the type checker
* Remove check_state_and_event_types from ast_to_fcode
* Move missing_init_function to the type checker
* Remove the code error last_declaration_must_be_main_contract
* Expand the tests for missing init function
* Remove found_void error
* Move the higher order entrypoint error to type checker
* Move invalid_aens_resolve_type error to type checker
* Add more tests for AENS.resolve
* Add test for AENS.resolve with using
* Move invalid_oracle_type error to type checker
* Move old code errors tests to compilable_contracts
* Remove the file aeso_code_errors.erl
* Add comment about state type
* Add polymorphism to syntax tree and parser
* Add polymorphism to infer types
* Fix pretty printing
* Add new tests and fix old tests
* Fix the comparison between unit and empty tuple
* Report undefined interface errors before checking implemented interfaces
* Add test for implementing multiple interfaces
* Add test for implementing two interfaces with entrypoints of same names and different types
* Add tests for interfaces implementing interfaces
* Draft: Add variance switching
* Revert "Draft: Add variance switching"
This reverts commit 92dc6ac169cfbff447ed59de04994f564876b3fb.
* Add variance switching
* Fix broken tests
* Fix broken abi tests
* Add tests for variance switching
* Fix tests after rebase
* Variance switching for custom datatypes
* Fix dialyzer warning
* Add testing for custom types variance switching
* Make opposite_variance a separate function
* Make is_subtype/4 a separate function
* Fix warning
* Mark tvars as invariant
* Add type_vars_uvar ets table to ets_tables()
* Don't destroy and recreate type errors table when not needed
* Fixes from the reviews
* Use is_list to check if a var is a list
* Compare named args in fun_t
* Test only for covariance and contravariance
* Remove arrows_in_type and use infer_type_vars_variance instead
* Add tests for option and type aliases
* Fix previous commit
* Rename check_implemented_interfaces_recursive to check_implemented_interfaces1
* Make interfaces declare functions from extended interfaces
* Restore test.aes
* Add test for variance switching in records
* Enable variance switching for record types
* Handle builtin types type variables separately
* Add tests for oracles and oracle queries
* Replace compare_types with non-throwing version of unify
* Add the context to unification error
* Test variance switching for bivariant records
* Give clear names to the records in records variance switching test
* Handle comments about polymorphism_variance_switching.aes
* Rename datatypes in custom types variance switching test for readability
* Change the variance of the oracle_query type vars
* Add test for accessing maps with the wrong type
* Default to invariant when the variance of the type vars is unknown
* Rename test files to have common prefix
* Rename functions in variance switching tests for readability
* Fix variance inference
* Eliminate redundant tests
* Test all cases for bivariant
* Add case guards to parser
* Add pattern guards to infer types and fcode generation
* Add functions guards
* Add test for patterns guards
* Update docs
* Update CHANGELOG.md
* Remove stateful context from Env for guards
* Elaborate on guards
* Add failing test for stateful pattern guards
* Implement multiple guards
* Fix tests
* Disable aevm related tests
* Split the sentence before if and otherwise
* Fix type in docs
* Implement multiple exprs in the same guard
* Fix pretty printing
* Change tests to include multiple guards
* Add test for non-boolean guards
* Desugar clauses with guards
* Fix incomplete patterns bug
* Fix docs
* Compile to icode when no guards are used
* Revert "Disable aevm related tests"
This reverts commit e828099bd97dffe11438f2e48f3a92ce3641e85b.
* Change syntax tree and parser
* Add assign pattern to type inference
* Use check_expr instead of hard-coded type
* Add fcode generation for assign pattern
* Implement rename_spat for assign pattern
* Add tests
* Update CHANGELOG.md
* Update docs and changelog
* Add letpat to aeso_syntax_utils:fold
* Use Plus instead of Scoped
* Support for CREATE, CLONE and BYTECODE_HASH
* Add missing files
* Pushed the clone example through the typechecker
* CLONE compiles
* Fix dependent type in CLONE
* Bytecode hash fixes
* Refactor
* Refactor 2
* move some logic away
* Fixed some error messages. Type inference of child contract still does some random shit\n(mistakes arguments with result type)
* CREATE sometimes compiles and sometimes not
* Fix some scoping/constraint issues
* works, needs cleanup
* cleanup
* Fix some tests. Remove optimization of singleton tuples
* Fix default argument for clone
* Cleanup
* CHANGELOG
* Mention void type
* Address review, fix some dialyzer errors
* Please dialyzer
* Fix failing tests
* Write negative tests
* Docs
* TOC
* missing 'the'
* missing 'the'
* missing 'the'
* missing 'the'
* mention pre-fund
* format
* pre-fund clarification
* format
* Grammar in docs