diff --git a/amaranth/lib/enum.py b/amaranth/lib/enum.py index 865e6a1..8e1d91e 100644 --- a/amaranth/lib/enum.py +++ b/amaranth/lib/enum.py @@ -47,7 +47,7 @@ class EnumMeta(ShapeCastable, py_enum.EnumMeta): message="Value of enumeration member {!r} is signed, but enumeration " "shape is {!r}" # the repr will be `unsigned(X)` .format(member, shape), - category=RuntimeWarning, + category=SyntaxWarning, stacklevel=2) elif (member_shape.width > shape.width or member_shape.width == shape.width and @@ -56,7 +56,7 @@ class EnumMeta(ShapeCastable, py_enum.EnumMeta): message="Value of enumeration member {!r} will be truncated to " "enumeration shape {!r}" .format(member, shape), - category=RuntimeWarning, + category=SyntaxWarning, stacklevel=2) else: # Shape is not provided explicitly. Behave the same as a standard enumeration; diff --git a/tests/test_lib_enum.py b/tests/test_lib_enum.py index 0040fee..f7f668c 100644 --- a/tests/test_lib_enum.py +++ b/tests/test_lib_enum.py @@ -53,24 +53,24 @@ class EnumTestCase(FHDLTestCase): self.assertEqual(Shape.cast(EnumD), signed(4)) def test_shape_explicit_wrong_signed_mismatch(self): - with self.assertWarnsRegex(RuntimeWarning, + with self.assertWarnsRegex(SyntaxWarning, r"^Value of enumeration member is signed, but enumeration " r"shape is unsigned\(1\)$"): class EnumA(Enum, shape=unsigned(1)): A = -1 def test_shape_explicit_wrong_too_wide(self): - with self.assertWarnsRegex(RuntimeWarning, + with self.assertWarnsRegex(SyntaxWarning, r"^Value of enumeration member will be truncated to enumeration " r"shape unsigned\(1\)$"): class EnumA(Enum, shape=unsigned(1)): A = 2 - with self.assertWarnsRegex(RuntimeWarning, + with self.assertWarnsRegex(SyntaxWarning, r"^Value of enumeration member will be truncated to enumeration " r"shape signed\(1\)$"): class EnumB(Enum, shape=signed(1)): A = 1 - with self.assertWarnsRegex(RuntimeWarning, + with self.assertWarnsRegex(SyntaxWarning, r"^Value of enumeration member will be truncated to enumeration " r"shape signed\(1\)$"): class EnumC(Enum, shape=signed(1)):