mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
[flutter_tools] null assertions off by default for web (#64186)
Like Android/iOS, only enable --null-assertions if asked. Previously this was enabled by default for web, but in general this has proved to be too breaking to enable by default. #61042
This commit is contained in:
parent
ae4b3ba2d1
commit
69fd5c50a2
@ -866,7 +866,8 @@ Future<void> _runWebDebugTest(String target, {
|
||||
...<String>[
|
||||
'--enable-experiment',
|
||||
'non-nullable',
|
||||
'--no-sound-null-safety'
|
||||
'--no-sound-null-safety',
|
||||
'--null-assertions',
|
||||
],
|
||||
'-d',
|
||||
'chrome',
|
||||
|
||||
@ -636,6 +636,7 @@ class WebDevFS implements DevFS {
|
||||
@required this.entrypoint,
|
||||
@required this.expressionCompiler,
|
||||
@required this.chromiumLauncher,
|
||||
@required this.nullAssertions,
|
||||
this.testMode = false,
|
||||
});
|
||||
|
||||
@ -651,6 +652,7 @@ class WebDevFS implements DevFS {
|
||||
final bool testMode;
|
||||
final ExpressionCompiler expressionCompiler;
|
||||
final ChromiumLauncher chromiumLauncher;
|
||||
final bool nullAssertions;
|
||||
|
||||
WebAssetServer webAssetServer;
|
||||
|
||||
@ -791,8 +793,7 @@ class WebDevFS implements DevFS {
|
||||
'main_module.bootstrap.js',
|
||||
generateMainModule(
|
||||
entrypoint: entrypoint,
|
||||
nullSafety: buildInfo.extraFrontEndOptions
|
||||
?.contains('--enable-experiment=non-nullable') ?? false,
|
||||
nullAssertions: nullAssertions,
|
||||
),
|
||||
);
|
||||
// TODO(jonahwilliams): refactor the asset code in this and the regular devfs to
|
||||
|
||||
@ -469,6 +469,7 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
entrypoint: globals.fs.file(target).uri,
|
||||
expressionCompiler: expressionCompiler,
|
||||
chromiumLauncher: _chromiumLauncher,
|
||||
nullAssertions: debuggingOptions.nullAssertions,
|
||||
);
|
||||
final Uri url = await device.devFS.create();
|
||||
if (debuggingOptions.buildInfo.isDebug) {
|
||||
|
||||
@ -50,14 +50,14 @@ document.head.appendChild(requireEl);
|
||||
/// this object is the module.
|
||||
String generateMainModule({
|
||||
@required String entrypoint,
|
||||
@required bool nullSafety,
|
||||
@required bool nullAssertions,
|
||||
}) {
|
||||
return '''/* ENTRYPOINT_EXTENTION_MARKER */
|
||||
// Create the main module loaded below.
|
||||
define("main_module.bootstrap", ["$entrypoint", "dart_sdk"], function(app, dart_sdk) {
|
||||
dart_sdk.dart.setStartAsyncSynchronously(true);
|
||||
dart_sdk._debugger.registerDevtoolsFormatter();
|
||||
if ($nullSafety) {
|
||||
if ($nullAssertions) {
|
||||
dart_sdk.dart.nonNullAsserts(true);
|
||||
}
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ void main() {
|
||||
test('generateMainModule embeds urls correctly', () {
|
||||
final String result = generateMainModule(
|
||||
entrypoint: 'foo/bar/main.js',
|
||||
nullSafety: false,
|
||||
nullAssertions: false,
|
||||
);
|
||||
// bootstrap main module has correct defined module.
|
||||
expect(result, contains('define("main_module.bootstrap", ["foo/bar/main.js", "dart_sdk"], '
|
||||
@ -33,7 +33,7 @@ void main() {
|
||||
test('generateMainModule includes null safety switches', () {
|
||||
final String result = generateMainModule(
|
||||
entrypoint: 'foo/bar/main.js',
|
||||
nullSafety: true,
|
||||
nullAssertions: true,
|
||||
);
|
||||
|
||||
expect(result, contains(
|
||||
|
||||
@ -462,6 +462,7 @@ void main() {
|
||||
urlTunneller: null,
|
||||
useSseForDebugProxy: true,
|
||||
useSseForDebugBackend: true,
|
||||
nullAssertions: true,
|
||||
buildInfo: const BuildInfo(
|
||||
BuildMode.debug,
|
||||
'',
|
||||
@ -574,6 +575,7 @@ void main() {
|
||||
urlTunneller: null,
|
||||
useSseForDebugProxy: true,
|
||||
useSseForDebugBackend: true,
|
||||
nullAssertions: true,
|
||||
buildInfo: const BuildInfo(
|
||||
BuildMode.debug,
|
||||
'',
|
||||
@ -689,6 +691,7 @@ void main() {
|
||||
testMode: true,
|
||||
expressionCompiler: null,
|
||||
chromiumLauncher: null,
|
||||
nullAssertions: true,
|
||||
);
|
||||
webDevFS.requireJS.createSync(recursive: true);
|
||||
webDevFS.stackTraceMapper.createSync(recursive: true);
|
||||
@ -725,6 +728,7 @@ void main() {
|
||||
urlTunneller: null,
|
||||
useSseForDebugProxy: true,
|
||||
useSseForDebugBackend: true,
|
||||
nullAssertions: true,
|
||||
buildInfo: const BuildInfo(
|
||||
BuildMode.debug,
|
||||
'',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user