summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLisandro Dalcin <dalcinl@gmail.com>2023-04-05 13:38:56 +0100
committerStefan Behnel <stefan_ml@behnel.de>2023-04-05 14:39:29 +0200
commitf5bf43e3aa1c408358b7b928e0736890a9dc8477 (patch)
treeba5a3f8f4cb7ec26f38c32dfd22e0b467aede06d
parent81cc29aedc0d0df69e81812cb8321cc0bcf41065 (diff)
downloadcython-f5bf43e3aa1c408358b7b928e0736890a9dc8477.tar.gz
Fix AnnotationWriter for IndexNode with empty TupleNode (GH-5355)
-rw-r--r--Cython/CodeWriter.py5
-rw-r--r--tests/run/embedsignatures.pyx5
2 files changed, 9 insertions, 1 deletions
diff --git a/Cython/CodeWriter.py b/Cython/CodeWriter.py
index 2e4646a65..a5453b90b 100644
--- a/Cython/CodeWriter.py
+++ b/Cython/CodeWriter.py
@@ -678,7 +678,10 @@ class ExpressionWriter(TreeVisitor):
self.visit(node.base)
self.put(u"[")
if isinstance(node.index, TupleNode):
- self.emit_sequence(node.index)
+ if node.index.subexpr_nodes():
+ self.emit_sequence(node.index)
+ else:
+ self.put(u"()")
else:
self.visit(node.index)
self.put(u"]")
diff --git a/tests/run/embedsignatures.pyx b/tests/run/embedsignatures.pyx
index 147f7afdd..c007edde3 100644
--- a/tests/run/embedsignatures.pyx
+++ b/tests/run/embedsignatures.pyx
@@ -429,6 +429,7 @@ cdef class Foo:
def m29(self, a: list(range(3))[0:1:1]): pass
def m30(self, a: list(range(3))[7, 3:2:1, ...]): pass
def m31(self, double[::1] a): pass
+ def m32(self, a: tuple[()]) -> tuple[tuple[()]]: pass
__doc__ += ur"""
>>> print(Foo.m00.__doc__)
@@ -526,4 +527,8 @@ Foo.m30(self, a: list(range(3))[7, 3:2:1, ...])
>>> print(Foo.m31.__doc__)
Foo.m31(self, double[::1] a)
+
+>>> print(Foo.m32.__doc__)
+Foo.m32(self, a: tuple[()]) -> tuple[tuple[()]]
+
"""