Make casts from dynamic explicit in generated getters.
Bump to 5.0.0-nullsafety.3
PiperOrigin-RevId: 351670376
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89f3b61..8e2af95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 5.0.0-nullsafety.3
+
+* Improve static analysis of generated code.
+* Make implicit casts from dynamic in getters explicit.
+
## 5.0.0-nullsafety.2
* Fix issue with generated code which references a class declared in a part
diff --git a/lib/src/builder.dart b/lib/src/builder.dart
index 06d590b..d0a2967 100644
--- a/lib/src/builder.dart
+++ b/lib/src/builder.dart
@@ -1114,10 +1114,16 @@
refer('#${getter.displayName}'),
]);
final noSuchMethodArgs = [invocation, _dummyValue(getter.returnType)];
- final returnNoSuchMethod =
+ var superNoSuchMethod =
refer('super').property('noSuchMethod').call(noSuchMethodArgs);
+ if (!getter.returnType.isVoid && !getter.returnType.isDynamic) {
+ superNoSuchMethod =
+ superNoSuchMethod.asA(_typeReference(getter.returnType));
+ }
- builder.body = returnNoSuchMethod.code;
+ builder
+ ..lambda = true
+ ..body = superNoSuchMethod.code;
}
/// Build a setter which overrides [setter], widening the single parameter
diff --git a/pubspec.yaml b/pubspec.yaml
index 4d45cd9..3edb762 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: mockito
-version: 5.0.0-nullsafety.2
+version: 5.0.0-nullsafety.3
description: A mock framework inspired by Mockito.
homepage: https://github.com/dart-lang/mockito
diff --git a/test/builder/auto_mocks_test.dart b/test/builder/auto_mocks_test.dart
index c37a1d9..bfc9953 100644
--- a/test/builder/auto_mocks_test.dart
+++ b/test/builder/auto_mocks_test.dart
@@ -1385,7 +1385,7 @@
}
'''),
_containsAllOf(
- 'int get m => super.noSuchMethod(Invocation.getter(#m), 0);'),
+ 'int get m => (super.noSuchMethod(Invocation.getter(#m), 0)'),
);
});
@@ -1407,7 +1407,7 @@
class Foo extends FooBase {}
'''),
_containsAllOf(
- 'int get m => super.noSuchMethod(Invocation.getter(#m), 0);'),
+ 'int get m => (super.noSuchMethod(Invocation.getter(#m), 0)'),
);
});
@@ -1453,7 +1453,7 @@
}
'''),
_containsAllOf(
- 'int get m => super.noSuchMethod(Invocation.getter(#m), 0);',
+ 'int get m => (super.noSuchMethod(Invocation.getter(#m), 0)',
'set m(int? _m) => super.noSuchMethod(Invocation.setter(#m, [_m]));'),
);
});
@@ -1467,7 +1467,7 @@
class Foo extends FooBase {}
'''),
_containsAllOf(
- 'int get m => super.noSuchMethod(Invocation.getter(#m), 0);',
+ 'int get m => (super.noSuchMethod(Invocation.getter(#m), 0)',
'set m(int? _m) => super.noSuchMethod(Invocation.setter(#m, [_m]));'),
);
});
@@ -1481,7 +1481,7 @@
}
'''),
_containsAllOf(
- 'int get m => super.noSuchMethod(Invocation.getter(#m), 0);'),
+ 'int get m => (super.noSuchMethod(Invocation.getter(#m), 0)'),
);
});