* Ban calling contracts functions as functions namespaces
* Ban using contracts as namespaces
* Add tests
* Update CHANGELOG
* Separate guards with a semicolon
* 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
Add functions as fields before inferring
Unbound untyped fields before binding typed ones
Fix failing tests
Make complex_types contract non-compatible with aevm
Reduce code duplication
Undo changes to test.aes
Remove special handling of __constructor__ field
Resolve field constraint by arity of contract function
Update CHANGELOG
Update CHANGELOG.md
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
Split bind_field function
Add a comment about rebinding
* Add operator lambdas
* Do not register anonymous functions as called functions
* Add tests
* Update CHANGELOG
* Update the docs
* Do not allow (..) to be used as a lambda
* Rename the function sum to any
* Add compiler warnings
Add include_type annotation to position
Add warning for unused includes
Add warning for unused stateful annotation
Add warning for unused functions
Add warning for shadowed variables
Add division by zero warning
Add warning for negative spends
Add warning for unused variables
Add warning for unused parameters
Change the ets table type to set for unused vars
Add warning for unused type defs
Move unused variables warning to the top level
Temporarily disable unused functions warnings
Add all kinds of warnings to a single ets table
Enable warnings separately through options
Use when_option instead of enabled_warnings
Turn warnings into type errors with warn_error option
Enable warning package warn_all
Re-enable unused functions warnings
Report warnings as type errors in a separate function
Make unused_function a recognized warning
Report warnings as a result of compilation
Fix tests and error for unknown warnings options
Fix dialyzer warnings
Do not show warning for variables called "_"
Move warnings handling into a separate module
Do not show warning for unused public functions in namespaces
Add src file name to unused include warning
Mark public functions in namespaces as used
Add tests for added warnings
Add warning for unused return value
Add test for turning warnings into type errors
* Update CHANGELOG
* 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
* Add using namespace as to scanner and parser
* Change the alias from id() to con()
* Add using namespace to AST type inference
* Allow using namespace to appear in the top level
* Allow using namespace to appear inside functions
* Add a compiler test for using namespace
* Handle name collisions
* Implement mk_error for ambiguous_name
* Add failing test for ambiguous names
* Limit the scope of the used namespaces
* Add test for wrong scope of using namespace
* Use a single using declaration
* Split long line
* Forbid using undefined namespaces
* Add a test for using undefined namespaces
* Change the type of used_namespaces
* Add using namespace parts to scanner and parser
* Add using namespace parts to ast type inference
* Add tests for using namespace parts
* Update CHANGELOG.md
* Code cleaning
* Update the docs
* Update the docs about the same alias for multiple namespaces
* Implement Set stdlib
* Rename an argument of the function Set.fold
* Add docs for Set stdlib
* Correct the usage of articles in the docs
* Fix bug
* Fix the link to Set stdlib section
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
* 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
* Allow block with separate type signature and definition of a function
For instance,
```
function
add : (int, int) => int
add(x, y) = x + y
```
cc #196
* Allow pattern matching in left-hand sides
* Changelog
* Fix type spec
* partial case-on-constructor
* Changelog for pattern-matching lets