A few references to oracles still remain, but they have been removed as a feature, at least.
Reviewed-on: #985
Reviewed-by: Ulf Wiger <ulfwiger@qpq.swiss>
Co-authored-by: Craig Everett <zxq9@zxq9.com>
Co-committed-by: Craig Everett <zxq9@zxq9.com>
* Fix tvar string generation
* Add check for number of tvars in a single type signature
The number of tvars is limited by serialization (u8) to 255
* Added a comment in CHANGELOG
* Docs fixes
* Adding docs about the limitation on number of tvars
* Limit is 256, not 255
* Update CHANGELOG.md
Co-authored-by: Gaith Hallak <gaithhallak@gmail.com>
---------
Co-authored-by: Gaith Hallak <gaithhallak@gmail.com>
* Extend compiler to allow bytes()/bytes as type
* Add split_any, to_fixed_size, size, to_any_size, Int.to_bytes and String.to_bytes
* Add tests
* Use and and not andalso in unify, some things have side-effects
* Bump to aebytecode v3.3.0
* Changelog + update documentation
* fix wording in documentation
* 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>
* 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
* Include all functions in the symbols map
* .
* remove improper wording
* Use update_symbols exported from aebytecode
* Extract adding child symbols into a separate fun
* Make child contracts symbols optional
* Document include_child_contract_symbols option
Co-authored-by: Gaith Hallak <gaithhallak@gmail.com>
* Add separate flags for each scode optimization
* Add a list of available optimizations to docs
* Update CONTRIBUTING.md
* Update docs/aeso_compiler.md
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
* Prefix rules functions with optimize_ instead of r_
Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
* Add CONTRIBUTING.md
* Include CONTRIBUTING.md in README.md
* Fix broken links
* Update CONTRIBUTING.md
* Update CONTRIBUTING.md
* Use "If a PR" instead of "If the PR"
* Mention fold and pretty printing
* Add missing precedence of the operator '|>'
* Add a note about tests
* Rename to Sophia
* Add missing using keyword
* Update the entire list of keywords in sophia syntax doc
* Add a section about creating a new aesophia release
* Add main contract, contract interface, and guards to the docs syntax
* Use Sep1 instead of Sep for the GuardedDef
* Add guarded case for switches
* Change '=' to '::=' in GuardedDef
* Add Using
* Add '|>' binary operator to aeso_syntax
* Add assign patter
* Fix typos
* Add polymorphism implmented interface syntax
* 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 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