Re-enable missing_return (#20844)
diff --git a/analysis_options.yaml b/analysis_options.yaml
index b797439..5b91937 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -26,9 +26,8 @@
errors:
# treat missing required parameters as a warning (not a hint)
missing_required_param: warning
- # TODO(devoncarew): https://github.com/flutter/flutter/issues/20114
# treat missing returns as a warning (not a hint)
- missing_return: ignore
+ missing_return: warning
# allow having TODOs in the code
todo: ignore
exclude:
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index 0946081..3fd6427 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -600,6 +600,7 @@
}
return ' $name: uses \'package:test\' directly';
}
+ return null;
})
.where((String line) => line != null)
.toList()
diff --git a/dev/devicelab/lib/tasks/microbenchmarks.dart b/dev/devicelab/lib/tasks/microbenchmarks.dart
index b66b4d2..54d98fb 100644
--- a/dev/devicelab/lib/tasks/microbenchmarks.dart
+++ b/dev/devicelab/lib/tasks/microbenchmarks.dart
@@ -141,7 +141,7 @@
jsonBuf.writeln(line.substring(line.indexOf(jsonPrefix) + jsonPrefix.length));
});
- process.exitCode.then<int>((int code) async {
+ process.exitCode.then<void>((int code) async {
await Future.wait<void>(<Future<void>>[
stdoutSub.cancel(),
stderrSub.cancel(),
diff --git a/dev/tools/gen_date_localizations.dart b/dev/tools/gen_date_localizations.dart
index e70d923..0d93333 100644
--- a/dev/tools/gen_date_localizations.dart
+++ b/dev/tools/gen_date_localizations.dart
@@ -58,6 +58,7 @@
(String line) => line.startsWith('intl:'),
orElse: () {
exitWithError('intl dependency not found in ${dotPackagesFile.path}');
+ return null; // unreachable
},
)
.split(':')
diff --git a/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart b/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart
index 86b6588..4554480 100644
--- a/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart
+++ b/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart
@@ -71,6 +71,7 @@
],
),
tabBuilder: (BuildContext context, int index) {
+ assert(index >= 0 && index <= 2);
switch (index) {
case 0:
return new CupertinoTabView(
@@ -95,8 +96,8 @@
defaultTitle: 'Account',
);
break;
- default:
}
+ return null;
},
),
),
diff --git a/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart b/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart
index e394760..e6d0dd9 100644
--- a/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart
+++ b/examples/flutter_gallery/lib/demo/material/scrollable_tabs_demo.dart
@@ -155,7 +155,8 @@
controller: _controller,
isScrollable: true,
indicator: getIndicator(),
- tabs: _allPages.map((_Page page) {
+ tabs: _allPages.map<Tab>((_Page page) {
+ assert(_demoStyle != null);
switch (_demoStyle) {
case TabsDemoStyle.iconsAndText:
return new Tab(text: page.text, icon: new Icon(page.icon));
@@ -164,6 +165,7 @@
case TabsDemoStyle.textOnly:
return new Tab(text: page.text);
}
+ return null;
}).toList(),
),
),
diff --git a/examples/flutter_gallery/test_driver/transitions_perf_test.dart b/examples/flutter_gallery/test_driver/transitions_perf_test.dart
index a656406..8e534ef 100644
--- a/examples/flutter_gallery/test_driver/transitions_perf_test.dart
+++ b/examples/flutter_gallery/test_driver/transitions_perf_test.dart
@@ -156,7 +156,7 @@
await driver.tap(demoItem); // Launch the demo
if (kUnsynchronizedDemos.contains(demo)) {
- await driver.runUnsynchronized<Future<Null>>(() async {
+ await driver.runUnsynchronized<void>(() async {
await driver.tap(find.byTooltip('Back'));
});
} else {
diff --git a/examples/layers/test/sector_test.dart b/examples/layers/test/sector_test.dart
index 693898f..3903e9d 100644
--- a/examples/layers/test/sector_test.dart
+++ b/examples/layers/test/sector_test.dart
@@ -12,7 +12,7 @@
expect(const SectorConstraints().isTight, isFalse);
});
- testWidgets('Sector Sixes', (WidgetTester tester) {
- tester.pumpWidget(new SectorApp());
+ testWidgets('Sector Sixes', (WidgetTester tester) async {
+ await tester.pumpWidget(new SectorApp());
});
}
diff --git a/examples/layers/test/smoketests/lib/main_test.dart b/examples/layers/test/smoketests/lib/main_test.dart
index 5b859b1..c0ed8f1 100644
--- a/examples/layers/test/smoketests/lib/main_test.dart
+++ b/examples/layers/test/smoketests/lib/main_test.dart
@@ -6,7 +6,7 @@
import 'package:flutter_test/flutter_test.dart';
void main() {
- testWidgets('layers smoketest for lib/main.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for lib/main.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/services/isolate_test.dart b/examples/layers/test/smoketests/services/isolate_test.dart
index 27b98a8..789c528 100644
--- a/examples/layers/test/smoketests/services/isolate_test.dart
+++ b/examples/layers/test/smoketests/services/isolate_test.dart
@@ -7,7 +7,7 @@
import '../../../services/isolate.dart' as demo;
void main() {
- testWidgets('layers smoketest for services/isolate.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for services/isolate.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/services/lifecycle_test.dart b/examples/layers/test/smoketests/services/lifecycle_test.dart
index c8290b0..5d1b7c3 100644
--- a/examples/layers/test/smoketests/services/lifecycle_test.dart
+++ b/examples/layers/test/smoketests/services/lifecycle_test.dart
@@ -7,7 +7,7 @@
import '../../../services/lifecycle.dart' as demo;
void main() {
- testWidgets('layers smoketest for services/lifecycle.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for services/lifecycle.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/custom_render_box_test.dart b/examples/layers/test/smoketests/widgets/custom_render_box_test.dart
index 0e72437..1530bab 100644
--- a/examples/layers/test/smoketests/widgets/custom_render_box_test.dart
+++ b/examples/layers/test/smoketests/widgets/custom_render_box_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/custom_render_box.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/custom_render_box.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/custom_render_box.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/gestures_test.dart b/examples/layers/test/smoketests/widgets/gestures_test.dart
index ed6dc33..92327cc 100644
--- a/examples/layers/test/smoketests/widgets/gestures_test.dart
+++ b/examples/layers/test/smoketests/widgets/gestures_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/gestures.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/gestures.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/gestures.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/hello_world_test.dart b/examples/layers/test/smoketests/widgets/hello_world_test.dart
index 031c01d..581d79b 100644
--- a/examples/layers/test/smoketests/widgets/hello_world_test.dart
+++ b/examples/layers/test/smoketests/widgets/hello_world_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/hello_world.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/hello_world.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/hello_world.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/media_query_test.dart b/examples/layers/test/smoketests/widgets/media_query_test.dart
index fa70edf..d62c1a0 100644
--- a/examples/layers/test/smoketests/widgets/media_query_test.dart
+++ b/examples/layers/test/smoketests/widgets/media_query_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/media_query.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/media_query.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/media_query.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/sectors_test.dart b/examples/layers/test/smoketests/widgets/sectors_test.dart
index a5f596a..15eab9a 100644
--- a/examples/layers/test/smoketests/widgets/sectors_test.dart
+++ b/examples/layers/test/smoketests/widgets/sectors_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/sectors.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/sectors.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/sectors.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/spinning_square_test.dart b/examples/layers/test/smoketests/widgets/spinning_square_test.dart
index 01588ef..80beb76 100644
--- a/examples/layers/test/smoketests/widgets/spinning_square_test.dart
+++ b/examples/layers/test/smoketests/widgets/spinning_square_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/spinning_square.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/spinning_square.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/spinning_square.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/examples/layers/test/smoketests/widgets/styled_text_test.dart b/examples/layers/test/smoketests/widgets/styled_text_test.dart
index ed29943..874880f 100644
--- a/examples/layers/test/smoketests/widgets/styled_text_test.dart
+++ b/examples/layers/test/smoketests/widgets/styled_text_test.dart
@@ -7,7 +7,7 @@
import '../../../widgets/styled_text.dart' as demo;
void main() {
- testWidgets('layers smoketest for widgets/styled_text.dart', (WidgetTester tester) {
+ testWidgets('layers smoketest for widgets/styled_text.dart', (WidgetTester tester) async {
demo.main();
});
}
diff --git a/packages/flutter/lib/analysis_options_user.yaml b/packages/flutter/lib/analysis_options_user.yaml
index bb33458..e7c5d8b 100644
--- a/packages/flutter/lib/analysis_options_user.yaml
+++ b/packages/flutter/lib/analysis_options_user.yaml
@@ -26,9 +26,6 @@
errors:
# treat missing required parameters as a warning (not a hint)
missing_required_param: warning
- # treat missing returns as a warning (not a hint)
- # TODO(ianh): https://github.com/flutter/flutter/issues/20114
- missing_return: ignore
# allow having TODOs in the code
todo: ignore
diff --git a/packages/flutter/lib/src/services/platform_channel.dart b/packages/flutter/lib/src/services/platform_channel.dart
index 3dcffd9..dee5be5 100644
--- a/packages/flutter/lib/src/services/platform_channel.dart
+++ b/packages/flutter/lib/src/services/platform_channel.dart
@@ -313,6 +313,11 @@
///
/// This is intended for testing. Method calls intercepted in this manner are
/// not sent to platform plugins.
+ ///
+ /// The provided `handler` must return a `Future` that completes with the
+ /// return value of the call. The value will be encoded using
+ /// [MethodCodec.encodeSuccessEnvelope], to act as if platform plugin had
+ /// returned that value.
void setMockMethodCallHandler(Future<dynamic> handler(MethodCall call)) {
BinaryMessages.setMockMessageHandler(
name,
@@ -413,6 +418,7 @@
controller.addError(e);
}
}
+ return null;
});
try {
await methodChannel.invokeMethod('listen', arguments);
diff --git a/packages/flutter/lib/src/services/platform_views.dart b/packages/flutter/lib/src/services/platform_views.dart
index 97f00b4..f971458 100644
--- a/packages/flutter/lib/src/services/platform_views.dart
+++ b/packages/flutter/lib/src/services/platform_views.dart
@@ -494,14 +494,14 @@
}
static int _getAndroidDirection(TextDirection direction) {
+ assert(direction != null);
switch (direction) {
case TextDirection.ltr:
return kAndroidLayoutDirectionLtr;
case TextDirection.rtl:
return kAndroidLayoutDirectionRtl;
- default:
- throw new UnsupportedError('Direction $direction is not supported');
}
+ return null;
}
/// Sends an Android [MotionEvent](https://developer.android.com/reference/android/view/MotionEvent)
diff --git a/packages/flutter/lib/src/widgets/async.dart b/packages/flutter/lib/src/widgets/async.dart
index 3553bc2..455241b 100644
--- a/packages/flutter/lib/src/widgets/async.dart
+++ b/packages/flutter/lib/src/widgets/async.dart
@@ -359,9 +359,11 @@
/// case ConnectionState.active: return new Text('\$${snapshot.data}');
/// case ConnectionState.done: return new Text('\$${snapshot.data} (closed)');
/// }
+/// return null; // unreachable
/// },
/// )
/// ```
+// TODO(ianh): remove unreachable code above once https://github.com/dart-lang/linter/issues/1141 is fixed
class StreamBuilder<T> extends StreamBuilderBase<T, AsyncSnapshot<T>> {
/// Creates a new [StreamBuilder] that builds itself based on the latest
/// snapshot of interaction with the specified [stream] and whose build
@@ -491,9 +493,11 @@
/// return new Text('Error: ${snapshot.error}');
/// return new Text('Result: ${snapshot.data}');
/// }
+/// return null; // unreachable
/// },
/// )
/// ```
+// TODO(ianh): remove unreachable code above once https://github.com/dart-lang/linter/issues/1141 is fixed
class FutureBuilder<T> extends StatefulWidget {
/// Creates a widget that builds itself based on the latest snapshot of
/// interaction with a [Future].
diff --git a/packages/flutter/lib/src/widgets/heroes.dart b/packages/flutter/lib/src/widgets/heroes.dart
index d936656..5e674db 100644
--- a/packages/flutter/lib/src/widgets/heroes.dart
+++ b/packages/flutter/lib/src/widgets/heroes.dart
@@ -321,12 +321,16 @@
assert(!_aborted);
assert(() {
final Animation<double> initial = initialManifest.animation;
- switch (initialManifest.type) {
+ assert(initial != null);
+ final _HeroFlightType type = initialManifest.type;
+ assert(type != null);
+ switch (type) {
case _HeroFlightType.pop:
return initial.value == 1.0 && initial.status == AnimationStatus.reverse;
case _HeroFlightType.push:
return initial.value == 0.0 && initial.status == AnimationStatus.forward;
}
+ return null;
}());
manifest = initialManifest;
diff --git a/packages/flutter/test/cupertino/tab_test.dart b/packages/flutter/test/cupertino/tab_test.dart
index c162d0d..0e8b675 100644
--- a/packages/flutter/test/cupertino/tab_test.dart
+++ b/packages/flutter/test/cupertino/tab_test.dart
@@ -71,6 +71,7 @@
}
);
}
+ return null;
},
),
),
@@ -86,6 +87,7 @@
home: new CupertinoTabView(
onUnknownRoute: (RouteSettings settings) {
unknownForRouteCalled = settings.name;
+ return null;
},
),
),
diff --git a/packages/flutter/test/gestures/debug_test.dart b/packages/flutter/test/gestures/debug_test.dart
index 452283d..2f0ab53 100644
--- a/packages/flutter/test/gestures/debug_test.dart
+++ b/packages/flutter/test/gestures/debug_test.dart
@@ -7,7 +7,7 @@
import 'package:flutter_test/flutter_test.dart';
void main() {
- testWidgets('debugPrintGestureArenaDiagnostics', (WidgetTester tester) {
+ testWidgets('debugPrintGestureArenaDiagnostics', (WidgetTester tester) async {
PointerEvent event;
debugPrintGestureArenaDiagnostics = true;
final DebugPrintCallback oldCallback = debugPrint;
@@ -53,7 +53,7 @@
debugPrint = oldCallback;
});
- testWidgets('debugPrintRecognizerCallbacksTrace', (WidgetTester tester) {
+ testWidgets('debugPrintRecognizerCallbacksTrace', (WidgetTester tester) async {
PointerEvent event;
debugPrintRecognizerCallbacksTrace = true;
final DebugPrintCallback oldCallback = debugPrint;
@@ -95,7 +95,7 @@
debugPrint = oldCallback;
});
- testWidgets('debugPrintGestureArenaDiagnostics and debugPrintRecognizerCallbacksTrace', (WidgetTester tester) {
+ testWidgets('debugPrintGestureArenaDiagnostics and debugPrintRecognizerCallbacksTrace', (WidgetTester tester) async {
PointerEvent event;
debugPrintGestureArenaDiagnostics = true;
debugPrintRecognizerCallbacksTrace = true;
diff --git a/packages/flutter/test/material/app_test.dart b/packages/flutter/test/material/app_test.dart
index b611d2d..5307e25 100644
--- a/packages/flutter/test/material/app_test.dart
+++ b/packages/flutter/test/material/app_test.dart
@@ -368,9 +368,11 @@
new MaterialApp(
onGenerateRoute: (RouteSettings settings) {
log.add('onGenerateRoute ${settings.name}');
+ return null;
},
onUnknownRoute: (RouteSettings settings) {
log.add('onUnknownRoute ${settings.name}');
+ return null;
},
)
);
diff --git a/packages/flutter/test/material/checkbox_test.dart b/packages/flutter/test/material/checkbox_test.dart
index 27ccfd5..4fea49f 100644
--- a/packages/flutter/test/material/checkbox_test.dart
+++ b/packages/flutter/test/material/checkbox_test.dart
@@ -250,7 +250,7 @@
testWidgets('has semantic events', (WidgetTester tester) async {
dynamic semanticEvent;
bool checkboxValue = false;
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
semanticEvent = message;
});
final SemanticsTester semanticsTester = new SemanticsTester(tester);
diff --git a/packages/flutter/test/material/feedback_test.dart b/packages/flutter/test/material/feedback_test.dart
index f9926cd..d94cfc0 100644
--- a/packages/flutter/test/material/feedback_test.dart
+++ b/packages/flutter/test/material/feedback_test.dart
@@ -29,7 +29,7 @@
setUp(() {
semanticEvents = <Map<String, Object>>[];
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
final Map<dynamic, dynamic> typedMessage = message;
semanticEvents.add(typedMessage.cast<String, Object>());
});
diff --git a/packages/flutter/test/material/feedback_tester.dart b/packages/flutter/test/material/feedback_tester.dart
index 6db1743..6397f03 100644
--- a/packages/flutter/test/material/feedback_tester.dart
+++ b/packages/flutter/test/material/feedback_tester.dart
@@ -10,7 +10,7 @@
/// cannot be used in combination with other classes that do the same.
class FeedbackTester {
FeedbackTester() {
- SystemChannels.platform.setMockMethodCallHandler((MethodCall methodCall) {
+ SystemChannels.platform.setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'HapticFeedback.vibrate')
_hapticCount++;
if (methodCall.method == 'SystemSound.play' &&
diff --git a/packages/flutter/test/material/radio_test.dart b/packages/flutter/test/material/radio_test.dart
index 8347437..81619fe 100644
--- a/packages/flutter/test/material/radio_test.dart
+++ b/packages/flutter/test/material/radio_test.dart
@@ -216,7 +216,7 @@
final Key key = new UniqueKey();
dynamic semanticEvent;
int radioValue = 2;
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
semanticEvent = message;
});
diff --git a/packages/flutter/test/material/refresh_indicator_test.dart b/packages/flutter/test/material/refresh_indicator_test.dart
index fe59537..002c800 100644
--- a/packages/flutter/test/material/refresh_indicator_test.dart
+++ b/packages/flutter/test/material/refresh_indicator_test.dart
@@ -358,7 +358,7 @@
home: new RefreshIndicator(
onRefresh: () {
refreshCalled = true;
- // Missing a returned Future value here.
+ return null; // Missing a returned Future value here, should cause framework to throw.
},
child: new ListView(
physics: const AlwaysScrollableScrollPhysics(),
diff --git a/packages/flutter/test/material/switch_test.dart b/packages/flutter/test/material/switch_test.dart
index a498960..c2421ff 100644
--- a/packages/flutter/test/material/switch_test.dart
+++ b/packages/flutter/test/material/switch_test.dart
@@ -274,7 +274,7 @@
testWidgets('switch has semantic events', (WidgetTester tester) async {
dynamic semanticEvent;
bool value = false;
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
semanticEvent = message;
});
final SemanticsTester semanticsTester = new SemanticsTester(tester);
@@ -318,7 +318,7 @@
testWidgets('switch sends semantic events from parent if fully merged', (WidgetTester tester) async {
dynamic semanticEvent;
bool value = false;
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
semanticEvent = message;
});
final SemanticsTester semanticsTester = new SemanticsTester(tester);
diff --git a/packages/flutter/test/material/tooltip_test.dart b/packages/flutter/test/material/tooltip_test.dart
index bfaf395..097eaba 100644
--- a/packages/flutter/test/material/tooltip_test.dart
+++ b/packages/flutter/test/material/tooltip_test.dart
@@ -679,7 +679,7 @@
testWidgets('has semantic events', (WidgetTester tester) async {
final List<dynamic> semanticEvents = <dynamic>[];
- SystemChannels.accessibility.setMockMessageHandler((dynamic message) {
+ SystemChannels.accessibility.setMockMessageHandler((dynamic message) async {
semanticEvents.add(message);
});
final SemanticsTester semantics = new SemanticsTester(tester);
diff --git a/packages/flutter/test/services/platform_messages_test.dart b/packages/flutter/test/services/platform_messages_test.dart
index 278bcb7..969de60 100644
--- a/packages/flutter/test/services/platform_messages_test.dart
+++ b/packages/flutter/test/services/platform_messages_test.dart
@@ -13,6 +13,7 @@
BinaryMessages.setMockMessageHandler('test1', (ByteData message) async {
log.add(message);
+ return null;
});
final ByteData message = new ByteData(2)..setUint16(0, 0xABCD);
diff --git a/packages/flutter/test/widgets/dispose_ancestor_lookup_test.dart b/packages/flutter/test/widgets/dispose_ancestor_lookup_test.dart
index e894a43..91e16cb 100644
--- a/packages/flutter/test/widgets/dispose_ancestor_lookup_test.dart
+++ b/packages/flutter/test/widgets/dispose_ancestor_lookup_test.dart
@@ -98,7 +98,7 @@
await tester.pumpWidget(
new TestWidget((BuildContext context) {
disposeCalled = true;
- context.visitAncestorElements((Element element) { });
+ context.visitAncestorElements((Element element) => true);
}),
);
await tester.pumpWidget(new Container());
diff --git a/packages/flutter/test/widgets/editable_text_test.dart b/packages/flutter/test/widgets/editable_text_test.dart
index ccf876e..ae16a9e 100644
--- a/packages/flutter/test/widgets/editable_text_test.dart
+++ b/packages/flutter/test/widgets/editable_text_test.dart
@@ -788,7 +788,7 @@
// Verify TextInput.setEditingState is fired with updated text when controller is replaced.
final List<MethodCall> log = <MethodCall>[];
- SystemChannels.textInput.setMockMethodCallHandler((MethodCall methodCall) {
+ SystemChannels.textInput.setMockMethodCallHandler((MethodCall methodCall) async {
log.add(methodCall);
});
setState(() {
diff --git a/packages/flutter/test/widgets/list_wheel_scroll_view_test.dart b/packages/flutter/test/widgets/list_wheel_scroll_view_test.dart
index 2eb88f4..013ebb1 100644
--- a/packages/flutter/test/widgets/list_wheel_scroll_view_test.dart
+++ b/packages/flutter/test/widgets/list_wheel_scroll_view_test.dart
@@ -1027,9 +1027,9 @@
textDirection: TextDirection.ltr,
child: new NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification notification) {
- if (notification is ScrollUpdateNotification) {
+ if (notification is ScrollUpdateNotification)
scrolledPositions.add(notification.metrics.pixels);
- }
+ return false;
},
child: new ListWheelScrollView(
controller: controller,
@@ -1078,9 +1078,9 @@
textDirection: TextDirection.ltr,
child: new NotificationListener<ScrollNotification>(
onNotification: (ScrollNotification notification) {
- if (notification is ScrollUpdateNotification) {
+ if (notification is ScrollUpdateNotification)
scrolledPositions.add(notification.metrics.pixels);
- }
+ return false;
},
child: new ListWheelScrollView(
controller: controller,
diff --git a/packages/flutter/test/widgets/navigator_test.dart b/packages/flutter/test/widgets/navigator_test.dart
index af639ad..627ab36 100644
--- a/packages/flutter/test/widgets/navigator_test.dart
+++ b/packages/flutter/test/widgets/navigator_test.dart
@@ -232,6 +232,7 @@
},
);
}
+ return null;
},
),
),
diff --git a/packages/flutter/test/widgets/notification_test.dart b/packages/flutter/test/widgets/notification_test.dart
index 1cb8247..b3e7ef0 100644
--- a/packages/flutter/test/widgets/notification_test.dart
+++ b/packages/flutter/test/widgets/notification_test.dart
@@ -66,9 +66,10 @@
await tester.pumpWidget(new NotificationListener<MyNotification>(
onNotification: (MyNotification value) {
log.add(value.runtimeType);
+ return false;
},
child: new NotificationListener<MyNotification>(
- onNotification: (MyNotification value) { },
+ onNotification: (MyNotification value) => false,
child: new Container(key: key),
),
));
diff --git a/packages/flutter/test/widgets/page_forward_transitions_test.dart b/packages/flutter/test/widgets/page_forward_transitions_test.dart
index d9d4ac5..2138073 100644
--- a/packages/flutter/test/widgets/page_forward_transitions_test.dart
+++ b/packages/flutter/test/widgets/page_forward_transitions_test.dart
@@ -108,6 +108,7 @@
case '/3': return new TestRoute<Null>(settings: settings, child: const Text('F'));
case '/4': return new TestRoute<Null>(settings: settings, child: const Text('G'));
}
+ return null;
}
)
);
@@ -192,6 +193,7 @@
case '/': return new TestRoute<Null>(settings: settings, child: const Text('A'));
case '/1': return new TestRoute<Null>(settings: settings, barrierColor: const Color(0xFFFFFF00), child: const Text('B'));
}
+ return null;
}
)
);
diff --git a/packages/flutter/test/widgets/text_formatter_test.dart b/packages/flutter/test/widgets/text_formatter_test.dart
index 6eccc2a..5c51a7b 100644
--- a/packages/flutter/test/widgets/text_formatter_test.dart
+++ b/packages/flutter/test/widgets/text_formatter_test.dart
@@ -21,6 +21,7 @@
(TextEditingValue oldValue, TextEditingValue newValue) {
calledOldValue = oldValue;
calledNewValue = newValue;
+ return null;
}
);
diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart
index be81f39..ab2b5ec 100644
--- a/packages/flutter_driver/test/flutter_driver_test.dart
+++ b/packages/flutter_driver/test/flutter_driver_test.dart
@@ -281,7 +281,7 @@
});
test('without clearing timeline', () async {
- final Timeline timeline = await driver.traceAction(() {
+ final Timeline timeline = await driver.traceAction(() async {
log.add('action');
}, retainPriorEvents: true);
@@ -295,7 +295,7 @@
});
test('with clearing timeline', () async {
- final Timeline timeline = await driver.traceAction(() {
+ final Timeline timeline = await driver.traceAction(() async {
log.add('action');
});
@@ -338,7 +338,7 @@
};
});
- final Timeline timeline = await driver.traceAction(() {
+ final Timeline timeline = await driver.traceAction(() async {
actionCalled = true;
},
streams: const <TimelineStream>[
diff --git a/packages/flutter_driver/test/src/extension_test.dart b/packages/flutter_driver/test/src/extension_test.dart
index 254333c..6fe4233 100644
--- a/packages/flutter_driver/test/src/extension_test.dart
+++ b/packages/flutter_driver/test/src/extension_test.dart
@@ -74,7 +74,7 @@
group('getSemanticsId', () {
FlutterDriverExtension extension;
setUp(() {
- extension = new FlutterDriverExtension((String arg) async {}, true);
+ extension = new FlutterDriverExtension((String arg) async => '', true);
});
testWidgets('works when semantics are enabled', (WidgetTester tester) async {
diff --git a/packages/flutter_test/lib/src/matchers.dart b/packages/flutter_test/lib/src/matchers.dart
index 02b5ba7..178f39e 100644
--- a/packages/flutter_test/lib/src/matchers.dart
+++ b/packages/flutter_test/lib/src/matchers.dart
@@ -1531,13 +1531,13 @@
return 'Failed to generate screenshot from engine within the 10,000ms timeout.';
if (autoUpdateGoldenFiles) {
await goldenFileComparator.update(key, bytes.buffer.asUint8List());
- } else {
- try {
- final bool success = await goldenFileComparator.compare(bytes.buffer.asUint8List(), key);
- return success ? null : 'does not match';
- } on TestFailure catch (ex) {
- return ex.message;
- }
+ return null;
+ }
+ try {
+ final bool success = await goldenFileComparator.compare(bytes.buffer.asUint8List(), key);
+ return success ? null : 'does not match';
+ } on TestFailure catch (ex) {
+ return ex.message;
}
}, additionalTime: const Duration(seconds: 11));
}
diff --git a/packages/flutter_test/test/widget_tester_test.dart b/packages/flutter_test/test/widget_tester_test.dart
index eb4b613..da6c97c 100644
--- a/packages/flutter_test/test/widget_tester_test.dart
+++ b/packages/flutter_test/test/widget_tester_test.dart
@@ -500,7 +500,7 @@
final Object key = new Object();
await runZoned(() {
expect(Zone.current[key], 'abczed');
- return tester.runAsync<String>(() async {
+ return tester.runAsync<void>(() async {
expect(Zone.current[key], 'abczed');
});
}, zoneValues: <dynamic, dynamic>{
diff --git a/packages/flutter_tools/test/compile_test.dart b/packages/flutter_tools/test/compile_test.dart
index dac6ddf..096c797 100644
--- a/packages/flutter_tools/test/compile_test.dart
+++ b/packages/flutter_tools/test/compile_test.dart
@@ -369,7 +369,7 @@
String mockCompilerOutput) async {
// Put content into the output stream after generator.recompile gets
// going few lines below, resets completer.
- new Future<List<int>>(() {
+ scheduleMicrotask(() {
streamController.add(utf8.encode(mockCompilerOutput));
});
final CompilerOutput output = await generator.recompile(null /* mainPath */, <String>['/path/to/main.dart']);
diff --git a/packages/flutter_tools/test/runner/flutter_command_test.dart b/packages/flutter_tools/test/runner/flutter_command_test.dart
index 99562fc..f5c5b08 100644
--- a/packages/flutter_tools/test/runner/flutter_command_test.dart
+++ b/packages/flutter_tools/test/runner/flutter_command_test.dart
@@ -125,8 +125,12 @@
// Crash if called a third time which is unexpected.
mockTimes = <int>[1000, 2000];
- final DummyFlutterCommand flutterCommand =
- new DummyFlutterCommand(commandFunction: () async { throwToolExit('fail'); });
+ final DummyFlutterCommand flutterCommand = new DummyFlutterCommand(
+ commandFunction: () async {
+ throwToolExit('fail');
+ return null; // unreachable
+ },
+ );
try {
await flutterCommand.run();
diff --git a/packages/flutter_tools/test/utils_test.dart b/packages/flutter_tools/test/utils_test.dart
index f98adee..a638dec 100644
--- a/packages/flutter_tools/test/utils_test.dart
+++ b/packages/flutter_tools/test/utils_test.dart
@@ -130,7 +130,7 @@
test('fires at start', () async {
bool called = false;
- poller = new Poller(() {
+ poller = new Poller(() async {
called = true;
}, const Duration(seconds: 1));
expect(called, false);
@@ -141,7 +141,7 @@
test('runs periodically', () async {
// Ensure we get the first (no-delay) callback, and one of the periodic callbacks.
int callCount = 0;
- poller = new Poller(() {
+ poller = new Poller(() async {
callCount++;
}, new Duration(milliseconds: kShortDelay.inMilliseconds ~/ 2));
expect(callCount, 0);