Revert "Revert some changes since the latest published (#167)" (#170)
This reverts commit 5aae0d58d334bd329442e832ca5f7cfe5c04dd4e.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f990411..d8a3dd1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.12.11-dev
+
+* Change many argument types from `dynamic` to `Object?`.
+
## 0.12.10
* Stable release for null safety.
diff --git a/lib/mirror_matchers.dart b/lib/mirror_matchers.dart
index 4aaf5ad..9327eba 100644
--- a/lib/mirror_matchers.dart
+++ b/lib/mirror_matchers.dart
@@ -14,7 +14,7 @@
/// Returns a matcher that checks if a class instance has a property
/// with name [name], and optionally, if that property in turn satisfies
/// a [matcher].
-Matcher hasProperty(String name, [matcher]) =>
+Matcher hasProperty(String name, [Object? matcher]) =>
_HasProperty(name, matcher == null ? null : wrapMatcher(matcher));
class _HasProperty extends Matcher {
@@ -24,7 +24,7 @@
const _HasProperty(this._name, [this._matcher]);
@override
- bool matches(item, Map matchState) {
+ bool matches(Object? item, Map matchState) {
var mirror = reflect(item);
var classMirror = mirror.type;
var symbol = Symbol(_name);
@@ -63,8 +63,8 @@
}
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
var reason = matchState['reason'];
if (reason != null) {
mismatchDescription.add(reason as String);
diff --git a/lib/src/core_matchers.dart b/lib/src/core_matchers.dart
index c049109..42fc2df 100644
--- a/lib/src/core_matchers.dart
+++ b/lib/src/core_matchers.dart
@@ -14,7 +14,7 @@
const _Empty();
@override
- bool matches(item, Map matchState) => item.isEmpty;
+ bool matches(Object? item, Map matchState) => (item as dynamic).isEmpty;
@override
Description describe(Description description) => description.add('empty');
@@ -27,7 +27,7 @@
const _NotEmpty();
@override
- bool matches(item, Map matchState) => item.isNotEmpty;
+ bool matches(Object? item, Map matchState) => (item as dynamic).isNotEmpty;
@override
Description describe(Description description) => description.add('non-empty');
@@ -42,7 +42,7 @@
class _IsNull extends Matcher {
const _IsNull();
@override
- bool matches(item, Map matchState) => item == null;
+ bool matches(Object? item, Map matchState) => item == null;
@override
Description describe(Description description) => description.add('null');
}
@@ -50,7 +50,7 @@
class _IsNotNull extends Matcher {
const _IsNotNull();
@override
- bool matches(item, Map matchState) => item != null;
+ bool matches(Object? item, Map matchState) => item != null;
@override
Description describe(Description description) => description.add('not null');
}
@@ -64,7 +64,7 @@
class _IsTrue extends Matcher {
const _IsTrue();
@override
- bool matches(item, Map matchState) => item == true;
+ bool matches(Object? item, Map matchState) => item == true;
@override
Description describe(Description description) => description.add('true');
}
@@ -72,7 +72,7 @@
class _IsFalse extends Matcher {
const _IsFalse();
@override
- bool matches(item, Map matchState) => item == false;
+ bool matches(Object? item, Map matchState) => item == false;
@override
Description describe(Description description) => description.add('false');
}
@@ -103,13 +103,13 @@
/// Returns a matches that matches if the value is the same instance
/// as [expected], using [identical].
-Matcher same(expected) => _IsSameAs(expected);
+Matcher same(Object? expected) => _IsSameAs(expected);
class _IsSameAs extends Matcher {
final Object? _expected;
const _IsSameAs(this._expected);
@override
- bool matches(item, Map matchState) => identical(item, _expected);
+ bool matches(Object? item, Map matchState) => identical(item, _expected);
// If all types were hashable we could show a hash here.
@override
Description describe(Description description) =>
@@ -122,7 +122,7 @@
class _IsAnything extends Matcher {
const _IsAnything();
@override
- bool matches(item, Map matchState) => true;
+ bool matches(Object? item, Map matchState) => true;
@override
Description describe(Description description) => description.add('anything');
}
@@ -181,24 +181,20 @@
/// Returns a matcher that matches if an object has a length property
/// that matches [matcher].
-Matcher hasLength(matcher) => _HasLength(wrapMatcher(matcher));
+Matcher hasLength(Object? matcher) => _HasLength(wrapMatcher(matcher));
class _HasLength extends Matcher {
final Matcher _matcher;
const _HasLength(this._matcher);
@override
- bool matches(item, Map matchState) {
+ bool matches(Object? item, Map matchState) {
try {
- // This is harmless code that will throw if no length property
- // but subtle enough that an optimizer shouldn't strip it out.
- if (item.length * item.length >= 0) {
- return _matcher.matches(item.length, matchState);
- }
+ final length = (item as dynamic).length;
+ return _matcher.matches(length, matchState);
} catch (e) {
return false;
}
- throw UnsupportedError('Should never get here');
}
@override
@@ -206,20 +202,14 @@
description.add('an object with length of ').addDescriptionOf(_matcher);
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
try {
- // We want to generate a different description if there is no length
- // property; we use the same trick as in matches().
- if (item.length * item.length >= 0) {
- return mismatchDescription
- .add('has length of ')
- .addDescriptionOf(item.length);
- }
+ final length = (item as dynamic).length;
+ return mismatchDescription.add('has length of ').addDescriptionOf(length);
} catch (e) {
return mismatchDescription.add('has no length property');
}
- throw UnsupportedError('Should never get here');
}
}
@@ -230,7 +220,7 @@
/// for [Map]s it means the map has the key, and for [Iterable]s
/// it means the iterable has a matching element. In the case of iterables,
/// [expected] can itself be a matcher.
-Matcher contains(expected) => _Contains(expected);
+Matcher contains(Object? expected) => _Contains(expected);
class _Contains extends Matcher {
final Object? _expected;
@@ -238,7 +228,7 @@
const _Contains(this._expected);
@override
- bool matches(item, Map matchState) {
+ bool matches(Object? item, Map matchState) {
var expected = _expected;
if (item is String) {
return expected is Pattern && item.contains(expected);
@@ -259,8 +249,8 @@
description.add('contains ').addDescriptionOf(_expected);
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
if (item is String || item is Iterable || item is Map) {
return super
.describeMismatch(item, mismatchDescription, matchState, verbose);
@@ -272,7 +262,7 @@
/// Returns a matcher that matches if the match argument is in
/// the expected value. This is the converse of [contains].
-Matcher isIn(expected) {
+Matcher isIn(Object? expected) {
if (expected is Iterable) {
return _In(expected, expected.contains);
} else if (expected is String) {
diff --git a/lib/src/custom_matcher.dart b/lib/src/custom_matcher.dart
index f7581a9..4fd53e0 100644
--- a/lib/src/custom_matcher.dart
+++ b/lib/src/custom_matcher.dart
@@ -35,14 +35,15 @@
final String _featureName;
final Matcher _matcher;
- CustomMatcher(this._featureDescription, this._featureName, matcher)
- : _matcher = wrapMatcher(matcher);
+ CustomMatcher(
+ this._featureDescription, this._featureName, Object? valueOrMatcher)
+ : _matcher = wrapMatcher(valueOrMatcher);
/// Override this to extract the interesting feature.
- Object? featureValueOf(actual) => actual;
+ Object? featureValueOf(dynamic actual) => actual;
@override
- bool matches(item, Map matchState) {
+ bool matches(Object? item, Map matchState) {
try {
var f = featureValueOf(item);
if (_matcher.matches(f, matchState)) return true;
@@ -68,8 +69,8 @@
description.add(_featureDescription).add(' ').addDescriptionOf(_matcher);
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
if (matchState['custom.exception'] != null) {
mismatchDescription
.add('threw ')
diff --git a/lib/src/description.dart b/lib/src/description.dart
index 6e83c49..090aada 100644
--- a/lib/src/description.dart
+++ b/lib/src/description.dart
@@ -42,7 +42,7 @@
/// escaping any embedded control characters; otherwise use its
/// toString() value and wrap it in angular "quotes".
@override
- Description addDescriptionOf(value) {
+ Description addDescriptionOf(Object? value) {
if (value is Matcher) {
value.describe(this);
} else {
diff --git a/lib/src/equals_matcher.dart b/lib/src/equals_matcher.dart
index c7b859a..5c5fdce 100644
--- a/lib/src/equals_matcher.dart
+++ b/lib/src/equals_matcher.dart
@@ -15,7 +15,7 @@
/// For [Iterable]s and [Map]s, this will recursively match the elements. To
/// handle cyclic structures a recursion depth [limit] can be provided. The
/// default limit is 100. [Set]s will be compared order-independently.
-Matcher equals(expected, [int limit = 100]) => expected is String
+Matcher equals(Object? expected, [int limit = 100]) => expected is String
? _StringEqualsMatcher(expected)
: _DeepMatcher(expected, limit);
@@ -267,8 +267,8 @@
description.addDescriptionOf(_expected);
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
var mismatch = matchState['mismatch'] as _Mismatch;
var describeProblem = mismatch.describeProblem;
if (mismatch.location.isNotEmpty) {
diff --git a/lib/src/feature_matcher.dart b/lib/src/feature_matcher.dart
index 8265f14..7a42d87 100644
--- a/lib/src/feature_matcher.dart
+++ b/lib/src/feature_matcher.dart
@@ -18,8 +18,8 @@
bool typedMatches(T item, Map matchState);
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
if (item is T) {
return describeTypedMismatch(
item, mismatchDescription, matchState, verbose);
diff --git a/lib/src/having_matcher.dart b/lib/src/having_matcher.dart
index fb8a0b2..4c19019 100644
--- a/lib/src/having_matcher.dart
+++ b/lib/src/having_matcher.dart
@@ -39,8 +39,8 @@
}
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
var matcher = matchState['matcher'] as Matcher;
matcher.describeMismatch(
item, mismatchDescription, matchState['state'] as Map, verbose);
@@ -56,9 +56,9 @@
}
class _FunctionMatcher<T> extends CustomMatcher {
- final dynamic Function(T value) _feature;
+ final Object? Function(T value) _feature;
- _FunctionMatcher(String name, this._feature, matcher)
+ _FunctionMatcher(String name, this._feature, Object? matcher)
: super('`$name`:', '`$name`', matcher);
@override
diff --git a/lib/src/interfaces.dart b/lib/src/interfaces.dart
index 1f39fa4..24527f7 100644
--- a/lib/src/interfaces.dart
+++ b/lib/src/interfaces.dart
@@ -18,7 +18,7 @@
Description add(String text);
/// This is used to add a meaningful description of a value.
- Description addDescriptionOf(value);
+ Description addDescriptionOf(Object? value);
/// This is used to add a description of an [Iterable] [list],
/// with appropriate [start] and [end] markers and inter-element [separator].
@@ -39,7 +39,7 @@
/// [item] is the actual value. [matchState] can be supplied
/// and may be used to add details about the mismatch that are too
/// costly to determine in [describeMismatch].
- bool matches(item, Map matchState);
+ bool matches(dynamic item, Map matchState);
/// Builds a textual description of the matcher.
Description describe(Description description);
@@ -54,7 +54,7 @@
/// A few matchers make use of the [verbose] flag to provide detailed
/// information that is not typically included but can be of help in
/// diagnosing failures, such as stack traces.
- Description describeMismatch(item, Description mismatchDescription,
+ Description describeMismatch(dynamic item, Description mismatchDescription,
Map matchState, bool verbose) =>
mismatchDescription;
}
diff --git a/lib/src/iterable_matchers.dart b/lib/src/iterable_matchers.dart
index 1e444a6..1ae9f17 100644
--- a/lib/src/iterable_matchers.dart
+++ b/lib/src/iterable_matchers.dart
@@ -9,8 +9,9 @@
import 'util.dart';
/// Returns a matcher which matches [Iterable]s in which all elements
-/// match the given [matcher].
-Matcher everyElement(matcher) => _EveryElement(wrapMatcher(matcher));
+/// match the given [valueOrMatcher].
+Matcher everyElement(Object? valueOrMatcher) =>
+ _EveryElement(wrapMatcher(valueOrMatcher));
class _EveryElement extends _IterableMatcher {
final Matcher _matcher;
@@ -62,8 +63,9 @@
}
/// Returns a matcher which matches [Iterable]s in which at least one
-/// element matches the given [matcher].
-Matcher anyElement(matcher) => _AnyElement(wrapMatcher(matcher));
+/// element matches the given [valueOrMatcher].
+Matcher anyElement(Object? valueOrMatcher) =>
+ _AnyElement(wrapMatcher(valueOrMatcher));
class _AnyElement extends _IterableMatcher {
final Matcher _matcher;
diff --git a/lib/src/map_matchers.dart b/lib/src/map_matchers.dart
index ed1738c..97be1ea 100644
--- a/lib/src/map_matchers.dart
+++ b/lib/src/map_matchers.dart
@@ -6,7 +6,7 @@
import 'util.dart';
/// Returns a matcher which matches maps containing the given [value].
-Matcher containsValue(value) => _ContainsValue(value);
+Matcher containsValue(Object? value) => _ContainsValue(value);
class _ContainsValue extends Matcher {
final Object? _value;
@@ -14,15 +14,17 @@
const _ContainsValue(this._value);
@override
- bool matches(item, Map matchState) => item.containsValue(_value);
+ bool matches(Object? item, Map matchState) =>
+ (item as dynamic).containsValue(_value);
@override
Description describe(Description description) =>
description.add('contains value ').addDescriptionOf(_value);
}
/// Returns a matcher which matches maps containing the key-value pair
-/// with [key] => [value].
-Matcher containsPair(key, value) => _ContainsMapping(key, wrapMatcher(value));
+/// with [key] => [valueOrMatcher].
+Matcher containsPair(Object? key, Object? valueOrMatcher) =>
+ _ContainsMapping(key, wrapMatcher(valueOrMatcher));
class _ContainsMapping extends Matcher {
final Object? _key;
@@ -31,8 +33,9 @@
const _ContainsMapping(this._key, this._valueMatcher);
@override
- bool matches(item, Map matchState) =>
- item.containsKey(_key) && _valueMatcher.matches(item[_key], matchState);
+ bool matches(Object? item, Map matchState) =>
+ (item as dynamic).containsKey(_key) &&
+ _valueMatcher.matches(item[_key], matchState);
@override
Description describe(Description description) {
@@ -44,9 +47,9 @@
}
@override
- Description describeMismatch(
- item, Description mismatchDescription, Map matchState, bool verbose) {
- if (!item.containsKey(_key)) {
+ Description describeMismatch(Object? item, Description mismatchDescription,
+ Map matchState, bool verbose) {
+ if (!(item as dynamic).containsKey(_key)) {
return mismatchDescription
.add(" doesn't contain key ")
.addDescriptionOf(_key);
diff --git a/lib/src/operator_matchers.dart b/lib/src/operator_matchers.dart
index 5f61781..e532fd3 100644
--- a/lib/src/operator_matchers.dart
+++ b/lib/src/operator_matchers.dart
@@ -5,8 +5,8 @@
import 'interfaces.dart';
import 'util.dart';
-/// This returns a matcher that inverts [matcher] to its logical negation.
-Matcher isNot(matcher) => _IsNot(wrapMatcher(matcher));
+/// Returns a matcher that inverts [valueOrMatcher] to its logical negation.
+Matcher isNot(Object? valueOrMatcher) => _IsNot(wrapMatcher(valueOrMatcher));
class _IsNot extends Matcher {
final Matcher _matcher;
@@ -27,7 +27,13 @@
/// Instead of passing the matchers separately they can be passed as a single
/// List argument. Any argument that is not a matcher is implicitly wrapped in a
/// Matcher to check for equality.
-Matcher allOf(arg0, [arg1, arg2, arg3, arg4, arg5, arg6]) {
+Matcher allOf(Object? arg0,
+ [Object? arg1,
+ Object? arg2,
+ Object? arg3,
+ Object? arg4,
+ Object? arg5,
+ Object? arg6]) {
return _AllOf(_wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
}
@@ -71,7 +77,13 @@
///
/// Any argument that is not a matcher is implicitly wrapped in a
/// Matcher to check for equality.
-Matcher anyOf(arg0, [arg1, arg2, arg3, arg4, arg5, arg6]) {
+Matcher anyOf(Object? arg0,
+ [Object? arg1,
+ Object? arg2,
+ Object? arg3,
+ Object? arg4,
+ Object? arg5,
+ Object? arg6]) {
return _AnyOf(_wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6));
}
@@ -95,7 +107,8 @@
description.addAll('(', ' or ', ')', _matchers);
}
-List<Matcher> _wrapArgs(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
+List<Matcher> _wrapArgs(Object? arg0, Object? arg1, Object? arg2, Object? arg3,
+ Object? arg4, Object? arg5, Object? arg6) {
Iterable args;
if (arg0 is List) {
if (arg1 != null ||
diff --git a/lib/src/order_matchers.dart b/lib/src/order_matchers.dart
index c492595..8741b93 100644
--- a/lib/src/order_matchers.dart
+++ b/lib/src/order_matchers.dart
@@ -6,22 +6,22 @@
/// Returns a matcher which matches if the match argument is greater
/// than the given [value].
-Matcher greaterThan(value) =>
+Matcher greaterThan(Object value) =>
_OrderingMatcher(value, false, false, true, 'a value greater than');
/// Returns a matcher which matches if the match argument is greater
/// than or equal to the given [value].
-Matcher greaterThanOrEqualTo(value) => _OrderingMatcher(
+Matcher greaterThanOrEqualTo(Object value) => _OrderingMatcher(
value, true, false, true, 'a value greater than or equal to');
/// Returns a matcher which matches if the match argument is less
/// than the given [value].
-Matcher lessThan(value) =>
+Matcher lessThan(Object value) =>
_OrderingMatcher(value, false, true, false, 'a value less than');
/// Returns a matcher which matches if the match argument is less
/// than or equal to the given [value].
-Matcher lessThanOrEqualTo(value) =>
+Matcher lessThanOrEqualTo(Object value) =>
_OrderingMatcher(value, true, true, false, 'a value less than or equal to');
/// A matcher which matches if the match argument is zero.
@@ -75,10 +75,10 @@
: _valueInDescription = valueInDescription;
@override
- bool matches(item, Map matchState) {
+ bool matches(Object? item, Map matchState) {
if (item == _value) {
return _equalValue;
- } else if (item < _value) {
+ } else if ((item as dynamic) < _value) {
return _lessThanValue;
} else if (item > _value) {
return _greaterThanValue;
diff --git a/lib/src/pretty_print.dart b/lib/src/pretty_print.dart
index 4ac50ee..152116c 100644
--- a/lib/src/pretty_print.dart
+++ b/lib/src/pretty_print.dart
@@ -15,8 +15,8 @@
///
/// If [maxItems] is passed, [Iterable]s and [Map]s will only print their first
/// [maxItems] members or key/value pairs, respectively.
-String prettyPrint(object, {int? maxLineLength, int? maxItems}) {
- String _prettyPrint(object, int indent, Set<Object?> seen, bool top) {
+String prettyPrint(Object? object, {int? maxLineLength, int? maxItems}) {
+ String _prettyPrint(Object? object, int indent, Set<Object?> seen, bool top) {
// If the object is a matcher, use its description.
if (object is Matcher) {
var description = StringDescription();
@@ -27,7 +27,7 @@
// Avoid looping infinitely on recursively-nested data structures.
if (seen.contains(object)) return '(recursive)';
seen = seen.union({object});
- String pp(child) => _prettyPrint(child, indent + 2, seen, false);
+ String pp(Object? child) => _prettyPrint(child, indent + 2, seen, false);
if (object is Iterable) {
// Print the type name for non-List iterables.
@@ -123,7 +123,7 @@
/// Returns the name of the type of [x] with fallbacks for core types with
/// private implementations.
-String _typeName(x) {
+String _typeName(Object x) {
if (x is Type) return 'Type';
if (x is Uri) return 'Uri';
if (x is Set) return 'Set';
diff --git a/lib/src/string_matchers.dart b/lib/src/string_matchers.dart
index 868d2dc..9484a9c 100644
--- a/lib/src/string_matchers.dart
+++ b/lib/src/string_matchers.dart
@@ -138,12 +138,12 @@
///
/// [re] can be a [RegExp] instance or a [String]; in the latter case it will be
/// used to create a RegExp instance.
-Matcher matches(re) => _MatchesRegExp(re);
+Matcher matches(Pattern re) => _MatchesRegExp(re);
class _MatchesRegExp extends FeatureMatcher<String> {
final RegExp _regexp;
- _MatchesRegExp(re)
+ _MatchesRegExp(Pattern re)
: _regexp = (re is String)
? RegExp(re)
: (re is RegExp)
diff --git a/lib/src/util.dart b/lib/src/util.dart
index c9d3d00..95451b0 100644
--- a/lib/src/util.dart
+++ b/lib/src/util.dart
@@ -34,19 +34,19 @@
/// If the argument is already a matcher this does nothing,
/// else if the argument is a function, it generates a predicate
/// function matcher, else it generates an equals matcher.
-Matcher wrapMatcher(x) {
- if (x is Matcher) {
- return x;
- } else if (x is bool Function(Object?)) {
- // x is already a predicate that can handle anything
- return predicate(x);
- } else if (x is bool Function(Never)) {
- // x is a unary predicate, but expects a specific type
+Matcher wrapMatcher(Object? valueOrMatcher) {
+ if (valueOrMatcher is Matcher) {
+ return valueOrMatcher;
+ } else if (valueOrMatcher is bool Function(Object?)) {
+ // already a predicate that can handle anything
+ return predicate(valueOrMatcher);
+ } else if (valueOrMatcher is bool Function(Never)) {
+ // unary predicate, but expects a specific type
// so wrap it.
// ignore: unnecessary_lambdas
- return predicate((a) => (x as dynamic)(a));
+ return predicate((a) => (valueOrMatcher as dynamic)(a));
} else {
- return equals(x);
+ return equals(valueOrMatcher);
}
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 5667861..7de79ef 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: matcher
-version: 0.12.10
+version: 0.12.11-dev
description: >-
Support for specifying test expectations via an extensible Matcher class.
@@ -17,3 +17,6 @@
test: any
test_api: any
test_core: any
+
+dependency_overrides:
+ test_api: any
diff --git a/test/custom_matcher_test.dart b/test/custom_matcher_test.dart
index 65f1520..d310d22 100644
--- a/test/custom_matcher_test.dart
+++ b/test/custom_matcher_test.dart
@@ -14,9 +14,10 @@
}
class _HasPrice extends CustomMatcher {
- _HasPrice(matcher) : super('Widget with a price that is', 'price', matcher);
+ _HasPrice(Object? matcher)
+ : super('Widget with a price that is', 'price', matcher);
@override
- Object? featureValueOf(actual) => (actual as Widget).price;
+ Object? featureValueOf(Object? actual) => (actual as Widget).price;
}
void main() {
diff --git a/test/having_test.dart b/test/having_test.dart
index 577d224..a9516d4 100644
--- a/test/having_test.dart
+++ b/test/having_test.dart
@@ -108,7 +108,7 @@
.having((e) => e.start, 'start', isNull)
.having((e) => e.end, 'end', isNull);
-Matcher _hasPrice(matcher) =>
+Matcher _hasPrice(Object matcher) =>
const TypeMatcher<Widget>().having((e) => e.price, 'price', matcher);
Matcher _badCustomMatcher() => const TypeMatcher<Widget>()
diff --git a/test/test_utils.dart b/test/test_utils.dart
index 9f58d0d..89a61ac 100644
--- a/test/test_utils.dart
+++ b/test/test_utils.dart
@@ -4,7 +4,7 @@
import 'package:test/test.dart';
-void shouldFail(value, Matcher matcher, expected) {
+void shouldFail(Object? value, Matcher matcher, Object? expected) {
var failed = false;
try {
expect(value, matcher);
@@ -23,7 +23,7 @@
expect(failed, isTrue, reason: 'Expected to fail.');
}
-void shouldPass(value, Matcher matcher) {
+void shouldPass(Object? value, Matcher matcher) {
expect(value, matcher);
}