From 936dea28da4be310a0c9d10601b81f728a2c6993 Mon Sep 17 00:00:00 2001 From: Alexandre Ardhuin Date: Wed, 17 Oct 2018 08:09:29 +0200 Subject: [PATCH] enable lint prefer_void_to_null (#23174) * enable lint prefer_void_to_null * replace last Null by void --- README.md | 2 +- analysis_options.yaml | 2 +- dev/bots/analyze-sample-code.dart | 2 +- .../flutter/lib/src/animation/animation_controller.dart | 2 +- packages/flutter/lib/src/cupertino/tab_scaffold.dart | 2 +- packages/flutter/lib/src/foundation/binding.dart | 2 +- packages/flutter/lib/src/material/dialog.dart | 6 +++--- packages/flutter/lib/src/material/popup_menu.dart | 2 ++ packages/flutter/lib/src/widgets/framework.dart | 3 +-- packages/flutter/lib/src/widgets/localizations.dart | 4 ++-- packages/flutter/test/widgets/gesture_detector_test.dart | 2 +- packages/flutter_test/lib/src/test_async_utils.dart | 2 +- 12 files changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 07ad72bdf6c..0c6095fecff 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ and access native features and SDKs on Android and iOS. Accessing platform features is easy. Here is a snippet from our interop example: ```dart -Future getBatteryLevel() async { +Future getBatteryLevel() async { var batteryLevel = 'unknown'; try { int result = await methodChannel.invokeMethod('getBatteryLevel'); diff --git a/analysis_options.yaml b/analysis_options.yaml index 5f002050264..87e480cfe51 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -136,7 +136,7 @@ linter: - prefer_iterable_whereType - prefer_single_quotes - prefer_typing_uninitialized_variables - # - prefer_void_to_null # not yet tested + - prefer_void_to_null # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml - recursive_getters - slash_for_doc_comments diff --git a/dev/bots/analyze-sample-code.dart b/dev/bots/analyze-sample-code.dart index 0ec2fc3e4ba..9e0458282c6 100644 --- a/dev/bots/analyze-sample-code.dart +++ b/dev/bots/analyze-sample-code.dart @@ -327,7 +327,7 @@ void processBlock(Line line, List block, List
sections) { sections.add(Section(line, 'dynamic expression$_expressionId = ', block.toList(), ';')); } else if (block.first.startsWith('await ')) { _expressionId += 1; - sections.add(Section(line, 'Future expression$_expressionId() async { ', block.toList(), ' }')); + sections.add(Section(line, 'Future expression$_expressionId() async { ', block.toList(), ' }')); } else if (block.first.startsWith('class ') || block.first.startsWith('enum ')) { sections.add(Section(line, null, block.toList(), null)); } else if ((block.first.startsWith('_') || block.first.startsWith('final ')) && block.first.contains(' = ')) { diff --git a/packages/flutter/lib/src/animation/animation_controller.dart b/packages/flutter/lib/src/animation/animation_controller.dart index 587a541ba30..ea1cb73232c 100644 --- a/packages/flutter/lib/src/animation/animation_controller.dart +++ b/packages/flutter/lib/src/animation/animation_controller.dart @@ -176,7 +176,7 @@ enum AnimationBehavior { /// controllers using Dart's asynchronous syntax for awaiting [Future] objects: /// /// ```dart -/// Future fadeOutAndUpdateState() async { +/// Future fadeOutAndUpdateState() async { /// try { /// await fadeAnimationController.forward().orCancel; /// await sizeAnimationController.forward().orCancel; diff --git a/packages/flutter/lib/src/cupertino/tab_scaffold.dart b/packages/flutter/lib/src/cupertino/tab_scaffold.dart index dcc36ce8a5f..18d6687f90c 100644 --- a/packages/flutter/lib/src/cupertino/tab_scaffold.dart +++ b/packages/flutter/lib/src/cupertino/tab_scaffold.dart @@ -45,7 +45,7 @@ import 'bottom_tab_bar.dart'; /// child: const Text('Next page'), /// onPressed: () { /// Navigator.of(context).push( -/// CupertinoPageRoute( +/// CupertinoPageRoute( /// builder: (BuildContext context) { /// return CupertinoPageScaffold( /// navigationBar: CupertinoNavigationBar( diff --git a/packages/flutter/lib/src/foundation/binding.dart b/packages/flutter/lib/src/foundation/binding.dart index 56555d311a0..7b16057ca9f 100644 --- a/packages/flutter/lib/src/foundation/binding.dart +++ b/packages/flutter/lib/src/foundation/binding.dart @@ -178,7 +178,7 @@ abstract class BindingBase { assert(callback != null); _lockCount += 1; final Future future = callback(); - assert(future != null, 'The lockEvents() callback returned null; it should return a Future that completes when the lock is to expire.'); + assert(future != null, 'The lockEvents() callback returned null; it should return a Future that completes when the lock is to expire.'); future.whenComplete(() { _lockCount -= 1; if (!locked) { diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart index 2059c749106..4ed65a5f5d8 100644 --- a/packages/flutter/lib/src/material/dialog.dart +++ b/packages/flutter/lib/src/material/dialog.dart @@ -121,8 +121,8 @@ class Dialog extends StatelessWidget { /// and returns a [Future] that completes when the dialog is dismissed. /// /// ```dart -/// Future _neverSatisfied() async { -/// return showDialog( +/// Future _neverSatisfied() async { +/// return showDialog( /// context: context, /// barrierDismissible: false, // user must tap button! /// builder: (BuildContext context) { @@ -390,7 +390,7 @@ class SimpleDialogOption extends StatelessWidget { /// that doesn't mention every value in the enum. /// /// ```dart -/// Future _askedToLead() async { +/// Future _askedToLead() async { /// switch (await showDialog( /// context: context, /// builder: (BuildContext context) { diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart index 9685f55c55f..92bd4a96576 100644 --- a/packages/flutter/lib/src/material/popup_menu.dart +++ b/packages/flutter/lib/src/material/popup_menu.dart @@ -93,6 +93,7 @@ abstract class PopupMenuEntry extends StatefulWidget { /// * [showMenu], a method to dynamically show a popup menu at a given location. /// * [PopupMenuButton], an [IconButton] that automatically shows a menu when /// it is tapped. +// ignore: prefer_void_to_null, https://github.com/dart-lang/sdk/issues/34416 class PopupMenuDivider extends PopupMenuEntry { /// Creates a horizontal divider for a popup menu. /// @@ -106,6 +107,7 @@ class PopupMenuDivider extends PopupMenuEntry { final double height; @override + // ignore: prefer_void_to_null, https://github.com/dart-lang/sdk/issues/34416 bool represents(Null value) => false; @override diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart index 55ef6bbcb2c..b5e2ae0310e 100644 --- a/packages/flutter/lib/src/widgets/framework.dart +++ b/packages/flutter/lib/src/widgets/framework.dart @@ -1076,14 +1076,13 @@ abstract class State extends Diagnosticable { /// the increment is wrapped in the `setState`: /// /// ```dart - /// Future _incrementCounter() async { + /// Future _incrementCounter() async { /// setState(() { /// _counter++; /// }); /// Directory directory = await getApplicationDocumentsDirectory(); /// final String dirName = directory.path; /// await File('$dir/counter.txt').writeAsString('$_counter'); - /// return null; /// } /// ``` /// diff --git a/packages/flutter/lib/src/widgets/localizations.dart b/packages/flutter/lib/src/widgets/localizations.dart index e960ec30056..d2c1f44e268 100644 --- a/packages/flutter/lib/src/widgets/localizations.dart +++ b/packages/flutter/lib/src/widgets/localizations.dart @@ -14,7 +14,7 @@ import 'framework.dart'; // Examples can assume: // class Intl { static String message(String s, { String name, String locale }) => ''; } -// Future initializeMessages(String locale) => null; +// Future initializeMessages(String locale) => null; // Used by loadAll() to record LocalizationsDelegate.load() futures we're // waiting for. @@ -308,7 +308,7 @@ class _LocalizationsScope extends InheritedWidget { /// /// static Future load(Locale locale) { /// return initializeMessages(locale.toString()) -/// .then((Null _) { +/// .then((void _) { /// return MyLocalizations(locale); /// }); /// } diff --git a/packages/flutter/test/widgets/gesture_detector_test.dart b/packages/flutter/test/widgets/gesture_detector_test.dart index 36fe286f3ba..2b4f46933a9 100644 --- a/packages/flutter/test/widgets/gesture_detector_test.dart +++ b/packages/flutter/test/widgets/gesture_detector_test.dart @@ -334,7 +334,7 @@ void main() { ), ); - Future longPress(Duration timeout) async { + Future longPress(Duration timeout) async { final TestGesture gesture = await tester.startGesture(const Offset(400.0, 50.0)); await tester.pump(timeout); await gesture.up(); diff --git a/packages/flutter_test/lib/src/test_async_utils.dart b/packages/flutter_test/lib/src/test_async_utils.dart index 6307770edd7..2a9c806d999 100644 --- a/packages/flutter_test/lib/src/test_async_utils.dart +++ b/packages/flutter_test/lib/src/test_async_utils.dart @@ -40,7 +40,7 @@ class _AsyncScope { /// in a call to TestAsyncUtils.guard(), as follows: /// /// ```dart -/// Future myTestFunction() => TestAsyncUtils.guard(() async { +/// Future myTestFunction() => TestAsyncUtils.guard(() async { /// // ... /// }); /// ```