Version 2.18.0-148.0.dev

Merge commit 'a6fcb56901ee2e12f68295428d4c75e7c57b907e' into 'dev'
diff --git a/DEPS b/DEPS
index c94237f..4db49ee 100644
--- a/DEPS
+++ b/DEPS
@@ -106,7 +106,7 @@
   # For more details, see https://github.com/dart-lang/sdk/issues/30164.
   "dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea",
 
-  "dartdoc_rev": "c58f21042ebd95014c5426a2f34411876685ecc7",
+  "dartdoc_rev": "8549817bb1b59808108e83ef0e513157cb572d2a",
   "devtools_rev": "3c16b8d73120e46958982d94215d499793b972eb",
   "ffi_rev": "0c8364a728cfe4e4ba859c53b99d56b3dbe3add4",
   "file_rev": "0132eeedea2933513bf230513a766a8baeab0c4f",
diff --git a/pkg/analysis_server/test/src/plugin/notification_manager_test.dart b/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
index 5504afb..79665b8 100644
--- a/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
+++ b/pkg/analysis_server/test/src/plugin/notification_manager_test.dart
@@ -90,7 +90,7 @@
     _verifyNavigationParams(serverParams);
   }
 
-  void test_handlePluginNotification_occurences() {
+  void test_handlePluginNotification_occurrences() {
     manager.setSubscriptions({
       server.AnalysisService.OCCURRENCES: {fileA, fileB}
     });
diff --git a/pkg/compiler/lib/src/js/size_estimator.dart b/pkg/compiler/lib/src/js/size_estimator.dart
index e7faf76..e04a3e9 100644
--- a/pkg/compiler/lib/src/js/size_estimator.dart
+++ b/pkg/compiler/lib/src/js/size_estimator.dart
@@ -59,7 +59,7 @@
       // '<typeHolder>$.<type>' where <typeHolder> is a one byte local and
       // <type> is roughly 3 bytes. However, we also have to initialize the type
       // in the holder, some like ab:f("QQ<b7c>"), ie 16 bytes. For two
-      // occurences we will have on average 13 bytes. For a more detailed
+      // occurrences we will have on average 13 bytes. For a more detailed
       // estimate, we'd have to partially finalize the results.
       return '###_###_###_#';
     } else if (node is StringReference) {
diff --git a/pkg/compiler/lib/src/js_backend/frequency_assignment.dart b/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
index d01096c..7acd907 100644
--- a/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
+++ b/pkg/compiler/lib/src/js_backend/frequency_assignment.dart
@@ -42,7 +42,7 @@
 ///
 /// - [hashOf]: Function returning a stable hash code for item `i`.
 ///
-/// - [countOf]: Function returning the frequency or number of occurences of
+/// - [countOf]: Function returning the frequency or number of occurrences of
 ///   item `i`.
 ///
 /// - [assign]: Function to register the assignment of a name to item `i`.
diff --git a/pkg/dds/test/dap/integration/test_client.dart b/pkg/dds/test/dap/integration/test_client.dart
index 8ce631d..1a7c817 100644
--- a/pkg/dds/test/dap/integration/test_client.dart
+++ b/pkg/dds/test/dap/integration/test_client.dart
@@ -582,7 +582,7 @@
       null,
     );
 
-    // For convenience, use the ProtocolList to deserialise the custom
+    // For convenience, use the ProtocolList to deserialize the custom
     // response to check if included DDS.
     final protocolList =
         vm.ProtocolList.parse(response.body as Map<String, Object?>?);
diff --git a/pkg/dds/tool/dap/codegen.dart b/pkg/dds/tool/dap/codegen.dart
index ccb78a6..bd021a5 100644
--- a/pkg/dds/tool/dap/codegen.dart
+++ b/pkg/dds/tool/dap/codegen.dart
@@ -457,7 +457,7 @@
     }
   }
 
-  /// Writes an expression to deserialise a [valueCode].
+  /// Writes an expression to deserialize a [valueCode].
   ///
   /// If [type] represents a spec type, it's `fromJson` function will be called.
   /// If [type] is a [List], it will be mapped over this function again.
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 6311cd6..bdc9ea7 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -871,7 +871,6 @@
 obstruct
 occasionally
 occupied
-occurences
 offending
 ogham
 oked
diff --git a/pkg/kernel/lib/type_algebra.dart b/pkg/kernel/lib/type_algebra.dart
index a0ee467..aa91ae6 100644
--- a/pkg/kernel/lib/type_algebra.dart
+++ b/pkg/kernel/lib/type_algebra.dart
@@ -284,7 +284,7 @@
   /// *not* correspond to a sequence of two substitutions. For example,
   /// combining `{T -> List<G>}` with `{G -> String}` does not correspond to
   /// `{T -> List<String>}` because the result from substituting `T` is not
-  /// searched for occurences of `G`.
+  /// searched for occurrences of `G`.
   static Substitution combine(Substitution first, Substitution second) {
     if (first == _NullSubstitution.instance) return second;
     if (second == _NullSubstitution.instance) return first;
diff --git a/runtime/vm/json_test.cc b/runtime/vm/json_test.cc
index 672369c..8be27b3 100644
--- a/runtime/vm/json_test.cc
+++ b/runtime/vm/json_test.cc
@@ -169,7 +169,7 @@
     JSONObject jsobj(&jsarr);
     jsobj.AddProperty("object_key", Object::Handle(Object::null()));
   }
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* json_str = js.ToCString();
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 207a9a4..b168abc 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -5838,7 +5838,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(PrintJSONPrimitives) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 4096;
   char buffer[kBufferSize];
   Isolate* isolate = Isolate::Current();
diff --git a/runtime/vm/source_report_test.cc b/runtime/vm/source_report_test.cc
index 4e7a409..7acb99b 100644
--- a/runtime/vm/source_report_test.cc
+++ b/runtime/vm/source_report_test.cc
@@ -27,7 +27,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_NoCalls) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -59,7 +59,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_SimpleCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -107,7 +107,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_ForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -157,7 +157,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_NoForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -203,7 +203,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompile) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -250,7 +250,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompileError) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -302,7 +302,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_NestedFunctions) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -362,7 +362,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_RestrictedRange) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -496,7 +496,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_CallSites_SimpleCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -551,7 +551,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_CallSites_PolymorphicCall) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 4096;
   char buffer[kBufferSize];
   const char* kScript =
@@ -675,7 +675,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_MultipleReports) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -731,7 +731,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_PossibleBreakpoints_Simple) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -779,7 +779,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue35453_NoSuchMethod) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -828,7 +828,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue47017_Assert) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -873,7 +873,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_Issue47021_StaticOnlyClasses) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 2048;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1025,7 +1025,7 @@
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_IssueCov341_LateFinalVars) {
   // https://github.com/dart-lang/coverage/issues/341
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1076,7 +1076,7 @@
 ISOLATE_UNIT_TEST_CASE(SourceReport_Coverage_IssueCov386_EnhancedEnums) {
   // https://github.com/dart-lang/coverage/issues/386
   // https://github.com/dart-lang/coverage/issues/377
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript =
@@ -1121,7 +1121,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_Regress95008_RedirectingFactory) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1175,7 +1175,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_if) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1231,7 +1231,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_loops) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1297,7 +1297,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_switch) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
@@ -1351,7 +1351,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(SourceReport_BranchCoverage_try) {
-  // WARNING: This MUST be big enough for the serialised JSON string.
+  // WARNING: This MUST be big enough for the serialized JSON string.
   const int kBufferSize = 1024;
   char buffer[kBufferSize];
   const char* kScript = R"(
diff --git a/sdk/lib/_internal/js_runtime/lib/string_helper.dart b/sdk/lib/_internal/js_runtime/lib/string_helper.dart
index 9305f55..56fead7 100644
--- a/sdk/lib/_internal/js_runtime/lib/string_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/string_helper.dart
@@ -190,7 +190,7 @@
   return result.toString();
 }
 
-/// Replaces all non-overlapping occurences of [pattern] in [receiver] with
+/// Replaces all non-overlapping occurrences of [pattern] in [receiver] with
 /// [replacement].  This should be replace with
 /// (String.prototype.replaceAll)[https://github.com/tc39/proposal-string-replace-all]
 /// when available.
diff --git a/tests/corelib/string_replace_all_common.dart b/tests/corelib/string_replace_all_common.dart
index 4bdbff0..761be56 100644
--- a/tests/corelib/string_replace_all_common.dart
+++ b/tests/corelib/string_replace_all_common.dart
@@ -19,7 +19,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabdaXX", "abcabdae".replaceAll(wrap("e"), "XX"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAll(wrap("f"), "XX"));
 
   // Test when the string to change is the empty string.
@@ -69,7 +69,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabda[e]", "abcabdae".replaceAllMapped(wrap("e"), mark));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAllMapped(wrap("f"), mark));
 
   // Test when the string to change is the empty string.
@@ -109,7 +109,7 @@
   Expect.equals("<abcabda>[e]<>",
       "abcabdae".splitMapJoin(wrap("e"), onMatch: mark, onNonMatch: rest));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("<abcabdae>",
       "abcabdae".splitMapJoin(wrap("f"), onMatch: mark, onNonMatch: rest));
 
diff --git a/tests/corelib/string_replace_test.dart b/tests/corelib/string_replace_test.dart
index 15f0c44..b318a01 100644
--- a/tests/corelib/string_replace_test.dart
+++ b/tests/corelib/string_replace_test.dart
@@ -14,7 +14,7 @@
   // Test with the replaced string at the end.
   Expect.equals("toABtoCDtoEto", "fromABtoCDtoEto".replaceFirst("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirst("from", "to"));
 
   // Test when the string to change is the empty string.
@@ -84,7 +84,7 @@
   Expect.equals("toABtoCDtoEto",
       "fromABtoCDtoEto".replaceFirstMapped("from", (_) => "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirstMapped("from", (_) => "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib/string_test.dart b/tests/corelib/string_test.dart
index f66f16b..8afec78 100644
--- a/tests/corelib/string_test.dart
+++ b/tests/corelib/string_test.dart
@@ -321,7 +321,7 @@
   Expect.equals(
       "toABtoCDtoEto", "fromABfromCDfromEfrom".replaceAll("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceAll("from", "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib_2/string_replace_all_common.dart b/tests/corelib_2/string_replace_all_common.dart
index 780761c..d4deff1 100644
--- a/tests/corelib_2/string_replace_all_common.dart
+++ b/tests/corelib_2/string_replace_all_common.dart
@@ -21,7 +21,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabdaXX", "abcabdae".replaceAll(wrap("e"), "XX"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAll(wrap("f"), "XX"));
 
   // Test when the string to change is the empty string.
@@ -71,7 +71,7 @@
   // Test with the replaced string at the end.
   Expect.equals("abcabda[e]", "abcabdae".replaceAllMapped(wrap("e"), mark));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("abcabdae", "abcabdae".replaceAllMapped(wrap("f"), mark));
 
   // Test when the string to change is the empty string.
@@ -111,7 +111,7 @@
   Expect.equals("<abcabda>[e]<>",
       "abcabdae".splitMapJoin(wrap("e"), onMatch: mark, onNonMatch: rest));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("<abcabdae>",
       "abcabdae".splitMapJoin(wrap("f"), onMatch: mark, onNonMatch: rest));
 
diff --git a/tests/corelib_2/string_replace_test.dart b/tests/corelib_2/string_replace_test.dart
index 49161de..4a7bad9 100644
--- a/tests/corelib_2/string_replace_test.dart
+++ b/tests/corelib_2/string_replace_test.dart
@@ -16,7 +16,7 @@
   // Test with the replaced string at the end.
   Expect.equals("toABtoCDtoEto", "fromABtoCDtoEto".replaceFirst("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirst("from", "to"));
 
   // Test when the string to change is the empty string.
@@ -89,7 +89,7 @@
   Expect.equals("toABtoCDtoEto",
       "fromABtoCDtoEto".replaceFirstMapped("from", (_) => "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceFirstMapped("from", (_) => "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/corelib_2/string_test.dart b/tests/corelib_2/string_test.dart
index 7054a81..d7789e6 100644
--- a/tests/corelib_2/string_test.dart
+++ b/tests/corelib_2/string_test.dart
@@ -323,7 +323,7 @@
   Expect.equals(
       "toABtoCDtoEto", "fromABfromCDfromEfrom".replaceAll("from", "to"));
 
-  // Test when there are no occurence of the string to replace.
+  // Test when there are no occurrence of the string to replace.
   Expect.equals("ABC", "ABC".replaceAll("from", "to"));
 
   // Test when the string to change is the empty string.
diff --git a/tests/web/native/native_missing_method1_frog_test.dart b/tests/web/native/native_missing_method1_frog_test.dart
index 13e8277..d9da3b7 100644
--- a/tests/web/native/native_missing_method1_frog_test.dart
+++ b/tests/web/native/native_missing_method1_frog_test.dart
@@ -22,7 +22,7 @@
 
 class B {
   // We need to define a foo method so that dart2js sees it. Because the
-  // only occurences of 'foo' is on B, a Dart class, no interceptor is used.  It
+  // only occurrences of 'foo' is on B, a Dart class, no interceptor is used.  It
   // thinks all calls will either go to this method, or throw a
   // NoSuchMethodError. It is possible that the native class will shadow a
   // method, but it will not shadow 'foo' because the name is either 'mangled'
diff --git a/tests/web_2/native/native_missing_method1_frog_test.dart b/tests/web_2/native/native_missing_method1_frog_test.dart
index df551ab..a1b2ad8 100644
--- a/tests/web_2/native/native_missing_method1_frog_test.dart
+++ b/tests/web_2/native/native_missing_method1_frog_test.dart
@@ -24,7 +24,7 @@
 
 class B {
   // We need to define a foo method so that dart2js sees it. Because the
-  // only occurences of 'foo' is on B, a Dart class, no interceptor is used.  It
+  // only occurrences of 'foo' is on B, a Dart class, no interceptor is used.  It
   // thinks all calls will either go to this method, or throw a
   // NoSuchMethodError. It is possible that the native class will shadow a
   // method, but it will not shadow 'foo' because the name is either 'mangled'
diff --git a/tools/VERSION b/tools/VERSION
index e0ae251..0611a21 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 147
+PRERELEASE 148
 PRERELEASE_PATCH 0
\ No newline at end of file