* 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
* 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>
* Assume that void is a supertype of all types
* Add test for void supertype
* Unify functions with decls from implemented interfaces
* Rename delete_if_implementation
* Match only with function name and without typesig
* 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
* 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
* Fix stdlib warnings
* Mark unused includes when used from non-included files
* Do not mark indirectly included files as unused
* Show unused include warning only for files that are never used
* Remove unused include from Option.aes
* Consider functions passed as args as used
* Return warnings as a sorted list
* Fix failing tests
* Fix dialyzer warning
* Fix warning in Func.aes
* 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