def test_annotation_merge(): with pytest.raises(MyiaTypeError): annotation_merge( AbstractUnion( [AbstractScalar({TYPE: i16}), AbstractScalar({TYPE: f32})]), AbstractScalar({TYPE: i32}), ) scalar = AbstractScalar({TYPE: f32}) union = AbstractUnion([AbstractScalar({TYPE: i16}), scalar]) assert annotation_merge(union, scalar) is scalar assert annotation_merge(union, scalar, forced=True) is union generic_list_type = type_to_abstract(list) specific_list_type = to_abstract([1, 2]) assert isinstance(generic_list_type, AbstractUnion) assert (annotation_merge(generic_list_type, specific_list_type, forced=True) is generic_list_type) assert isinstance(annotation_merge(generic_list_type, specific_list_type), AbstractADT)
def test_to_abstract_list(): assert to_abstract([]) is empty assert to_abstract([1, 2, 3]) is listof(S(t=ty.Int[64]))
def test_to_abstract_skey(): inst = SymbolicKeyInstance(Constant(123), 456) expected = AbstractScalar({VALUE: inst, TYPE: ty.SymbolicKeyType}) assert to_abstract(inst) == expected
def test_to_abstract_xtype(): assert to_abstract(ty.Int[64]) is AbstractType(S(t=ty.Int[64]))
def test_to_abstract(): inst = SymbolicKeyInstance(Constant(123), 456) assert to_abstract(inst) == _S({VALUE: inst, TYPE: ty.SymbolicKeyType})