Version 2.12.0-222.0.dev

Merge commit '07fa8a6589d4be392e4566c400ec1d09e06235f2' into 'dev'
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index fb3f3c8..8085f69 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -16,6 +16,7 @@
 import 'package:kernel/class_hierarchy.dart';
 import 'package:kernel/core_types.dart';
 import 'package:kernel/kernel.dart' hide MapEntry;
+import 'package:kernel/ast.dart' show NonNullableByDefaultCompiledMode;
 import 'package:kernel/target/targets.dart';
 import 'package:kernel/text/ast_to_text.dart' as kernel show Printer;
 import 'package:path/path.dart' as p;
@@ -707,7 +708,11 @@
 ModuleMetadata _emitMetadata(js_ast.Program program, Component component,
     String sourceMapUri, String moduleUri) {
   var metadata = ModuleMetadata(
-      program.name, loadFunctionName(program.name), sourceMapUri, moduleUri);
+      program.name,
+      loadFunctionName(program.name),
+      sourceMapUri,
+      moduleUri,
+      component.mode == NonNullableByDefaultCompiledMode.Strong);
 
   for (var lib in component.libraries) {
     metadata.addLibrary(LibraryMetadata(
diff --git a/pkg/dev_compiler/lib/src/kernel/module_metadata.dart b/pkg/dev_compiler/lib/src/kernel/module_metadata.dart
index 29496ff..deca70b 100644
--- a/pkg/dev_compiler/lib/src/kernel/module_metadata.dart
+++ b/pkg/dev_compiler/lib/src/kernel/module_metadata.dart
@@ -29,7 +29,7 @@
   ///
   /// TODO(annagrin): create metadata package, make version the same as the
   /// metadata package version, automate updating with the package update
-  static const ModuleMetadataVersion current = ModuleMetadataVersion(1, 0, 0);
+  static const ModuleMetadataVersion current = ModuleMetadataVersion(1, 0, 1);
 
   /// Current metadata version created by the reader
   String get version => '$majorVersion.$minorVersion.$patchVersion';
@@ -126,7 +126,12 @@
 
   final Map<String, LibraryMetadata> libraries = {};
 
+  /// True if the module corresponding to this metadata was compiled with sound
+  /// null safety enabled.
+  final bool soundNullSafety;
+
   ModuleMetadata(this.name, this.closureName, this.sourceMapUri, this.moduleUri,
+      this.soundNullSafety,
       {this.version}) {
     version ??= ModuleMetadataVersion.current.version;
   }
@@ -151,7 +156,8 @@
         name = json['name'] as String,
         closureName = json['closureName'] as String,
         sourceMapUri = json['sourceMapUri'] as String,
-        moduleUri = json['moduleUri'] as String {
+        moduleUri = json['moduleUri'] as String,
+        soundNullSafety = json['soundNullSafety'] as bool {
     var fileVersion = json['version'] as String;
     if (!ModuleMetadataVersion.current.isCompatibleWith(version)) {
       throw Exception('Unsupported metadata version $fileVersion');
@@ -169,7 +175,8 @@
       'closureName': closureName,
       'sourceMapUri': sourceMapUri,
       'moduleUri': moduleUri,
-      'libraries': [for (var lib in libraries.values) lib.toJson()]
+      'libraries': [for (var lib in libraries.values) lib.toJson()],
+      'soundNullSafety': soundNullSafety
     };
   }
 }
diff --git a/pkg/dev_compiler/test/module_metadata_test.dart b/pkg/dev_compiler/test/module_metadata_test.dart
index 2751e94..06054cf 100644
--- a/pkg/dev_compiler/test/module_metadata_test.dart
+++ b/pkg/dev_compiler/test/module_metadata_test.dart
@@ -114,7 +114,7 @@
 }
 
 ModuleMetadata createMetadata(String version) => ModuleMetadata(
-    'module', 'closure', 'module.map', 'module.js', version: version)
+    'module', 'closure', 'module.map', 'module.js', true, version: version)
   ..addLibrary(LibraryMetadata('library', 'package:library/test.dart',
       'file:///source/library/lib/test.dart', ['src/test2.dart']));
 
@@ -125,6 +125,7 @@
   expect(module.closureName, 'closure');
   expect(module.sourceMapUri, 'module.map');
   expect(module.moduleUri, 'module.js');
+  expect(module.soundNullSafety, true);
 
   var libUri = module.libraries.keys.first;
   var lib = module.libraries[libUri];
diff --git a/tools/VERSION b/tools/VERSION
index 2303823..24e845f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 221
+PRERELEASE 222
 PRERELEASE_PATCH 0
\ No newline at end of file