Beispiel #1
0
 def _f(t: Type):
     return match(t)(lambda T: {
         T:
             Type.reference(T),
         Type.pointer(T):
             Type.rvalue_reference(T),
     })
Beispiel #2
0
 def f(t: Type):
     return match(t)(lambda T: {
         Type.rvalue_reference(T):
             T,
         T:
             Type('double'),
     })
Beispiel #3
0
def test_match_optimization_with_specialization_chooses_specialization():
    from tmppy import Type, match

    def _f(t: Type):
        return match(t)(lambda T: {
            T: Type.reference(T),
            Type.pointer(T): Type.rvalue_reference(T),
        })

    assert _f(Type.pointer(Type('int'))) == Type.rvalue_reference(Type('int'))
Beispiel #4
0
def test_rvalue_reference_type_expr_as_match_expr_matched_success():
    from tmppy import Type, match

    def f(t: Type):
        return match(t)(lambda T: {
            Type.rvalue_reference(T): T,
            T: Type('double'),
        })

    assert f(Type.rvalue_reference(Type('int'))) == Type('int')
Beispiel #5
0
def test_type_rvalue_reference_literal_collapsed_with_reference_reverse_order(
):
    from tmppy import Type
    assert Type.reference(Type('int')) == Type.rvalue_reference(
        Type.reference(Type('int')))
Beispiel #6
0
def test_type_rvalue_reference_literal_collapsed():
    from tmppy import Type
    assert Type.rvalue_reference(Type('int')) == Type.rvalue_reference(
        Type.rvalue_reference(Type('int')))
Beispiel #7
0
def test_type_rvalue_reference_literal_different_from_two_references_success():
    from tmppy import Type
    assert Type.rvalue_reference(Type('int')) != Type.reference(
        Type.reference(Type('int')))
Beispiel #8
0
 def f(x: bool):
     return Type.rvalue_reference(
         5
     )  # error: The argument passed to Type.rvalue_reference\(\) should have type Type, but was: int
Beispiel #9
0
 def f(x: bool):
     return Type.rvalue_reference(
         'x',
         'y')  # error: Type.rvalue_reference\(\) takes 1 argument. Got: 2
Beispiel #10
0
 def f(x: bool):
     return Type.rvalue_reference(
         x=1
     )  # error: Keyword arguments are not supported in Type.rvalue_reference\(\)
Beispiel #11
0
def test_type_rvalue_reference_literal_success():
    from tmppy import Type
    assert Type.rvalue_reference(Type('int')) == Type.rvalue_reference(
        Type('int'))