hdl.ast: Value.matches() with no arguments should return C(1).
				
					
				
			The behavior of the following must be always the same: - `with m.Switch(v): with m.Case(*pats):` - `with m.If(v.matches(*pats)):`
This commit is contained in:
		
							parent
							
								
									9aeb22311f
								
							
						
					
					
						commit
						ef2e9fa809
					
				|  | @ -442,7 +442,7 @@ class Value(metaclass=ABCMeta): | ||||||
|                     continue |                     continue | ||||||
|                 matches.append(self == pattern) |                 matches.append(self == pattern) | ||||||
|         if not matches: |         if not matches: | ||||||
|             return Const(0) |             return Const(1) | ||||||
|         elif len(matches) == 1: |         elif len(matches) == 1: | ||||||
|             return matches[0] |             return matches[0] | ||||||
|         else: |         else: | ||||||
|  |  | ||||||
|  | @ -34,6 +34,7 @@ Language changes | ||||||
| * Added: :meth:`Value.matches` and ``with m.Case():`` accept any constant-castable objects. (`RFC 4`_) | * Added: :meth:`Value.matches` and ``with m.Case():`` accept any constant-castable objects. (`RFC 4`_) | ||||||
| * Changed: :meth:`Value.cast` casts :class:`ValueCastable` objects recursively. | * Changed: :meth:`Value.cast` casts :class:`ValueCastable` objects recursively. | ||||||
| * Changed: :meth:`Value.cast` treats instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) as enumerations rather than integers. | * Changed: :meth:`Value.cast` treats instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) as enumerations rather than integers. | ||||||
|  | * Changed: ``Value.matches()`` with an empty list of patterns returns ``Const(1)`` rather than ``Const(0)``, to match ``with m.Case():``. | ||||||
| * Changed: :class:`Cat` accepts instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) without warning. | * Changed: :class:`Cat` accepts instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) without warning. | ||||||
| * Deprecated: :meth:`Const.normalize`. (`RFC 5`_) | * Deprecated: :meth:`Const.normalize`. (`RFC 5`_) | ||||||
| * Removed: (deprecated in 0.1) casting of :class:`Shape` to and from a ``(width, signed)`` tuple. | * Removed: (deprecated in 0.1) casting of :class:`Shape` to and from a ``(width, signed)`` tuple. | ||||||
|  |  | ||||||
|  | @ -599,7 +599,7 @@ class OperatorTestCase(FHDLTestCase): | ||||||
| 
 | 
 | ||||||
|     def test_matches(self): |     def test_matches(self): | ||||||
|         s = Signal(4) |         s = Signal(4) | ||||||
|         self.assertRepr(s.matches(), "(const 1'd0)") |         self.assertRepr(s.matches(), "(const 1'd1)") | ||||||
|         self.assertRepr(s.matches(1), """ |         self.assertRepr(s.matches(1), """ | ||||||
|         (== (sig s) (const 1'd1)) |         (== (sig s) (const 1'd1)) | ||||||
|         """) |         """) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Catherine
						Catherine