def _f(t: Type): return match(t)(lambda T: { T: Type.reference(T), Type.pointer(T): Type.rvalue_reference(T), })
def f(t: Type): return match(t)(lambda T: { Type.rvalue_reference(T): T, T: Type('double'), })
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'))
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')
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')))
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')))
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')))
def f(x: bool): return Type.rvalue_reference( 5 ) # error: The argument passed to Type.rvalue_reference\(\) should have type Type, but was: int
def f(x: bool): return Type.rvalue_reference( 'x', 'y') # error: Type.rvalue_reference\(\) takes 1 argument. Got: 2
def f(x: bool): return Type.rvalue_reference( x=1 ) # error: Keyword arguments are not supported in Type.rvalue_reference\(\)
def test_type_rvalue_reference_literal_success(): from tmppy import Type assert Type.rvalue_reference(Type('int')) == Type.rvalue_reference( Type('int'))