Closed as not planned
Description
Specifically, this allows strongly-typed assurances when creating specialized matchers:
abstract class StringMatcher extends Matcher<String> {}
I don't think this is a breaking change, unless we specifically want to allow something like:
expect(5, isNot(equalsIgnoringCase('5')))
Added after the fact by @nex3
Blocking issues (see comments for details):
- use min/max instead of LUB/GLB in strong mode inference? sdk#27917 - changes in strong mode inference. Closed as not planned - too breaking
- Sum/union types and type matching language#83 - add support for union types
- Inference should flow information between arguments in a generic function call language#731 - flow information between arguments during inference.