This reproducible failure is triggered by the code snippet below
import tvm.testing
import tvm.relay.testing
import pytest
import tvm.relay.transform
from tvm.tir.expr import *
from tvm.relay.dataflow_pattern import *
import tvm.topi.testing
import tvm.relay as relay
warning=pytest.raises(tvm.error.DiagnosticError)
SEMVER = '#[version = "0.0.5"]\n'
# BINARY_OPS = {'*': relay.multiply, '/': relay.divide, '+': relay.add, '-': relay.subtract, '<': relay.less, '>': relay.greater, '<=': relay.less_equal, '>=': relay.greater_equal, '==': relay.equal, '!=': relay.not_equal}
# TYPES = {'int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', 'uint64', 'float16', 'float32', 'float64', 'bool', 'int8x4', 'uint1x4', 'float16x4'}
# LIST_DEFN = '\ntype List[A] {\n Cons(A, List[A]),\n Nil,\n}\n'
def assert_graph_equal(lhs, rhs):
tvm.ir.assert_structural_equal(lhs, rhs, map_free_vars=True)
def graph_equal(lhs, rhs):
return tvm.ir.structural_equal(lhs, rhs, map_free_vars=True)
def roundtrip_expr(expr):
text = tvm.relay.Expr.astext(expr, show_meta_data=False)
x = tvm.parser.parse_expr(text)
assert_graph_equal(x, expr)
def roundtrip(expr):
x = tvm.parser.fromtext(expr.astext())
assert_graph_equal(x, expr)
def parse_text(code):
expr = tvm.parser.parse_expr(code)
roundtrip_expr(expr)
return expr
def parses_as(code, expr):
parsed = parse_text(code)
result = graph_equal(parsed, expr)
return result
def parse_module(code):
mod = tvm.parser.parse((SEMVER + code))
roundtrip(mod)
return mod
with warning:
parse_module(('''
%s
type List[A] {
Cons(A, List[A]),
Nil,
}
''' % '''
type List[A] {
Cons(A, List[A]),
Nil,
}
'''))
Through differential testing, TVM-0.8 provided less detailed message than TVM-0.7.
Message given by TVM-0.7:
file:10:18: parse error: a type definition with the name `List` was previously defined
type List[A] {
~~~~~~~~~~~~~~~~~^~~~~~~~~
file:11:13: parse error: a constructor with the name `Cons` was previously defined
Cons(A, List[A]),
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
Message given by TVM-0.8 dev:
error: a constructor with the name `Cons` was previously defined
--> from_string:11:13
|
11 | Cons(A, List[A]),
| ^^^^
Wouldn’t it be better to have TVM 0.8 display the same detailed message as TVM 0.7?