#pragma once namespace test_type_equality { void run_tests(); }; static constexpr unsigned not_equal = 0; static constexpr unsigned equal_incomplete = 1 << 1; // equal should be the last one static constexpr unsigned equal = 1 << 2; extern unsigned eq_identifier(const_tree a, const_tree b); extern unsigned eq_pointer(const_tree a, const_tree b); extern unsigned eq_main_variant(const_tree a, const_tree b); extern unsigned eq_canonical(const_tree a, const_tree b); extern unsigned eq_canonical_internal(const_tree a, const_tree b); extern unsigned eq_type_compare(const_tree a, const_tree b); extern unsigned eq_type_structural(const_tree a, const_tree b); extern unsigned eq_types(const_tree a, const_tree b, const bool force_structural = false);