diff --git a/pkg/compiler/lib/src/diagnostics/generated/shared_messages.dart b/pkg/compiler/lib/src/diagnostics/generated/shared_messages.dart
deleted file mode 100644
index 467a5bf..0000000
--- a/pkg/compiler/lib/src/diagnostics/generated/shared_messages.dart
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-/*
-DON'T EDIT. GENERATED. DON'T EDIT.
-This file has been generated by 'publish.dart' in the dart_messages package.
-
-Messages are maintained in `lib/shared_messages.dart` of that same package.
-After any change to that file, run `bin/publish.dart` to generate a new version
-of the json, dart2js and analyzer representations.
-*/
-import '../messages.dart' show MessageKind, MessageTemplate;
-
-const Map<MessageKind, MessageTemplate> TEMPLATES =
-    const <MessageKind, MessageTemplate>{
-  MessageKind.CONST_CONSTRUCTOR_WITH_BODY: const MessageTemplate(
-      MessageKind.CONST_CONSTRUCTOR_WITH_BODY,
-      "Const constructor can't have a body.",
-      howToFix: "Try removing the 'const' keyword or the body.",
-      examples: const [
-        r"""
-         class C {
-           const C() {}
-         }
-
-         main() => new C();""",
-      ]), // Generated. Don't edit.
-  MessageKind.CONST_FACTORY: const MessageTemplate(MessageKind.CONST_FACTORY,
-      "Only redirecting factory constructors can be declared to be 'const'.",
-      howToFix:
-          "Try removing the 'const' keyword or replacing the body with '=' followed by a valid target.",
-      examples: const [
-        r"""
-         class C {
-           const factory C() {}
-         }
-
-         main() => new C();""",
-      ]), // Generated. Don't edit.
-  MessageKind.EXTRANEOUS_MODIFIER: const MessageTemplate(
-      MessageKind.EXTRANEOUS_MODIFIER,
-      "Can't have modifier '#{modifier}' here.",
-      howToFix: "Try removing '#{modifier}'.",
-      examples: const [
-        "var String foo; main(){}",
-        "var final foo; main(){}",
-        "var var foo; main(){}",
-        "var const foo; main(){}",
-        "var abstract foo; main(){}",
-        "var static foo; main(){}",
-        "var external foo; main(){}",
-        "final var foo; main(){}",
-        "var var foo; main(){}",
-        "const var foo; main(){}",
-        "abstract var foo; main(){}",
-        "static var foo; main(){}",
-        "external var foo; main(){}",
-      ]), // Generated. Don't edit.
-  MessageKind.EXTRANEOUS_MODIFIER_REPLACE: const MessageTemplate(
-      MessageKind.EXTRANEOUS_MODIFIER_REPLACE,
-      "Can't have modifier '#{modifier}' here.",
-      howToFix:
-          "Try replacing modifier '#{modifier}' with 'var', 'final', or a type.",
-      examples: const [
-        "set foo; main(){}",
-        "abstract foo; main(){}",
-        "static foo; main(){}",
-        "external foo; main(){}",
-      ]), // Generated. Don't edit.
-  MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE: const MessageTemplate(
-      MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE,
-      "Constructors can't have a return type.",
-      howToFix: "Try removing the return type.",
-      examples: const [
-        "class A { int A() {} } main() { new A(); }",
-      ]), // Generated. Don't edit.
-  MessageKind.MISSING_EXPRESSION_IN_THROW: const MessageTemplate(
-      MessageKind.MISSING_EXPRESSION_IN_THROW,
-      "Missing expression after 'throw'.",
-      howToFix: "Did you mean 'rethrow'?"), // Generated. Don't edit.
-  MessageKind.RETHROW_OUTSIDE_CATCH: const MessageTemplate(
-      MessageKind.RETHROW_OUTSIDE_CATCH,
-      "Rethrow must be inside of catch clause.",
-      howToFix:
-          "Try moving the expression into a catch clause, or using a 'throw' expression.",
-      examples: const [
-        "main() { rethrow; }",
-      ]), // Generated. Don't edit.
-  MessageKind.RETURN_IN_GENERATIVE_CONSTRUCTOR: const MessageTemplate(
-      MessageKind.RETURN_IN_GENERATIVE_CONSTRUCTOR,
-      "Constructors can't return values.",
-      howToFix:
-          "Try removing the return statement or using a factory constructor.",
-      examples: const [
-        r"""
-        class C {
-          C() {
-            return 1;
-          }
-        }
-
-        main() => new C();""",
-      ]), // Generated. Don't edit.
-  MessageKind.RETURN_IN_GENERATOR: const MessageTemplate(
-      MessageKind.RETURN_IN_GENERATOR,
-      "Can't return a value from a generator function (using the '#{modifier}' modifier).",
-      howToFix:
-          "Try removing the value, replacing 'return' with 'yield' or changing the method body modifier.",
-      examples: const [
-        r"""
-        foo() async* { return 0; }
-        main() => foo();
-        """,
-        r"""
-        foo() sync* { return 0; }
-        main() => foo();
-        """,
-      ]), // Generated. Don't edit.
-  MessageKind.NOT_ASSIGNABLE: const MessageTemplate(MessageKind.NOT_ASSIGNABLE,
-      "'#{fromType}' is not assignable to '#{toType}'."), // Generated. Don't edit.
-  MessageKind.FORIN_NOT_ASSIGNABLE: const MessageTemplate(
-      MessageKind.FORIN_NOT_ASSIGNABLE,
-      "The element type '#{currentType}' of '#{expressionType}' is not assignable to '#{elementType}'.",
-      examples: const [
-        r"""
-        main() {
-          List<int> list = <int>[1, 2];
-          for (String x in list) x;
-        }
-        """,
-      ]), // Generated. Don't edit.
-  MessageKind.CANNOT_RESOLVE: const MessageTemplate(MessageKind.CANNOT_RESOLVE,
-      "Can't resolve '#{name}'."), // Generated. Don't edit.
-  MessageKind.UNDEFINED_METHOD: const MessageTemplate(
-      MessageKind.UNDEFINED_METHOD,
-      "The method '#{memberName}' is not defined for the class '#{className}'.",
-      examples: const [
-        r"""
-        class A {
-          foo() { bar(); }
-        }
-        main() { new A().foo(); }
-        """,
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_GETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_GETTER,
-      "The getter '#{memberName}' is not defined for the class '#{className}'.",
-      examples: const [
-        "class A {} main() { new A().x; }",
-        "class A {} main() { A.x; }",
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_INSTANCE_GETTER_BUT_SETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_INSTANCE_GETTER_BUT_SETTER,
-      "The setter '#{memberName}' in class '#{className}' can not be used as a getter.",
-      examples: const [
-        "class A { set x(y) {} } main() { new A().x; }",
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_OPERATOR: const MessageTemplate(
-      MessageKind.UNDEFINED_OPERATOR,
-      "The operator '#{memberName}' is not defined for the class '#{className}'.",
-      examples: const [
-        "class A {} main() { new A() + 3; }",
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_SETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_SETTER,
-      "The setter '#{memberName}' is not defined for the class '#{className}'.",
-      examples: const [
-        "class A {} main() { new A().x = 499; }",
-      ]), // Generated. Don't edit.
-  MessageKind.NO_SUCH_SUPER_MEMBER: const MessageTemplate(
-      MessageKind.NO_SUCH_SUPER_MEMBER,
-      "Can't resolve '#{memberName}' in a superclass of '#{className}'."), // Generated. Don't edit.
-  MessageKind.UNDEFINED_SUPER_SETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_SUPER_SETTER,
-      "The setter '#{memberName}' is not defined in a superclass of '#{className}'.",
-      examples: const [
-        r"""
-        class A {}
-        class B extends A {
-          foo() { super.x = 499; }
-        }
-        main() { new B().foo(); }
-        """,
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_STATIC_GETTER_BUT_SETTER,
-      "Cannot resolve getter '#{name}'.",
-      examples: const [
-        "set foo(x) {}  main() { foo; }",
-      ]), // Generated. Don't edit.
-  MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER: const MessageTemplate(
-      MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER,
-      "Cannot resolve setter '#{name}'.",
-      examples: const [
-        r"""
-        main() {
-          final x = 1;
-          x = 2;
-        }""",
-        r"""
-        main() {
-          const x = 1;
-          x = 2;
-        }
-        """,
-        r"""
-        final x = 1;
-        main() { x = 3; }
-        """,
-        r"""
-        const x = 1;
-        main() { x = 3; }
-        """,
-        "get foo => null  main() { foo = 5; }",
-        "const foo = 0  main() { foo = 5; }",
-      ]), // Generated. Don't edit.
-};
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index ffffde6..e4cf222 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -14,7 +14,6 @@
 /// location of the existing element.
 library dart2js.messages;
 
-import 'generated/shared_messages.dart' as shared_messages;
 import '../commandline_options.dart';
 import '../options.dart';
 import 'invariant.dart' show failedAt;
@@ -25,81 +24,23 @@
 /// Keys for the [MessageTemplate]s.
 enum MessageKind {
   ABSTRACT_GETTER,
-  CANNOT_RESOLVE,
   COMPILER_CRASHED,
   COMPLEX_RETURNING_NSM,
   COMPLEX_THROWING_NSM,
-  CONST_CONSTRUCTOR_WITH_BODY,
-  CONST_FACTORY,
-  CONSTRUCTOR_WITH_RETURN_TYPE,
-  CYCLIC_COMPILE_TIME_CONSTANTS,
   DIRECTLY_THROWING_NSM,
-  EQUAL_MAP_ENTRY_KEY,
-  EQUAL_SET_ENTRY,
-  EXTRANEOUS_MODIFIER,
-  EXTRANEOUS_MODIFIER_REPLACE,
-  FORIN_NOT_ASSIGNABLE,
   GENERIC,
   HIDDEN_HINTS,
   HIDDEN_WARNINGS,
   HIDDEN_WARNINGS_HINTS,
-  IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED,
-  INVALID_ASSERT_VALUE,
-  INVALID_ASSERT_VALUE_MESSAGE,
-  INVALID_BOOL_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-  INVALID_CONSTANT_CAST,
-  INVALID_CONSTANT_ADD_TYPES,
-  INVALID_CONSTANT_BINARY_INT_TYPE,
-  INVALID_CONSTANT_BINARY_NUM_TYPE,
-  INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE,
-  INVALID_CONSTANT_COMPLEMENT_TYPE,
-  INVALID_CONSTANT_CONDITIONAL_TYPE,
-  INVALID_CONSTANT_CONSTRUCTOR,
-  INVALID_CONSTANT_DIV,
-  INVALID_CONSTANT_INDEX,
-  INVALID_CONSTANT_INTERPOLATION_TYPE,
-  INVALID_CONSTANT_NEGATE_TYPE,
-  INVALID_CONSTANT_NOT_TYPE,
-  INVALID_CONSTANT_STRING_ADD_TYPE,
-  INVALID_CONSTANT_NUM_ADD_TYPE,
-  INVALID_CONSTANT_STRING_LENGTH_TYPE,
-  INVALID_CONSTANT_SHIFT,
-  INVALID_FROM_ENVIRONMENT_NAME_TYPE,
-  INVALID_INT_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-  INVALID_LOGICAL_AND_OPERAND_TYPE,
-  INVALID_LOGICAL_OR_OPERAND_TYPE,
   INVALID_METADATA,
   INVALID_METADATA_GENERIC,
-  INVALID_PACKAGE_CONFIG,
-  INVALID_PACKAGE_URI,
-  INVALID_STRING_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-  JS_INTEROP_FIELD_NOT_SUPPORTED,
-  JS_INTEROP_NON_EXTERNAL_MEMBER,
-  JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMENTS,
   JS_PLACEHOLDER_CAPTURE,
-  LIBRARY_NOT_FOUND,
-  MIRRORS_LIBRARY_NOT_SUPPORT_WITH_CFE,
-  MISSING_EXPRESSION_IN_THROW,
   NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS,
-  NO_SUCH_SUPER_MEMBER,
   NON_NATIVE_EXTERNAL,
-  NOT_A_COMPILE_TIME_CONSTANT,
-  NOT_ASSIGNABLE,
   PLEASE_REPORT_THE_CRASH,
   PREAMBLE,
-  RETHROW_OUTSIDE_CATCH,
-  RETURN_IN_GENERATIVE_CONSTRUCTOR,
-  RETURN_IN_GENERATOR,
   RUNTIME_TYPE_TO_STRING,
   STRING_EXPECTED,
-  UNDEFINED_GETTER,
-  UNDEFINED_INSTANCE_GETTER_BUT_SETTER,
-  UNDEFINED_METHOD,
-  UNDEFINED_OPERATOR,
-  UNDEFINED_SETTER,
-  UNDEFINED_STATIC_GETTER_BUT_SETTER,
-  UNDEFINED_STATIC_SETTER_BUT_GETTER,
-  UNDEFINED_SUPER_SETTER,
   WRONG_ARGUMENT_FOR_JS,
   WRONG_ARGUMENT_FOR_JS_FIRST,
   WRONG_ARGUMENT_FOR_JS_SECOND,
@@ -143,174 +84,80 @@
   ///
   /// The map is complete mapping from [MessageKind] to their corresponding
   /// [MessageTemplate].
-  // The key type is a union of MessageKind and SharedMessageKind.
-  static final Map<dynamic, MessageTemplate> TEMPLATES = <dynamic,
-      MessageTemplate>{}
-    ..addAll(shared_messages.TEMPLATES)
-    ..addAll(const <MessageKind, MessageTemplate>{
-      /// Do not use this. It is here for legacy and debugging. It violates item
-      /// 4 of the guide lines for error messages in the beginning of the file.
-      MessageKind.GENERIC: MessageTemplate(MessageKind.GENERIC, '#{text}'),
+  static const Map<MessageKind, MessageTemplate> TEMPLATES = {
+    /// Do not use this. It is here for legacy and debugging. It violates item
+    /// 4 of the guide lines for error messages in the beginning of the file.
+    MessageKind.GENERIC: MessageTemplate(MessageKind.GENERIC, '#{text}'),
 
-      MessageKind.CANNOT_RESOLVE: MessageTemplate(
-          MessageKind.CANNOT_RESOLVE, "Cannot resolve '#{name}'."),
+    MessageKind.STRING_EXPECTED: MessageTemplate(MessageKind.STRING_EXPECTED,
+        "Expected a 'String', but got an instance of '#{type}'."),
 
-      MessageKind.NOT_A_COMPILE_TIME_CONSTANT: MessageTemplate(
-          MessageKind.NOT_A_COMPILE_TIME_CONSTANT,
-          "Not a compile-time constant."),
+    MessageKind.JS_PLACEHOLDER_CAPTURE: MessageTemplate(
+        MessageKind.JS_PLACEHOLDER_CAPTURE,
+        "JS code must not use '#' placeholders inside functions.",
+        howToFix: "Use an immediately called JavaScript function to capture the"
+            " the placeholder values as JavaScript function parameters."),
 
-      MessageKind.CYCLIC_COMPILE_TIME_CONSTANTS: MessageTemplate(
-          MessageKind.CYCLIC_COMPILE_TIME_CONSTANTS,
-          "Cycle in the compile-time constant computation."),
+    MessageKind.WRONG_ARGUMENT_FOR_JS: MessageTemplate(
+        MessageKind.WRONG_ARGUMENT_FOR_JS,
+        "JS expression must take two or more arguments."),
 
-      MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER: MessageTemplate(
-          MessageKind.UNDEFINED_STATIC_SETTER_BUT_GETTER,
-          "Cannot resolve setter."),
+    MessageKind.WRONG_ARGUMENT_FOR_JS_FIRST: MessageTemplate(
+        MessageKind.WRONG_ARGUMENT_FOR_JS_FIRST,
+        "JS expression must take two or more arguments."),
 
-      MessageKind.STRING_EXPECTED: MessageTemplate(MessageKind.STRING_EXPECTED,
-          "Expected a 'String', but got an instance of '#{type}'."),
+    MessageKind.WRONG_ARGUMENT_FOR_JS_SECOND: MessageTemplate(
+        MessageKind.WRONG_ARGUMENT_FOR_JS_SECOND,
+        "JS second argument must be a string literal."),
 
-      MessageKind.JS_INTEROP_NON_EXTERNAL_MEMBER: MessageTemplate(
-          MessageKind.JS_INTEROP_NON_EXTERNAL_MEMBER,
-          "Js-interop members must be 'external'."),
+    MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT: MessageTemplate(
+        MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT,
+        "Argument for 'JS_INTERCEPTOR_CONSTANT' must be a type constant."),
 
-      MessageKind.IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED: MessageTemplate(
-          MessageKind.IMPLICIT_JS_INTEROP_FIELD_NOT_SUPPORTED,
-          "Fields in js-interop classes are not supported.",
-          howToFix: "Try replacing the field with an "
-              "external getter and/or setter."),
-      MessageKind.JS_INTEROP_FIELD_NOT_SUPPORTED: MessageTemplate(
-          MessageKind.JS_INTEROP_FIELD_NOT_SUPPORTED,
-          "Field can't be marked as js-interop.",
-          howToFix: "Try replacing the field with an "
-              "external getter and/or setter."),
-
-      MessageKind.LIBRARY_NOT_FOUND: MessageTemplate(
-          MessageKind.LIBRARY_NOT_FOUND, "Library not found '#{resolvedUri}'."),
-
-      MessageKind.INVALID_PACKAGE_CONFIG: MessageTemplate(
-          MessageKind.INVALID_PACKAGE_CONFIG,
-          """Package config file '#{uri}' is invalid.
-#{exception}""",
-          howToFix: DONT_KNOW_HOW_TO_FIX),
-
-      MessageKind.INVALID_PACKAGE_URI: MessageTemplate(
-          MessageKind.INVALID_PACKAGE_URI,
-          "'#{uri}' is not a valid package URI (#{exception}).",
-          howToFix: DONT_KNOW_HOW_TO_FIX,
-          examples: [
-            """
-// can't have a 'top level' package URI
-import 'package:foo.dart';
-
-main() {}
-""",
-            """
-// can't have 2 slashes
-import 'package://foo/foo.dart';
-
-main() {}
-""",
-            """
-// package name must be valid
-import 'package:not\valid/foo.dart';
-
-main() {}
-"""
-          ]),
-
-      MessageKind.JS_PLACEHOLDER_CAPTURE: MessageTemplate(
-          MessageKind.JS_PLACEHOLDER_CAPTURE,
-          "JS code must not use '#' placeholders inside functions.",
-          howToFix:
-              "Use an immediately called JavaScript function to capture the"
-              " the placeholder values as JavaScript function parameters."),
-
-      MessageKind.WRONG_ARGUMENT_FOR_JS: MessageTemplate(
-          MessageKind.WRONG_ARGUMENT_FOR_JS,
-          "JS expression must take two or more arguments."),
-
-      MessageKind.WRONG_ARGUMENT_FOR_JS_FIRST: MessageTemplate(
-          MessageKind.WRONG_ARGUMENT_FOR_JS_FIRST,
-          "JS expression must take two or more arguments."),
-
-      MessageKind.WRONG_ARGUMENT_FOR_JS_SECOND: MessageTemplate(
-          MessageKind.WRONG_ARGUMENT_FOR_JS_SECOND,
-          "JS second argument must be a string literal."),
-
-      MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT: MessageTemplate(
-          MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT,
-          "Argument for 'JS_INTERCEPTOR_CONSTANT' must be a type constant."),
-
-      MessageKind.ABSTRACT_GETTER: MessageTemplate(
-          MessageKind.ABSTRACT_GETTER,
-          "The getter '#{name}' has no implementation in "
-          "class '#{class}'.",
-          howToFix: "Try adding a body to '#{name}' or declaring "
-              "'#{class}' to be 'abstract'.",
-          examples: [
-            """
+    MessageKind.ABSTRACT_GETTER: MessageTemplate(
+        MessageKind.ABSTRACT_GETTER,
+        "The getter '#{name}' has no implementation in "
+        "class '#{class}'.",
+        howToFix: "Try adding a body to '#{name}' or declaring "
+            "'#{class}' to be 'abstract'.",
+        examples: [
+          """
 class Class {
   get getter;
 }
 main() => new Class();
 """
-          ]),
+        ]),
 
-      MessageKind.INVALID_METADATA: MessageTemplate(
-          MessageKind.INVALID_METADATA,
-          "A metadata annotation must be either a reference to a compile-time "
-          "constant variable or a call to a constant constructor.",
-          howToFix:
-              "Try using a different constant value or referencing it through a "
-              "constant variable.",
-          examples: ['@Object main() {}', '@print main() {}']),
+    MessageKind.INVALID_METADATA: MessageTemplate(
+        MessageKind.INVALID_METADATA,
+        "A metadata annotation must be either a reference to a compile-time "
+        "constant variable or a call to a constant constructor.",
+        howToFix:
+            "Try using a different constant value or referencing it through a "
+            "constant variable.",
+        examples: ['@Object main() {}', '@print main() {}']),
 
-      MessageKind.INVALID_METADATA_GENERIC: MessageTemplate(
-          MessageKind.INVALID_METADATA_GENERIC,
-          "A metadata annotation using a constant constructor cannot use type "
-          "arguments.",
-          howToFix:
-              "Try removing the type arguments or referencing the constant "
-              "through a constant variable.",
-          examples: [
-            '''
+    MessageKind.INVALID_METADATA_GENERIC: MessageTemplate(
+        MessageKind.INVALID_METADATA_GENERIC,
+        "A metadata annotation using a constant constructor cannot use type "
+        "arguments.",
+        howToFix: "Try removing the type arguments or referencing the constant "
+            "through a constant variable.",
+        examples: [
+          '''
 class C<T> {
   const C();
 }
 @C<int>() main() {}
 '''
-          ]),
+        ]),
 
-      MessageKind.EQUAL_MAP_ENTRY_KEY: MessageTemplate(
-          MessageKind.EQUAL_MAP_ENTRY_KEY,
-          "An entry with the same key already exists in the map.",
-          howToFix:
-              "Try removing the previous entry or changing the key in one "
-              "of the entries.",
-          examples: [
-            """
-main() {
-  var m = const {'foo': 1, 'foo': 2};
-}"""
-          ]),
+    MessageKind.COMPILER_CRASHED: MessageTemplate(MessageKind.COMPILER_CRASHED,
+        "The compiler crashed when compiling this element."),
 
-      MessageKind.EQUAL_SET_ENTRY: MessageTemplate(
-          MessageKind.EQUAL_SET_ENTRY, "An entry appears twice in the set.",
-          howToFix: "Try removing one of the entries.",
-          examples: [
-            """
-main() {
-  var m = const {'foo', 'bar', 'foo'};
-}"""
-          ]),
-
-      MessageKind.COMPILER_CRASHED: MessageTemplate(
-          MessageKind.COMPILER_CRASHED,
-          "The compiler crashed when compiling this element."),
-
-      MessageKind.PLEASE_REPORT_THE_CRASH:
-          MessageTemplate(MessageKind.PLEASE_REPORT_THE_CRASH, '''
+    MessageKind.PLEASE_REPORT_THE_CRASH:
+        MessageTemplate(MessageKind.PLEASE_REPORT_THE_CRASH, '''
 The compiler is broken.
 
 When compiling the above element, the compiler crashed. It is not
@@ -330,221 +177,77 @@
   below as well as the source location above).
 '''),
 
-      MessageKind.HIDDEN_WARNINGS_HINTS: MessageTemplate(
-          MessageKind.HIDDEN_WARNINGS_HINTS,
-          "#{warnings} warning(s) and #{hints} hint(s) suppressed in #{uri}."),
+    MessageKind.HIDDEN_WARNINGS_HINTS: MessageTemplate(
+        MessageKind.HIDDEN_WARNINGS_HINTS,
+        "#{warnings} warning(s) and #{hints} hint(s) suppressed in #{uri}."),
 
-      MessageKind.HIDDEN_WARNINGS: MessageTemplate(MessageKind.HIDDEN_WARNINGS,
-          "#{warnings} warning(s) suppressed in #{uri}."),
+    MessageKind.HIDDEN_WARNINGS: MessageTemplate(MessageKind.HIDDEN_WARNINGS,
+        "#{warnings} warning(s) suppressed in #{uri}."),
 
-      MessageKind.HIDDEN_HINTS: MessageTemplate(
-          MessageKind.HIDDEN_HINTS, "#{hints} hint(s) suppressed in #{uri}."),
+    MessageKind.HIDDEN_HINTS: MessageTemplate(
+        MessageKind.HIDDEN_HINTS, "#{hints} hint(s) suppressed in #{uri}."),
 
-      MessageKind.PREAMBLE: MessageTemplate(
-          MessageKind.PREAMBLE,
-          "When run on the command-line, the compiled output might"
-          " require a preamble file located in:\n"
-          "  <sdk>/lib/_internal/js_runtime/lib/preambles."),
+    MessageKind.PREAMBLE: MessageTemplate(
+        MessageKind.PREAMBLE,
+        "When run on the command-line, the compiled output might"
+        " require a preamble file located in:\n"
+        "  <sdk>/lib/_internal/js_runtime/lib/preambles."),
 
-      MessageKind.INVALID_CONSTANT_CONDITIONAL_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_CONDITIONAL_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid constant condition. "
-          "Must be a value of type 'bool'."),
+    MessageKind.DIRECTLY_THROWING_NSM: MessageTemplate(
+        MessageKind.DIRECTLY_THROWING_NSM,
+        "This 'noSuchMethod' implementation is guaranteed to throw an "
+        "exception. The generated code will be smaller if it is "
+        "rewritten.",
+        howToFix: "Rewrite to "
+            "'noSuchMethod(Invocation i) => super.noSuchMethod(i);'."),
 
-      MessageKind.INVALID_CONSTANT_INTERPOLATION_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_INTERPOLATION_TYPE,
-          "`#{constant}` of type '#{type}' is not valid in constant string "
-          "interpolation. Must be a value of type 'bool', 'int', 'double', "
-          "or 'String'."),
+    MessageKind.COMPLEX_THROWING_NSM: MessageTemplate(
+        MessageKind.COMPLEX_THROWING_NSM,
+        "This 'noSuchMethod' implementation is guaranteed to throw an "
+        "exception. The generated code will be smaller and the compiler "
+        "will be able to perform more optimizations if it is rewritten.",
+        howToFix: "Rewrite to "
+            "'noSuchMethod(Invocation i) => super.noSuchMethod(i);'."),
 
-      MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant binary #{operator} expression. Must be a value of type "
-          "'bool', 'int', 'double', 'String', or 'Null'."),
+    MessageKind.COMPLEX_RETURNING_NSM: MessageTemplate(
+        MessageKind.COMPLEX_RETURNING_NSM,
+        "Overriding 'noSuchMethod' causes the compiler to generate "
+        "more code and prevents the compiler from doing some optimizations.",
+        howToFix: "Consider removing this 'noSuchMethod' implementation."),
 
-      MessageKind.INVALID_CONSTANT_STRING_ADD_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_STRING_ADD_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant binary + expression on 'String'. Must be a value of type "
-          "'String'."),
+    MessageKind.RUNTIME_TYPE_TO_STRING: MessageTemplate(
+        MessageKind.RUNTIME_TYPE_TO_STRING,
+        "Using '.runtimeType.toString()' causes the compiler to generate "
+        "more code because it needs to preserve type arguments on "
+        "generic classes, even if they are not necessary elsewhere.",
+        howToFix: "If used only for debugging, consider using option "
+            "${Flags.laxRuntimeTypeToString} to reduce the code size "
+            "impact."),
 
-      MessageKind.INVALID_CONSTANT_STRING_LENGTH_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_STRING_LENGTH_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand for a "
-          ".length expression. Must be a value of type 'String'."),
+    MessageKind.NON_NATIVE_EXTERNAL: MessageTemplate(
+        MessageKind.NON_NATIVE_EXTERNAL,
+        "Non-native external members must be js-interop.",
+        howToFix: "Try removing the 'external' keyword, making it 'native', or "
+            "annotating the function as a js-interop function."),
 
-      MessageKind.INVALID_CONSTANT_SHIFT: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_SHIFT,
-          "Shift amount must be non-negative in "
-          "`#{left} #{operator} #{right}`."),
+    MessageKind.NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS: MessageTemplate(
+        MessageKind.NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS,
+        "Native non-instance members are only allowed in native classes."),
 
-      MessageKind.INVALID_CONSTANT_DIV: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_DIV,
-          "Divisor must be non-zero in `#{left} #{operator} #{right}`."),
-
-      MessageKind.INVALID_CONSTANT_NUM_ADD_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_NUM_ADD_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant binary + expression on 'num'. Must be a value of type "
-          "'int' or 'double'."),
-
-      MessageKind.INVALID_CONSTANT_CAST: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_CAST,
-          "`#{constant}` of type '#{type}' is not a subtype of #{castType}."),
-
-      MessageKind.INVALID_CONSTANT_ADD_TYPES: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_ADD_TYPES,
-          "`#{leftConstant}` of type '#{leftType}' and "
-          "`#{rightConstant}` of type '#{rightType}' are not valid operands "
-          "of a constant binary + expression. Must both be either of "
-          "type 'String', or of types 'int' or 'double'."),
-
-      MessageKind.INVALID_CONSTANT_BINARY_NUM_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_BINARY_NUM_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant binary #{operator} expression. Must be a value of type "
-          "'int' or 'double'."),
-
-      MessageKind.INVALID_CONSTANT_BINARY_INT_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_BINARY_INT_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant binary #{operator} expression. Must be a value of type "
-          "'int'."),
-
-      MessageKind.INVALID_CONSTANT_NOT_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_NOT_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant unary #{operator} expression. Must be a value of type "
-          "'bool'."),
-
-      MessageKind.INVALID_CONSTANT_NEGATE_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_NEGATE_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant unary #{operator} expression. Must be a value of type "
-          "'int' or 'double'."),
-
-      MessageKind.INVALID_CONSTANT_COMPLEMENT_TYPE: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_COMPLEMENT_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid operand of a "
-          "constant unary #{operator} expression. Must be a value of type "
-          "'int'."),
-
-      MessageKind.INVALID_CONSTANT_INDEX: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_INDEX,
-          "Index expressions are not allowed in constant expressions."),
-
-      MessageKind.INVALID_FROM_ENVIRONMENT_NAME_TYPE: MessageTemplate(
-          MessageKind.INVALID_FROM_ENVIRONMENT_NAME_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid environment name "
-          "constant. Must be a value of type 'String'."),
-
-      MessageKind.INVALID_BOOL_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE:
-          MessageTemplate(
-              MessageKind.INVALID_BOOL_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-              "`#{constant}` of type '#{type}' is not a valid "
-              "`bool.fromEnvironment` default value constant. "
-              "Must be a value of type 'bool' or `null`."),
-
-      MessageKind.INVALID_INT_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE:
-          MessageTemplate(
-              MessageKind.INVALID_INT_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-              "`#{constant}` of type '#{type}' is not a valid "
-              "`int.fromEnvironment` default value constant. "
-              "Must be a value of type 'int' or `null`."),
-
-      MessageKind.INVALID_STRING_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE:
-          MessageTemplate(
-              MessageKind.INVALID_STRING_FROM_ENVIRONMENT_DEFAULT_VALUE_TYPE,
-              "`#{constant}` of type '#{type}' is not a valid "
-              "`String.fromEnvironment` default value constant. "
-              "Must be a value of type 'String' or `null`."),
-
-      MessageKind.INVALID_LOGICAL_AND_OPERAND_TYPE: MessageTemplate(
-          MessageKind.INVALID_LOGICAL_AND_OPERAND_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid logical and operand. "
-          "Must be a value of type 'bool'."),
-
-      MessageKind.INVALID_LOGICAL_OR_OPERAND_TYPE: MessageTemplate(
-          MessageKind.INVALID_LOGICAL_OR_OPERAND_TYPE,
-          "`#{constant}` of type '#{type}' is not a valid logical or operand. "
-          "Must be a value of type 'bool'."),
-
-      MessageKind.INVALID_CONSTANT_CONSTRUCTOR: MessageTemplate(
-          MessageKind.INVALID_CONSTANT_CONSTRUCTOR,
-          "Constructor '#{constructorName}' is not a valid constant "
-          "constructor."),
-
-      MessageKind.INVALID_ASSERT_VALUE: MessageTemplate(
-          MessageKind.INVALID_ASSERT_VALUE, "Assertion '#{assertion}' failed."),
-
-      MessageKind.INVALID_ASSERT_VALUE_MESSAGE: MessageTemplate(
-          MessageKind.INVALID_ASSERT_VALUE_MESSAGE,
-          "Assertion failed: #{message}"),
-
-      MessageKind.MIRRORS_LIBRARY_NOT_SUPPORT_WITH_CFE:
-          MessageTemplate(MessageKind.MIRRORS_LIBRARY_NOT_SUPPORT_WITH_CFE, """
-dart2js no longer supports the dart:mirrors library.
-
-APIs from this library will throw a runtime error at this time, but they will
-become a compile-time error in the future."""),
-
-      MessageKind.DIRECTLY_THROWING_NSM: MessageTemplate(
-          MessageKind.DIRECTLY_THROWING_NSM,
-          "This 'noSuchMethod' implementation is guaranteed to throw an "
-          "exception. The generated code will be smaller if it is "
-          "rewritten.",
-          howToFix: "Rewrite to "
-              "'noSuchMethod(Invocation i) => super.noSuchMethod(i);'."),
-
-      MessageKind.COMPLEX_THROWING_NSM: MessageTemplate(
-          MessageKind.COMPLEX_THROWING_NSM,
-          "This 'noSuchMethod' implementation is guaranteed to throw an "
-          "exception. The generated code will be smaller and the compiler "
-          "will be able to perform more optimizations if it is rewritten.",
-          howToFix: "Rewrite to "
-              "'noSuchMethod(Invocation i) => super.noSuchMethod(i);'."),
-
-      MessageKind.COMPLEX_RETURNING_NSM: MessageTemplate(
-          MessageKind.COMPLEX_RETURNING_NSM,
-          "Overriding 'noSuchMethod' causes the compiler to generate "
-          "more code and prevents the compiler from doing some optimizations.",
-          howToFix: "Consider removing this 'noSuchMethod' implementation."),
-
-      MessageKind.RUNTIME_TYPE_TO_STRING: MessageTemplate(
-          MessageKind.RUNTIME_TYPE_TO_STRING,
-          "Using '.runtimeType.toString()' causes the compiler to generate "
-          "more code because it needs to preserve type arguments on "
-          "generic classes, even if they are not necessary elsewhere.",
-          howToFix: "If used only for debugging, consider using option "
-              "${Flags.laxRuntimeTypeToString} to reduce the code size "
-              "impact."),
-
-      MessageKind.NON_NATIVE_EXTERNAL: MessageTemplate(
-          MessageKind.NON_NATIVE_EXTERNAL,
-          "Non-native external members must be js-interop.",
-          howToFix:
-              "Try removing the 'external' keyword, making it 'native', or "
-              "annotating the function as a js-interop function."),
-
-      MessageKind.NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS: MessageTemplate(
-          MessageKind.NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS,
-          "Native non-instance members are only allowed in native classes."),
-
-      // TODO(32557): Remove these when issue 32557 is fixed.
-      MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS: MessageTemplate(
-          MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
-          "'case' expression type '#{type}' overrides 'operator =='."),
-      MessageKind.SWITCH_CASE_FORBIDDEN: MessageTemplate(
-          MessageKind.SWITCH_CASE_FORBIDDEN,
-          "'case' expression may not be of type '#{type}'."),
-      MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL: MessageTemplate(
-          MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
-          "'case' expressions do not all have type '#{type}'."),
-      MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE: MessageTemplate(
-          MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
-          "'case' expression of type '#{type}'."),
-    }); // End of TEMPLATES.
+    // TODO(32557): Remove these when issue 32557 is fixed.
+    MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS: MessageTemplate(
+        MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
+        "'case' expression type '#{type}' overrides 'operator =='."),
+    MessageKind.SWITCH_CASE_FORBIDDEN: MessageTemplate(
+        MessageKind.SWITCH_CASE_FORBIDDEN,
+        "'case' expression may not be of type '#{type}'."),
+    MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL: MessageTemplate(
+        MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
+        "'case' expressions do not all have type '#{type}'."),
+    MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE: MessageTemplate(
+        MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
+        "'case' expression of type '#{type}'."),
+  }; // End of TEMPLATES.
 
   @override
   String toString() => template;
diff --git a/pkg/test_runner/lib/src/configuration.dart b/pkg/test_runner/lib/src/configuration.dart
index 12af614..bf842a4 100644
--- a/pkg/test_runner/lib/src/configuration.dart
+++ b/pkg/test_runner/lib/src/configuration.dart
@@ -412,9 +412,10 @@
             architecture == Architecture.x64 ||
             architecture == Architecture.arm ||
             architecture == Architecture.arm_x64 ||
-            architecture == Architecture.arm64)) {
+            architecture == Architecture.arm64 ||
+            architecture == Architecture.arm64c)) {
       print("Warning: Android only supports the following "
-          "architectures: ia32/x64/arm/arm64/arm_x64.");
+          "architectures: ia32/x64/arm/arm64/arm64c/arm_x64.");
       isValid = false;
     }
 
diff --git a/pkg/test_runner/lib/src/options.dart b/pkg/test_runner/lib/src/options.dart
index 3df3675..2989528 100644
--- a/pkg/test_runner/lib/src/options.dart
+++ b/pkg/test_runner/lib/src/options.dart
@@ -799,6 +799,8 @@
 
       if (configuration.validate()) {
         result.add(configuration);
+      } else if (namedConfiguration == null) {
+        _fail('The named configuration "$namedConfiguration" is invalid.');
       }
     }
 
diff --git a/tools/VERSION b/tools/VERSION
index bff9178..f111647 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 131
+PRERELEASE 132
 PRERELEASE_PATCH 0
\ No newline at end of file
