This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch tvmscript-generic-parser-builder
in repository https://gitbox.apache.org/repos/asf/tvm.git

commit 5280a423c315850f395a515cc5eceeac1c2c4df9
Author: Tianqi Chen <[email protected]>
AuthorDate: Mon Sep 21 01:15:19 2026 +0000

    Preserve Relax standalone expression semantics
---
 python/tvm/relax/script/builder_v2/__init__.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/python/tvm/relax/script/builder_v2/__init__.py 
b/python/tvm/relax/script/builder_v2/__init__.py
index 066de66265..34cd2124fc 100644
--- a/python/tvm/relax/script/builder_v2/__init__.py
+++ b/python/tvm/relax/script/builder_v2/__init__.py
@@ -302,9 +302,17 @@ def bind_(
 
 
 def emit_(value, *, span=None):
-    """Consume an expression statement; effect-only operations return None."""
-    if value is not None:
-        bind_(value, span=span)
+    """Emit a void expression statement, retaining effect-only operations 
returning None."""
+    if value is None:
+        return
+    if not isinstance(value, _relax.Expr):
+        raise TypeError(f"Unsupported expression statement value: 
{type(value).__name__}")
+    result = bind_(value, name="_", span=span)
+    if not isinstance(result.ty, _ir.TupleType) or len(result.ty.fields) != 0:
+        raise ValueError(
+            "Non-void expressions must be bound to a variable; "
+            f"expression of type {result.ty} was used as a statement"
+        )
 
 
 def return_(value=None, *, span=None):

Reply via email to