From d8856b9e5095745fdf27ed1ca6eec6141aebff2f Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 27 Feb 2025 08:31:22 -0800 Subject: [PATCH] Remove the last vestiges of null-unsafety in `flutter_tools`. (#164026) The internal code using this was deleted in `cl/730558889`. --- .../lib/src/android/android_device.dart | 7 +- .../lib/src/commands/attach.dart | 1 - .../lib/src/commands/build_aar.dart | 1 - .../lib/src/commands/build_apk.dart | 1 - .../lib/src/commands/build_appbundle.dart | 1 - .../lib/src/commands/build_ios.dart | 1 - .../lib/src/commands/build_ios_framework.dart | 1 - .../lib/src/commands/build_web.dart | 1 - .../lib/src/commands/packages.dart | 1 - .../flutter_tools/lib/src/commands/run.dart | 2 - .../flutter_tools/lib/src/commands/test.dart | 2 - .../lib/src/custom_devices/custom_device.dart | 3 +- .../flutter_tools/lib/src/desktop_device.dart | 2 +- packages/flutter_tools/lib/src/device.dart | 25 +----- packages/flutter_tools/lib/src/globals.dart | 6 -- .../lib/src/isolated/devfs_web.dart | 4 - .../lib/src/isolated/resident_web_runner.dart | 1 - .../lib/src/runner/flutter_command.dart | 33 -------- .../lib/src/test/flutter_tester_device.dart | 1 - .../lib/src/test/flutter_web_platform.dart | 5 -- .../flutter_tools/lib/src/test/runner.dart | 2 - .../flutter_tools/lib/src/web/bootstrap.dart | 38 --------- .../commands.shard/hermetic/drive_test.dart | 2 - .../commands.shard/hermetic/run_test.dart | 30 ------- .../android/android_device_start_test.dart | 3 +- .../test/general.shard/args_test.dart | 5 +- .../general.shard/commands/build_test.dart | 82 ------------------- .../general.shard/desktop_device_test.dart | 8 +- .../test/general.shard/device_test.dart | 27 +----- .../ios/ios_device_start_prebuilt_test.dart | 3 +- .../general.shard/ios/simulators_test.dart | 3 +- .../general.shard/web/bootstrap_test.dart | 14 ---- .../web/devfs_web_ddc_modules_test.dart | 6 -- .../general.shard/web/devfs_web_test.dart | 7 -- 34 files changed, 20 insertions(+), 309 deletions(-) diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 63c80e5b75..c9e2dcf2b8 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart @@ -617,7 +617,6 @@ class AndroidDevice extends Device { ); } - final String dartVmFlags = computeDartVmFlags(debuggingOptions); final String? traceAllowlist = debuggingOptions.traceAllowlist; final String? traceSkiaAllowlist = debuggingOptions.traceSkiaAllowlist; final String? traceToFile = debuggingOptions.traceToFile; @@ -684,7 +683,11 @@ class AndroidDevice extends Device { 'disable-service-auth-codes', 'true', ], - if (dartVmFlags.isNotEmpty) ...['--es', 'dart-flags', dartVmFlags], + if (debuggingOptions.dartFlags.isNotEmpty) ...[ + '--es', + 'dart-flags', + debuggingOptions.dartFlags, + ], if (debuggingOptions.useTestFonts) ...['--ez', 'use-test-fonts', 'true'], if (debuggingOptions.verboseSystemLogs) ...['--ez', 'verbose-logging', 'true'], if (userIdentifier != null) ...['--user', userIdentifier], diff --git a/packages/flutter_tools/lib/src/commands/attach.dart b/packages/flutter_tools/lib/src/commands/attach.dart index f71a1b8bfa..e2c26ea285 100644 --- a/packages/flutter_tools/lib/src/commands/attach.dart +++ b/packages/flutter_tools/lib/src/commands/attach.dart @@ -85,7 +85,6 @@ class AttachCommand extends FlutterCommand { usesDartDefineOption(); usesDeviceUserOption(); addEnableExperimentation(hide: !verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); usesInitializeFromDillOption(hide: !verboseHelp); usesNativeAssetsOption(hide: !verboseHelp); argParser diff --git a/packages/flutter_tools/lib/src/commands/build_aar.dart b/packages/flutter_tools/lib/src/commands/build_aar.dart index f071ac507b..e0dad4e8d9 100644 --- a/packages/flutter_tools/lib/src/commands/build_aar.dart +++ b/packages/flutter_tools/lib/src/commands/build_aar.dart @@ -48,7 +48,6 @@ class BuildAarCommand extends BuildSubCommand { usesDartDefineOption(); usesExtraDartFlagOptions(verboseHelp: verboseHelp); usesTrackWidgetCreation(verboseHelp: false); - addNullSafetyModeOptions(hide: !verboseHelp); addEnableExperimentation(hide: !verboseHelp); addAndroidSpecificBuildOptions(hide: !verboseHelp); argParser.addMultiOption( diff --git a/packages/flutter_tools/lib/src/commands/build_apk.dart b/packages/flutter_tools/lib/src/commands/build_apk.dart index 5c80bc47cb..656bb2b166 100644 --- a/packages/flutter_tools/lib/src/commands/build_apk.dart +++ b/packages/flutter_tools/lib/src/commands/build_apk.dart @@ -31,7 +31,6 @@ class BuildApkCommand extends BuildSubCommand { usesExtraDartFlagOptions(verboseHelp: verboseHelp); addEnableExperimentation(hide: !verboseHelp); addBuildPerformanceFile(hide: !verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); usesAnalyzeSizeFlag(); addAndroidSpecificBuildOptions(hide: !verboseHelp); addIgnoreDeprecationOption(); diff --git a/packages/flutter_tools/lib/src/commands/build_appbundle.dart b/packages/flutter_tools/lib/src/commands/build_appbundle.dart index 2492aba583..938bd290fc 100644 --- a/packages/flutter_tools/lib/src/commands/build_appbundle.dart +++ b/packages/flutter_tools/lib/src/commands/build_appbundle.dart @@ -34,7 +34,6 @@ class BuildAppBundleCommand extends BuildSubCommand { usesExtraDartFlagOptions(verboseHelp: verboseHelp); addBuildPerformanceFile(hide: !verboseHelp); usesTrackWidgetCreation(verboseHelp: verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); addEnableExperimentation(hide: !verboseHelp); usesAnalyzeSizeFlag(); addAndroidSpecificBuildOptions(hide: !verboseHelp); diff --git a/packages/flutter_tools/lib/src/commands/build_ios.dart b/packages/flutter_tools/lib/src/commands/build_ios.dart index ce77876f63..8d1e2eca9d 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios.dart @@ -676,7 +676,6 @@ abstract class _BuildIOSSubCommand extends BuildSubCommand { usesExtraDartFlagOptions(verboseHelp: verboseHelp); addEnableExperimentation(hide: !verboseHelp); addBuildPerformanceFile(hide: !verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); usesAnalyzeSizeFlag(); argParser.addFlag( 'codesign', diff --git a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart index 87b359d2b3..6a11eb56fe 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart @@ -45,7 +45,6 @@ abstract class BuildFrameworkCommand extends BuildSubCommand { addSplitDebugInfoOption(); addDartObfuscationOption(); usesExtraDartFlagOptions(verboseHelp: verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); addEnableExperimentation(hide: !verboseHelp); argParser diff --git a/packages/flutter_tools/lib/src/commands/build_web.dart b/packages/flutter_tools/lib/src/commands/build_web.dart index 71e6aca7d5..5c0a71a560 100644 --- a/packages/flutter_tools/lib/src/commands/build_web.dart +++ b/packages/flutter_tools/lib/src/commands/build_web.dart @@ -32,7 +32,6 @@ class BuildWebCommand extends BuildSubCommand { addBuildModeFlags(verboseHelp: verboseHelp); usesDartDefineOption(); addEnableExperimentation(hide: !verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); addNativeNullAssertions(); // diff --git a/packages/flutter_tools/lib/src/commands/packages.dart b/packages/flutter_tools/lib/src/commands/packages.dart index 29456bd179..944da0c715 100644 --- a/packages/flutter_tools/lib/src/commands/packages.dart +++ b/packages/flutter_tools/lib/src/commands/packages.dart @@ -243,7 +243,6 @@ class PackagesGetCommand extends FlutterCommand { argParser.addFlag('enforce-lockfile'); argParser.addFlag('precompile'); argParser.addFlag('major-versions'); - argParser.addFlag('null-safety'); argParser.addFlag('example', defaultsTo: true); argParser.addOption('sdk'); argParser.addOption('path'); diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index d7ae1f4748..489fa46e4d 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -209,7 +209,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment usesIpv6Flag(verboseHelp: verboseHelp); usesPubOption(); usesTrackWidgetCreation(verboseHelp: verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); usesDeviceUserOption(); usesDeviceTimeoutOption(); usesDeviceConnectionOption(); @@ -360,7 +359,6 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment argParser.options.containsKey('fast-start') && boolArg('fast-start') && !runningWithPrebuiltApplication, - nullAssertions: boolArg('null-assertions'), nativeNullAssertions: boolArg('native-null-assertions'), enableImpeller: enableImpeller, enableVulkanValidation: enableVulkanValidation, diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index 418f75ab8c..1627c190d8 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -71,7 +71,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { }) { requiresPubspecYaml(); usesPubOption(); - addNullSafetyModeOptions(hide: !verboseHelp); usesFrontendServerStarterPathOption(verboseHelp: verboseHelp); usesTrackWidgetCreation(verboseHelp: verboseHelp); addEnableExperimentation(hide: !verboseHelp); @@ -457,7 +456,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { // On iOS >=14, keeping this enabled will leave a prompt on the screen. disablePortPublication: true, enableDds: enableDds, - nullAssertions: boolArg(FlutterOptions.kNullAssertions), usingCISystem: usingCISystem, enableImpeller: ImpellerStatus.fromBool(argResults!['enable-impeller'] as bool?), debugLogsDirectoryPath: debugLogsDirectoryPath, diff --git a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart index b746f6d8b7..66aa535189 100644 --- a/packages/flutter_tools/lib/src/custom_devices/custom_device.dart +++ b/packages/flutter_tools/lib/src/custom_devices/custom_device.dart @@ -278,7 +278,6 @@ class CustomDeviceAppSession { bool traceStartup, String? route, ) { - final String dartVmFlags = computeDartVmFlags(debuggingOptions); return [ if (traceStartup) 'trace-startup=true', if (route != null) 'route=$route', @@ -301,7 +300,7 @@ class CustomDeviceAppSession { ], if (debuggingOptions.startPaused) 'start-paused=true', if (debuggingOptions.disableServiceAuthCodes) 'disable-service-auth-codes=true', - if (dartVmFlags.isNotEmpty) 'dart-flags=$dartVmFlags', + if (debuggingOptions.dartFlags.isNotEmpty) 'dart-flags=${debuggingOptions.dartFlags}', if (debuggingOptions.useTestFonts) 'use-test-fonts=true', if (debuggingOptions.verboseSystemLogs) 'verbose-logging=true', ], diff --git a/packages/flutter_tools/lib/src/desktop_device.dart b/packages/flutter_tools/lib/src/desktop_device.dart index 2d48839550..a1349adc58 100644 --- a/packages/flutter_tools/lib/src/desktop_device.dart +++ b/packages/flutter_tools/lib/src/desktop_device.dart @@ -311,7 +311,7 @@ abstract class DesktopDevice extends Device { if (debuggingOptions.disableServiceAuthCodes) { addFlag('disable-service-auth-codes=true'); } - final String dartVmFlags = computeDartVmFlags(debuggingOptions); + final String dartVmFlags = debuggingOptions.dartFlags; if (dartVmFlags.isNotEmpty) { addFlag('dart-flags=$dartVmFlags'); } diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index 1a37343b9b..3cdf50eaf8 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -964,7 +964,6 @@ class DebuggingOptions { this.webUseWasm = false, this.vmserviceOutFile, this.fastStart = false, - this.nullAssertions = false, this.nativeNullAssertions = false, this.enableImpeller = ImpellerStatus.platformDefault, this.enableVulkanValidation = false, @@ -1031,7 +1030,6 @@ class DebuggingOptions { vmserviceOutFile = null, fastStart = false, webEnableExpressionEvaluation = false, - nullAssertions = false, nativeNullAssertions = false, serveObservatory = false, enableDevTools = false, @@ -1083,7 +1081,6 @@ class DebuggingOptions { required this.webUseWasm, required this.vmserviceOutFile, required this.fastStart, - required this.nullAssertions, required this.nativeNullAssertions, required this.enableImpeller, required this.enableVulkanValidation, @@ -1181,8 +1178,6 @@ class DebuggingOptions { final String? vmserviceOutFile; final bool fastStart; - final bool nullAssertions; - /// Additional null runtime checks inserted for web applications. /// /// See also: @@ -1196,17 +1191,16 @@ class DebuggingOptions { DeviceConnectionInterface interfaceType = DeviceConnectionInterface.attached, bool isCoreDevice = false, }) { - final String dartVmFlags = computeDartVmFlags(this); return [ if (enableDartProfiling) '--enable-dart-profiling', if (disableServiceAuthCodes) '--disable-service-auth-codes', if (disablePortPublication) '--disable-vm-service-publication', if (startPaused) '--start-paused', // Wrap dart flags in quotes for physical devices - if (environmentType == EnvironmentType.physical && dartVmFlags.isNotEmpty) - '--dart-flags="$dartVmFlags"', - if (environmentType == EnvironmentType.simulator && dartVmFlags.isNotEmpty) - '--dart-flags=$dartVmFlags', + if (environmentType == EnvironmentType.physical && dartFlags.isNotEmpty) + '--dart-flags="$dartFlags"', + if (environmentType == EnvironmentType.simulator && dartFlags.isNotEmpty) + '--dart-flags=$dartFlags', if (useTestFonts) '--use-test-fonts', // Core Devices (iOS 17 devices) are debugged through Xcode so don't // include these flags, which are used to check if the app was launched @@ -1284,7 +1278,6 @@ class DebuggingOptions { 'webUseWasm': webUseWasm, 'vmserviceOutFile': vmserviceOutFile, 'fastStart': fastStart, - 'nullAssertions': nullAssertions, 'nativeNullAssertions': nativeNullAssertions, 'enableImpeller': enableImpeller.asBool, 'enableVulkanValidation': enableVulkanValidation, @@ -1354,7 +1347,6 @@ class DebuggingOptions { webUseWasm: json['webUseWasm']! as bool, vmserviceOutFile: json['vmserviceOutFile'] as String?, fastStart: json['fastStart']! as bool, - nullAssertions: json['nullAssertions']! as bool, nativeNullAssertions: json['nativeNullAssertions']! as bool, enableImpeller: ImpellerStatus.fromBool(json['enableImpeller'] as bool?), enableVulkanValidation: (json['enableVulkanValidation'] as bool?) ?? false, @@ -1434,12 +1426,3 @@ class NoOpDeviceLogReader implements DeviceLogReader { @override Future provideVmService(FlutterVmService connectedVmService) async {} } - -/// Append --null_assertions to any existing Dart VM flags if -/// [debuggingOptions.nullAssertions] is true. -String computeDartVmFlags(DebuggingOptions debuggingOptions) { - return [ - if (debuggingOptions.dartFlags.isNotEmpty) debuggingOptions.dartFlags, - if (debuggingOptions.nullAssertions) '--null_assertions', - ].join(','); -} diff --git a/packages/flutter_tools/lib/src/globals.dart b/packages/flutter_tools/lib/src/globals.dart index 08fbd0c809..9efdf084d2 100644 --- a/packages/flutter_tools/lib/src/globals.dart +++ b/packages/flutter_tools/lib/src/globals.dart @@ -46,7 +46,6 @@ import 'pre_run_validator.dart'; import 'project.dart'; import 'reporting/crash_reporting.dart'; import 'reporting/reporting.dart'; -import 'runner/flutter_command.dart'; import 'runner/local_engine.dart'; import 'version.dart'; @@ -286,11 +285,6 @@ final RegExp kVMServiceMessageRegExp = RegExp( r'The Dart VM service is listening on ((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)', ); -// The official tool no longer allows non-null safe builds. This can be -// overridden in other clients. -NonNullSafeBuilds get nonNullSafeBuilds => - context.get() ?? NonNullSafeBuilds.notAllowed; - /// Contains information about the JRE/JDK to use for Java-dependent operations. /// /// A value of [null] indicates that no installation of java could be found on diff --git a/packages/flutter_tools/lib/src/isolated/devfs_web.dart b/packages/flutter_tools/lib/src/isolated/devfs_web.dart index 56537dfe98..64935b16f0 100644 --- a/packages/flutter_tools/lib/src/isolated/devfs_web.dart +++ b/packages/flutter_tools/lib/src/isolated/devfs_web.dart @@ -831,7 +831,6 @@ class WebDevFS implements DevFS { required this.expressionCompiler, required this.extraHeaders, required this.chromiumLauncher, - required this.nullAssertions, required this.nativeNullAssertions, required this.ddcModuleSystem, required this.canaryFeatures, @@ -865,7 +864,6 @@ class WebDevFS implements DevFS { final bool canaryFeatures; final ExpressionCompiler? expressionCompiler; final ChromiumLauncher? chromiumLauncher; - final bool nullAssertions; final bool nativeNullAssertions; final int _port; final String? tlsCertPath; @@ -1086,13 +1084,11 @@ class WebDevFS implements DevFS { ddcModuleSystem ? generateDDCLibraryBundleMainModule( entrypoint: entrypoint, - nullAssertions: nullAssertions, nativeNullAssertions: nativeNullAssertions, onLoadEndBootstrap: onLoadEndBootstrap, ) : generateMainModule( entrypoint: entrypoint, - nullAssertions: nullAssertions, nativeNullAssertions: nativeNullAssertions, loaderRootDirectory: _baseUri.toString(), ), diff --git a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart index a3a32e79c8..48075324ca 100644 --- a/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart +++ b/packages/flutter_tools/lib/src/isolated/resident_web_runner.dart @@ -319,7 +319,6 @@ Please provide a valid TCP port (an integer between 0 and 65535, inclusive). expressionCompiler: expressionCompiler, extraHeaders: debuggingOptions.webHeaders, chromiumLauncher: _chromiumLauncher, - nullAssertions: debuggingOptions.nullAssertions, nativeNullAssertions: debuggingOptions.nativeNullAssertions, ddcModuleSystem: debuggingOptions.buildInfo.ddcModuleFormat == DdcModuleFormat.ddc, canaryFeatures: debuggingOptions.buildInfo.canaryFeatures ?? false, diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index 842a9a80c2..47b06b200c 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -132,13 +132,11 @@ abstract final class FlutterOptions { static const String kDartDefinesOption = 'dart-define'; static const String kDartDefineFromFileOption = 'dart-define-from-file'; static const String kPerformanceMeasurementFile = 'performance-measurement-file'; - static const String kNullSafety = 'sound-null-safety'; static const String kDeviceUser = 'device-user'; static const String kDeviceTimeout = 'device-timeout'; static const String kDeviceConnection = 'device-connection'; static const String kAnalyzeSize = 'analyze-size'; static const String kCodeSizeDirectory = 'code-size-directory'; - static const String kNullAssertions = 'null-assertions'; static const String kAndroidGradleDaemon = 'android-gradle-daemon'; static const String kDeferredComponents = 'deferred-components'; static const String kAndroidProjectArgs = 'android-project-arg'; @@ -997,20 +995,6 @@ abstract class FlutterCommand extends Command { ); } - void addNullSafetyModeOptions({required bool hide}) { - argParser.addFlag( - FlutterOptions.kNullSafety, - help: 'This flag is deprecated as only null-safe code is supported.', - defaultsTo: true, - hide: true, - ); - argParser.addFlag( - FlutterOptions.kNullAssertions, - help: 'This flag is deprecated as only null-safe code is supported.', - hide: true, - ); - } - void usesFrontendServerStarterPathOption({required bool verboseHelp}) { argParser.addOption( FlutterOptions.kFrontendServerStarterPath, @@ -1173,7 +1157,6 @@ abstract class FlutterCommand extends Command { addBuildPerformanceFile(hide: !verboseHelp); addDartObfuscationOption(); addEnableExperimentation(hide: !verboseHelp); - addNullSafetyModeOptions(hide: !verboseHelp); addSplitDebugInfoOption(); addTreeShakeIconsFlag(); usesAnalyzeSizeFlag(); @@ -1844,16 +1827,6 @@ abstract class FlutterCommand extends Command { /// rather than calling [runCommand] directly. @mustCallSuper Future verifyThenRunCommand(String? commandPath) async { - if (argParser.options.containsKey(FlutterOptions.kNullSafety) && - argResults![FlutterOptions.kNullSafety] == false && - globals.nonNullSafeBuilds == NonNullSafeBuilds.notAllowed) { - throwToolExit(''' -Could not find an option named "no-${FlutterOptions.kNullSafety}". - -Run 'flutter -h' (or 'flutter -h') for available flutter commands and options. -'''); - } - globals.preRunValidator.validate(); if (refreshWirelessDevices) { @@ -2153,9 +2126,3 @@ DevelopmentArtifact? artifactFromTargetPlatform(TargetPlatform targetPlatform) { /// Returns true if s is either null, empty or is solely made of whitespace characters (as defined by String.trim). bool _isBlank(String s) => s.trim().isEmpty; - -/// Whether the tool should allow non-null safe builds. -/// -/// The Dart SDK no longer supports non-null safe builds, so this value in the -/// tool's context should always be [NonNullSafeBuilds.notAllowed]. -enum NonNullSafeBuilds { allowed, notAllowed } diff --git a/packages/flutter_tools/lib/src/test/flutter_tester_device.dart b/packages/flutter_tools/lib/src/test/flutter_tester_device.dart index f9ce8abc3c..fe21ff61aa 100644 --- a/packages/flutter_tools/lib/src/test/flutter_tester_device.dart +++ b/packages/flutter_tools/lib/src/test/flutter_tester_device.dart @@ -118,7 +118,6 @@ class FlutterTesterTestDevice extends TestDevice { '--disable-asset-fonts', '--packages=${debuggingOptions.buildInfo.packageConfigPath}', if (testAssetDirectory != null) '--flutter-assets-dir=$testAssetDirectory', - if (debuggingOptions.nullAssertions) '--dart-flags=--null_assertions', ...debuggingOptions.dartEntrypointArgs, entrypointPath, ]; diff --git a/packages/flutter_tools/lib/src/test/flutter_web_platform.dart b/packages/flutter_tools/lib/src/test/flutter_web_platform.dart index 7886003834..9c923bec80 100644 --- a/packages/flutter_tools/lib/src/test/flutter_web_platform.dart +++ b/packages/flutter_tools/lib/src/test/flutter_web_platform.dart @@ -69,7 +69,6 @@ class FlutterWebPlatform extends PlatformPlugin { this._server, this._config, this._root, { - this.nullAssertions, required this.updateGoldens, required this.buildInfo, required this.webMemoryFS, @@ -141,7 +140,6 @@ class FlutterWebPlatform extends PlatformPlugin { final Logger _logger; final Artifacts? _artifacts; final bool updateGoldens; - final bool? nullAssertions; final OneOffHandler _webSocketHandler = OneOffHandler(); final AsyncMemoizer _closeMemo = AsyncMemoizer(); final String _root; @@ -164,7 +162,6 @@ class FlutterWebPlatform extends PlatformPlugin { String root, { bool updateGoldens = false, bool pauseAfterLoad = false, - bool nullAssertions = false, required FlutterProject flutterProject, required String flutterTesterBinPath, required BuildInfo buildInfo, @@ -215,7 +212,6 @@ class FlutterWebPlatform extends PlatformPlugin { chromiumLauncher: chromiumLauncher, artifacts: artifacts, logger: logger, - nullAssertions: nullAssertions, processManager: processManager, webRenderer: webRenderer, useWasm: useWasm, @@ -332,7 +328,6 @@ class FlutterWebPlatform extends PlatformPlugin { if (request.url.path.endsWith('main.dart.bootstrap.js')) { return shelf.Response.ok( generateMainModule( - nullAssertions: nullAssertions!, nativeNullAssertions: true, bootstrapModule: 'main.dart.bootstrap', entrypoint: '/main.dart.js', diff --git a/packages/flutter_tools/lib/src/test/runner.dart b/packages/flutter_tools/lib/src/test/runner.dart index 49f9d5846c..944474faec 100644 --- a/packages/flutter_tools/lib/src/test/runner.dart +++ b/packages/flutter_tools/lib/src/test/runner.dart @@ -117,7 +117,6 @@ interface class FlutterTestRunner { flutterTesterBinPath: flutterTesterBinPath, flutterProject: flutterProject, pauseAfterLoad: debuggingOptions.startPaused, - nullAssertions: debuggingOptions.nullAssertions, buildInfo: debuggingOptions.buildInfo, webMemoryFS: result, logger: globals.logger, @@ -697,7 +696,6 @@ class SpawnPlugin extends PlatformPlugin { '--disable-asset-fonts', '--packages=${debuggingOptions.buildInfo.packageConfigPath}', if (testAssetDirectory != null) '--flutter-assets-dir=$testAssetDirectory', - if (debuggingOptions.nullAssertions) '--dart-flags=--null_assertions', ...debuggingOptions.dartEntrypointArgs, rootTestIsolateSpawnerDillFile.absolute.path, ]; diff --git a/packages/flutter_tools/lib/src/web/bootstrap.dart b/packages/flutter_tools/lib/src/web/bootstrap.dart index 5322862e4d..f05578b448 100644 --- a/packages/flutter_tools/lib/src/web/bootstrap.dart +++ b/packages/flutter_tools/lib/src/web/bootstrap.dart @@ -471,45 +471,10 @@ document.addEventListener('dart-app-ready', function (e) { '''; } -// TODO(srujzs): Delete this once it's no longer used internally. -String generateDDCMainModule({ - required String entrypoint, - required bool nullAssertions, - required bool nativeNullAssertions, - String? exportedMain, -}) { - final String entrypointMainName = exportedMain ?? entrypoint.split('.')[0]; - // The typo below in "EXTENTION" is load-bearing, package:build depends on it. - return ''' -/* ENTRYPOINT_EXTENTION_MARKER */ - -(function() { - // Flutter Web uses a generated main entrypoint, which shares app and module names. - let appName = "$entrypoint"; - let moduleName = "$entrypoint"; - - // Use a dummy UUID since multi-apps are not supported on Flutter Web. - let uuid = "00000000-0000-0000-0000-000000000000"; - - let child = {}; - child.main = function() { - let dart = self.dart_library.import('dart_sdk', appName).dart; - dart.nonNullAsserts($nullAssertions); - dart.nativeNonNullAsserts($nativeNullAssertions); - self.dart_library.start(appName, uuid, moduleName, "$entrypointMainName"); - } - - /* MAIN_EXTENSION_MARKER */ - child.main(); -})(); -'''; -} - const String _onLoadEndCallback = r'$onLoadEndCallback'; String generateDDCLibraryBundleMainModule({ required String entrypoint, - required bool nullAssertions, required bool nativeNullAssertions, required String onLoadEndBootstrap, }) { @@ -536,7 +501,6 @@ String generateDDCLibraryBundleMainModule({ let child = {}; child.main = function() { let sdkOptions = { - nonNullAsserts: $nullAssertions, nativeNonNullAsserts: $nativeNullAssertions, }; dartDevEmbedder.runMain(appName, sdkOptions); @@ -566,7 +530,6 @@ String generateDDCLibraryBundleOnLoadEndBootstrap() { /// this object is the module. String generateMainModule({ required String entrypoint, - required bool nullAssertions, required bool nativeNullAssertions, String bootstrapModule = 'main_module.bootstrap', String loaderRootDirectory = '', @@ -582,7 +545,6 @@ require.config({ define("$bootstrapModule", ["$entrypoint", "dart_sdk"], function(app, dart_sdk) { dart_sdk.dart.setStartAsyncSynchronously(true); dart_sdk._debugger.registerDevtoolsFormatter(); - dart_sdk.dart.nonNullAsserts($nullAssertions); dart_sdk.dart.nativeNonNullAsserts($nativeNullAssertions); // See the generateMainModule doc comment. diff --git a/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart index 7f1ba0635b..d726a776e0 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart @@ -567,7 +567,6 @@ void main() { '--trace-systrace', '--trace-to-file=path/to/trace.binpb', '--verbose-system-logs', - '--null-assertions', '--native-null-assertions', '--enable-impeller', '--trace-systrace', @@ -588,7 +587,6 @@ void main() { expect(options.traceSystrace, true); expect(options.traceToFile, 'path/to/trace.binpb'); expect(options.verboseSystemLogs, true); - expect(options.nullAssertions, true); expect(options.nativeNullAssertions, true); expect(options.enableImpeller, ImpellerStatus.enabled); expect(options.traceSystrace, true); diff --git a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart index ff3dca76ac..eff680ba97 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/run_test.dart @@ -75,34 +75,6 @@ void main() { }, ); - testUsingContext( - 'does not support --no-sound-null-safety by default', - () async { - fileSystem.file('lib/main.dart').createSync(recursive: true); - fileSystem.file('pubspec.yaml').createSync(); - fileSystem.file('.dart_tool/package_config.json').createSync(recursive: true); - - final TestRunCommandThatOnlyValidates command = TestRunCommandThatOnlyValidates(); - await expectLater( - () => createTestCommandRunner( - command, - ).run(['run', '--use-application-binary=app/bar/faz', '--no-sound-null-safety']), - throwsA( - isException.having( - (Exception exception) => exception.toString(), - 'toString', - contains('Could not find an option named "no-sound-null-safety"'), - ), - ), - ); - }, - overrides: { - FileSystem: () => fileSystem, - ProcessManager: () => FakeProcessManager.any(), - Logger: () => logger, - }, - ); - testUsingContext( 'does not support "--use-application-binary" and "--fast-start"', () async { @@ -1283,7 +1255,6 @@ void main() { '--trace-systrace', '--trace-to-file=path/to/trace.binpb', '--verbose-system-logs', - '--null-assertions', '--native-null-assertions', '--enable-impeller', '--enable-vulkan-validation', @@ -1306,7 +1277,6 @@ void main() { expect(options.traceSystrace, true); expect(options.traceToFile, 'path/to/trace.binpb'); expect(options.verboseSystemLogs, true); - expect(options.nullAssertions, true); expect(options.nativeNullAssertions, true); expect(options.traceSystrace, true); expect(options.enableImpeller, ImpellerStatus.enabled); diff --git a/packages/flutter_tools/test/general.shard/android/android_device_start_test.dart b/packages/flutter_tools/test/general.shard/android/android_device_start_test.dart index 2698482044..507f2dec96 100644 --- a/packages/flutter_tools/test/general.shard/android/android_device_start_test.dart +++ b/packages/flutter_tools/test/general.shard/android/android_device_start_test.dart @@ -262,7 +262,7 @@ void main() { '--ez', 'verify-entry-points', 'true', '--ez', 'start-paused', 'true', '--ez', 'disable-service-auth-codes', 'true', - '--es', 'dart-flags', 'foo,--null_assertions', + '--es', 'dart-flags', 'foo', '--ez', 'use-test-fonts', 'true', '--ez', 'verbose-logging', 'true', '--user', '10', @@ -291,7 +291,6 @@ void main() { useTestFonts: true, verboseSystemLogs: true, enableImpeller: ImpellerStatus.enabled, - nullAssertions: true, ), platformArgs: {}, userIdentifier: '10', diff --git a/packages/flutter_tools/test/general.shard/args_test.dart b/packages/flutter_tools/test/general.shard/args_test.dart index fff41dfc21..7dd859ea1f 100644 --- a/packages/flutter_tools/test/general.shard/args_test.dart +++ b/packages/flutter_tools/test/general.shard/args_test.dart @@ -258,10 +258,7 @@ void verifyOptions(String? command, Iterable