1
2cimport cython
3
4
5def f(obj1, obj2, obj3, obj4, obj5):
6    """
7    >>> f(1,2,3,4,5)
8    ()
9    """
10    obj1 = ()
11    return obj1
12
13
14def g(obj1, obj2, obj3, obj4, obj5):
15    """
16    >>> g(1,2,3,4,5)
17    (2,)
18    """
19    obj1 = ()
20    obj1 = (obj2,)
21    return obj1
22
23
24def h(obj1, obj2, obj3, obj4, obj5):
25    """
26    >>> h(1,2,3,4,5)
27    (2, 3)
28    """
29    obj1 = ()
30    obj1 = (obj2,)
31    obj1 = obj2, obj3
32    return obj1
33
34
35def j(obj1, obj2, obj3, obj4, obj5):
36    """
37    >>> j(1,2,3,4,5)
38    (2, 3, 4)
39    """
40    obj1 = ()
41    obj1 = (obj2,)
42    obj1 = obj2, obj3
43    obj1 = (obj2, obj3, obj4)
44    return obj1
45
46
47def k(obj1, obj2, obj3, obj4, obj5):
48    """
49    >>> k(1,2,3,4,5)
50    (2, 3, 4)
51    """
52    obj1 = ()
53    obj1 = (obj2,)
54    obj1 = obj2, obj3
55    obj1 = (obj2, obj3, obj4)
56    obj1 = (obj2, obj3, obj4,)
57    return obj1
58
59
60def l(obj1, obj2, obj3, obj4, obj5):
61    """
62    >>> l(1,2,3,4,5)
63    (17, 42, 88)
64    """
65    obj1 = ()
66    obj1 = (obj2,)
67    obj1 = obj2, obj3
68    obj1 = (obj2, obj3, obj4)
69    obj1 = (obj2, obj3, obj4,)
70    obj1 = 17, 42, 88
71    return obj1
72
73
74def tuple_none():
75    """
76    >>> tuple_none()   # doctest: +ELLIPSIS
77    Traceback (most recent call last):
78    TypeError: ...itera...
79    """
80    return tuple(None)
81
82
83def tuple_none_list():
84    """
85    >>> tuple_none_list()   # doctest: +ELLIPSIS
86    Traceback (most recent call last):
87    TypeError: ...iterable...
88    """
89    cdef list none = None
90    return tuple(none)
91
92
93@cython.test_fail_if_path_exists(
94    '//SimpleCallNode',
95    '//PythonCapiCallNode'
96)
97def tuple_of_tuple_literal():
98    """
99    >>> tuple_of_tuple_literal()
100    (1, 2, 3)
101    """
102    return tuple(tuple(tuple((1,2,3))))
103
104
105@cython.test_fail_if_path_exists(
106    '//SimpleCallNode',
107    '//PythonCapiCallNode'
108)
109def tuple_of_args_tuple(*args):
110    """
111    >>> tuple_of_args_tuple(1,2,3)
112    (1, 2, 3)
113    """
114    return tuple(tuple(tuple(args)))
115
116
117@cython.test_fail_if_path_exists('//SimpleCallNode//SimpleCallNode')
118def tuple_of_object(ob):
119    """
120    >>> tuple(type(1))
121    Traceback (most recent call last):
122    TypeError: 'type' object is not iterable
123    >>> sorted(tuple(set([1, 2, 3])))
124    [1, 2, 3]
125    """
126    return tuple(ob)
127
128
129@cython.test_fail_if_path_exists(
130    '//SimpleCallNode',
131    '//PythonCapiCallNode//PythonCapiCallNode'
132)
133def tuple_of_tuple_or_none(tuple x):
134    """
135    >>> tuple_of_tuple_or_none((1,2,3))
136    (1, 2, 3)
137    >>> tuple_of_tuple_or_none(None)   # doctest: +ELLIPSIS
138    Traceback (most recent call last):
139    TypeError: ...itera...
140    """
141    return tuple(tuple(tuple(x)))
142
143
144@cython.test_fail_if_path_exists(
145    "//ExprStatNode//TupleNode",
146    "//ExprStatNode",
147)
148def unused_literals():
149    """
150    >>> unused_literals()
151    """
152    (1, 2, 3)
153    (1, 2, 3 + 4)
154    ("abc", 'def')
155    #(int(), 2, 3)
156
157
158@cython.test_assert_path_exists(
159    "//ExprStatNode",
160    "//ExprStatNode//TupleNode",
161)
162def unused_non_literal():
163    """
164    >>> unused_non_literal()
165    """
166    (set(), None)
167    (range(10), None)
168