Polymorphism support (#357)
* 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
This commit is contained in:
+12
-4
@@ -1,4 +1,12 @@
|
||||
contract ShareTwo =
|
||||
record state = {s1 : int, s2 : int}
|
||||
entrypoint init() = {s1 = 0, s2 = 0}
|
||||
stateful entrypoint buy() = ()
|
||||
// This is a custom test file if you need to run a compiler without
|
||||
// changing aeso_compiler_tests.erl
|
||||
|
||||
include "List.aes"
|
||||
|
||||
contract IntegerHolder =
|
||||
type state = int
|
||||
entrypoint init(x) = x
|
||||
entrypoint get() = state
|
||||
|
||||
main contract Test =
|
||||
stateful entrypoint f(c) = Chain.clone(ref=c, 123)
|
||||
|
||||
Reference in New Issue
Block a user