* Add aeso_utils:canonical_dir/1
* Add current file directory when resolving includes
* Add CHANGELOG
* Add documentation
* Add a test case
* Properly keep track of src_dir
* Add fann type and to_fann fun
* Add fann() to funcall
* Add fann() to closure
* Add fann() to set_state
* Add fann() to remote_u
* Add fann() to remote
* Add fann() to proj
* Add fann() to set_proj
* Add fann() to def and def_u
* Add fann() to op
* Add fann() to let
* Add fann() to lam
* Add fann() to builtin_u
* Add missing functions specs
* Dead code removal
* Fix the spec for compute_state_layout
* Add fann() to var
* Add fann() to switch
* Add fann() to lit and get_state
* Add fann() to builtin
* Add fann() to con
* Add fann() to tuple
* Add fann() to nil
* Fix missing fann() in tuple fexpr()
* Add dbgloc instruction to fate
* Add instructions lines to the debugging result
* Fix compiler tests
* Fix calldata tests
* Rname Ann to FAnn when the type is fann()
* Add line to fann()
* Change attributes for DBGLOC instruction
* Add file to fann()
* Add file to aeso_syntax:ann()
* Fix dialyzer warning
* Remove fann() from fsplit_pat() and fpat()
* Fill out empty fann() when possible
* Save debug locations for child contracts
* Include DBGLOC instructions in the compiler output
* Return an empty string instead of no_file atom
* Wrap args of DBGLOC in immediate tuple
* Upgrade aebytecode ref in rebar.config
* Add DBG_DEF and DBG_UNDEF
* Do not DBG_DEF vars with % prefix
* Do not use DBG_DEF and DBG_UNDEF on args
* Fix dbg_undef for args
* Rename DBGLOC to DBG_LOC
* Remove column from DBG_LOC
* Add missing dbg_loc in to_scode1
* Keep a single DBG_LOC instruction per line
* Remove col from fann
* Add DBG_LOC op to step at function sig
* Remove the variable-register map from debug output
* Use get_value/3 to handle default
* Use lookup instead of lookup_all
* List only needed attributes
* Make debug ops impure
* Split complicated code and add comment
* Fix annotations
* Fix indenting
* Remove dbg_loc before closure
* Add dbg_loc in to_scode
* Add DBG_CALL and DBG_RETURN
* Separate the split at CALL_T and loop
* Revert "Separate the split at CALL_T and loop"
This reverts commit 4ea823a7ca798c756b20cee32f928f41092c4959.
* Revert "Add DBG_CALL and DBG_RETURN"
This reverts commit c406c6feb09b6a5bb859c38d634f08208c901e5a.
* Disable tail call optimization for better debug call stack
* Rename env.debug to env.debug_info
* Upgrade aebytecode: Add DBG_CONTRACT
* Add DBG_CONTRACT instruction
* Check if a var name is fresh in separate function
* Add DBG_CONTRACT and DBG_LOC before DBG_DEF
* Save fresh names of pattern variables
* Implement fsplit_pat_vars for assign
* Set fann for switches
* Revert "Save fresh names of pattern variables"
This reverts commit d2473f982996336131477df2b2115c04a55a62cb.
* Add DBG_DEF for switch pattern vars
* Fix the inability to pattern match constructors
* Upgrade aebytecode dep
* Upgrade aebytecode dep
* Update the lock file
* Add annotations to fexpr var
* Fix issues with pretty-printing of fexprs
* Use FAnn instead of get_fann(Body)
* Upgrade aebytecode version
* Fix pp_fpat
* Fix pattern matching on fpat
* Update rename when a new rename comes up
* Upgrade aebytecode
* Remove the getopt dep
* Fix calldata tests
* Remove file committed by mistake
* Remove location anns from contract call type
* 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
* Add hole expressions
* Fix the issue of unreported holes
* Add tests
* New line in the end of the test file
* Update CHANGELOG
* Add hole expression to the docs
* Do not treat hole as a special type
* Update docs
* Update docs/sophia_features.md
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
* 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>