Exemple #1
0
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)
Exemple #2
0
def test_to_abstract_list():
    assert to_abstract([]) is empty
    assert to_abstract([1, 2, 3]) is listof(S(t=ty.Int[64]))
Exemple #3
0
def test_to_abstract_skey():
    inst = SymbolicKeyInstance(Constant(123), 456)
    expected = AbstractScalar({VALUE: inst, TYPE: ty.SymbolicKeyType})
    assert to_abstract(inst) == expected
Exemple #4
0
def test_to_abstract_xtype():
    assert to_abstract(ty.Int[64]) is AbstractType(S(t=ty.Int[64]))
Exemple #5
0
def test_to_abstract():
    inst = SymbolicKeyInstance(Constant(123), 456)
    assert to_abstract(inst) == _S({VALUE: inst, TYPE: ty.SymbolicKeyType})