Add parser support for `&&` and `||` in patterns.

Previously, the implementation used `&` and `|` for logical-and and
logical-or patterns.  That is being changed to `&&` and `||`.

As a first step, we add support for `&&` and `||`, without removing
support for `&` and `|`.  In a follow-up CL I'll update existing
tests, and then after a day or two I'll remove support for `&` and
`|`.  This should avoid conflicts with other patterns work that's in
progress.

Bug: https://github.com/dart-lang/language/issues/2501
Change-Id: I2d5dc158248160d84e9f0889f5de390b999cbc7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/272861
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index c7a85ff..f71600a 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -1592,7 +1592,7 @@
   void beginBinaryPattern(Token token) {}
 
   /// Called when the parser has consumed a binary pattern, consisting of a LHS
-  /// pattern, `&` or `|` operator, and a RHS pattern.
+  /// pattern, `&`, `&&`, `|`, or `||` operator, and a RHS pattern.
   void endBinaryPattern(Token token) {
     logEvent("BinaryPattern");
   }
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index d467062..52f4c60 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -7243,7 +7243,9 @@
         'as',
         '..',
         '|',
-        '&'
+        '||',
+        '&',
+        '&&'
       ])) {
         // TODO(danrubel): investigate other situations
         // where `?` should be considered part of the type info
@@ -9266,7 +9268,9 @@
           token = next;
           break;
         case '&':
+        case '&&':
         case '|':
+        case '||':
           listener.beginBinaryPattern(next);
           // Left associative so we parse the RHS one precedence level higher
           token = parsePattern(next,
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart b/pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart
index 77d4ef7..937e8e6 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart
@@ -444,7 +444,9 @@
   ',',
   ':',
   '|',
+  '||',
   '&',
+  '&&',
   ')',
   '}',
   ']',
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 6e90ad1..8e83e55 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -1129,9 +1129,14 @@
     DartType matchedType,
     SharedMatchContext context,
   ) {
+    assert(operator.type == TokenType.AMPERSAND ||
+        operator.type == TokenType.AMPERSAND_AMPERSAND ||
+        operator.type == TokenType.BAR ||
+        operator.type == TokenType.BAR_BAR);
     resolverVisitor.analyzeLogicalPattern(
         matchedType, context, this, leftOperand, rightOperand,
-        isAnd: operator.type == TokenType.AMPERSAND);
+        isAnd: operator.type == TokenType.AMPERSAND ||
+            operator.type == TokenType.AMPERSAND_AMPERSAND);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index a8e8242..8a778e4 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -180,7 +180,12 @@
 
   @override
   void visitBinaryPattern(covariant BinaryPatternImpl node) {
-    final isOr = node.operator.type == TokenType.BAR;
+    assert(node.operator.type == TokenType.AMPERSAND ||
+        node.operator.type == TokenType.AMPERSAND_AMPERSAND ||
+        node.operator.type == TokenType.BAR ||
+        node.operator.type == TokenType.BAR_BAR);
+    final isOr = node.operator.type == TokenType.BAR ||
+        node.operator.type == TokenType.BAR_BAR;
     if (isOr) {
       _patternVariables.logicalOrPatternStart();
       node.leftOperand.accept(this);
diff --git a/pkg/analyzer/test/generated/patterns_parser_test.dart b/pkg/analyzer/test/generated/patterns_parser_test.dart
index a9da4ca..b0aedd9 100644
--- a/pkg/analyzer/test/generated/patterns_parser_test.dart
+++ b/pkg/analyzer/test/generated/patterns_parser_test.dart
@@ -618,7 +618,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ as double? & Object? _:
+    case int? _ as double? && Object? _:
       break;
   }
 }
@@ -638,7 +638,7 @@
       name: SimpleIdentifier
         token: double
       question: ?
-  operator: &
+  operator: &&
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -652,7 +652,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ & double? _ as Object?:
+    case int? _ && double? _ as Object?:
       break;
   }
 }
@@ -666,7 +666,7 @@
         token: int
       question: ?
     name: _
-  operator: &
+  operator: &&
   rightOperand: CastPattern
     pattern: VariablePattern
       type: NamedType
@@ -686,7 +686,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ as double? | Object? _:
+    case int? _ as double? || Object? _:
       break;
   }
 }
@@ -706,7 +706,7 @@
       name: SimpleIdentifier
         token: double
       question: ?
-  operator: |
+  operator: ||
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -720,7 +720,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ | double? _ as Object?:
+    case int? _ || double? _ as Object?:
       break;
   }
 }
@@ -734,7 +734,7 @@
         token: int
       question: ?
     name: _
-  operator: |
+  operator: ||
   rightOperand: CastPattern
     pattern: VariablePattern
       type: NamedType
@@ -3693,7 +3693,7 @@
   test_logicalAnd_insideIfCase() {
     _parse('''
 void f(x) {
-  if (x case int? _ & double? _) {}
+  if (x case int? _ && double? _) {}
 }
 ''');
     var node = findNode.caseClause('case');
@@ -3708,7 +3708,7 @@
             token: int
           question: ?
         name: _
-      operator: &
+      operator: &&
       rightOperand: VariablePattern
         type: NamedType
           name: SimpleIdentifier
@@ -3722,7 +3722,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ & double? _ & Object? _:
+    case int? _ && double? _ && Object? _:
       break;
   }
 }
@@ -3737,14 +3737,14 @@
           token: int
         question: ?
       name: _
-    operator: &
+    operator: &&
     rightOperand: VariablePattern
       type: NamedType
         name: SimpleIdentifier
           token: double
         question: ?
       name: _
-  operator: &
+  operator: &&
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -3758,7 +3758,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ & double? _ | Object? _:
+    case int? _ && double? _ || Object? _:
       break;
   }
 }
@@ -3773,14 +3773,14 @@
           token: int
         question: ?
       name: _
-    operator: &
+    operator: &&
     rightOperand: VariablePattern
       type: NamedType
         name: SimpleIdentifier
           token: double
         question: ?
       name: _
-  operator: |
+  operator: ||
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -3794,7 +3794,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ | double? _ & Object? _:
+    case int? _ || double? _ && Object? _:
       break;
   }
 }
@@ -3808,7 +3808,7 @@
         token: int
       question: ?
     name: _
-  operator: |
+  operator: ||
   rightOperand: BinaryPattern
     leftOperand: VariablePattern
       type: NamedType
@@ -3816,7 +3816,7 @@
           token: double
         question: ?
       name: _
-    operator: &
+    operator: &&
     rightOperand: VariablePattern
       type: NamedType
         name: SimpleIdentifier
@@ -3829,7 +3829,7 @@
   test_logicalOr_insideIfCase() {
     _parse('''
 void f(x) {
-  if (x case int? _ | double? _) {}
+  if (x case int? _ || double? _) {}
 }
 ''');
     var node = findNode.caseClause('case');
@@ -3844,7 +3844,7 @@
             token: int
           question: ?
         name: _
-      operator: |
+      operator: ||
       rightOperand: VariablePattern
         type: NamedType
           name: SimpleIdentifier
@@ -3858,7 +3858,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int? _ | double? _ | Object? _:
+    case int? _ || double? _ || Object? _:
       break;
   }
 }
@@ -3873,14 +3873,14 @@
           token: int
         question: ?
       name: _
-    operator: |
+    operator: ||
     rightOperand: VariablePattern
       type: NamedType
         name: SimpleIdentifier
           token: double
         question: ?
       name: _
-  operator: |
+  operator: ||
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -4334,7 +4334,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1! & 2:
+    case 1! && 2:
       break;
   }
 }
@@ -4347,7 +4347,7 @@
       expression: IntegerLiteral
         literal: 1
     operator: !
-  operator: &
+  operator: &&
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -4358,7 +4358,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 & 2!:
+    case 1 && 2!:
       break;
   }
 }
@@ -4369,7 +4369,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: &
+  operator: &&
   rightOperand: PostfixPattern
     operand: ConstantPattern
       expression: IntegerLiteral
@@ -4382,7 +4382,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1! | 2:
+    case 1! || 2:
       break;
   }
 }
@@ -4395,7 +4395,7 @@
       expression: IntegerLiteral
         literal: 1
     operator: !
-  operator: |
+  operator: ||
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -4406,7 +4406,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 | 2!:
+    case 1 || 2!:
       break;
   }
 }
@@ -4417,7 +4417,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: |
+  operator: ||
   rightOperand: PostfixPattern
     operand: ConstantPattern
       expression: IntegerLiteral
@@ -4695,7 +4695,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1? & 2:
+    case 1? && 2:
       break;
   }
 }
@@ -4708,7 +4708,7 @@
       expression: IntegerLiteral
         literal: 1
     operator: ?
-  operator: &
+  operator: &&
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -4719,7 +4719,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 & 2?:
+    case 1 && 2?:
       break;
   }
 }
@@ -4730,7 +4730,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: &
+  operator: &&
   rightOperand: PostfixPattern
     operand: ConstantPattern
       expression: IntegerLiteral
@@ -4743,7 +4743,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1? | 2:
+    case 1? || 2:
       break;
   }
 }
@@ -4756,7 +4756,7 @@
       expression: IntegerLiteral
         literal: 1
     operator: ?
-  operator: |
+  operator: ||
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -4767,7 +4767,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 | 2?:
+    case 1 || 2?:
       break;
   }
 }
@@ -4778,7 +4778,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: |
+  operator: ||
   rightOperand: PostfixPattern
     operand: ConstantPattern
       expression: IntegerLiteral
@@ -6716,7 +6716,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case == 1 & 2:
+    case == 1 && 2:
       break;
   }
 }
@@ -6728,7 +6728,7 @@
     operator: ==
     operand: IntegerLiteral
       literal: 1
-  operator: &
+  operator: &&
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -6739,7 +6739,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 & == 2:
+    case 1 && == 2:
       break;
   }
 }
@@ -6750,7 +6750,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: &
+  operator: &&
   rightOperand: RelationalPattern
     operator: ==
     operand: IntegerLiteral
@@ -6762,7 +6762,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case == 1 | 2:
+    case == 1 || 2:
       break;
   }
 }
@@ -6774,7 +6774,7 @@
     operator: ==
     operand: IntegerLiteral
       literal: 1
-  operator: |
+  operator: ||
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -6785,7 +6785,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 | == 2:
+    case 1 || == 2:
       break;
   }
 }
@@ -6796,7 +6796,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: |
+  operator: ||
   rightOperand: RelationalPattern
     operator: ==
     operand: IntegerLiteral
@@ -7706,7 +7706,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int as & 2:
+    case int as && 2:
       break;
   }
 }
@@ -7719,7 +7719,7 @@
       name: SimpleIdentifier
         token: int
     name: as
-  operator: &
+  operator: &&
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -7730,7 +7730,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 & int as:
+    case 1 && int as:
       break;
   }
 }
@@ -7741,7 +7741,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: &
+  operator: &&
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
@@ -7754,7 +7754,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case int as | 2:
+    case int as || 2:
       break;
   }
 }
@@ -7767,7 +7767,7 @@
       name: SimpleIdentifier
         token: int
     name: as
-  operator: |
+  operator: ||
   rightOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 2
@@ -7778,7 +7778,7 @@
     _parse('''
 void f(x) {
   switch (x) {
-    case 1 | int as:
+    case 1 || int as:
       break;
   }
 }
@@ -7789,7 +7789,7 @@
   leftOperand: ConstantPattern
     expression: IntegerLiteral
       literal: 1
-  operator: |
+  operator: ||
   rightOperand: VariablePattern
     type: NamedType
       name: SimpleIdentifier
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index abf885a..e3d84a0 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -2615,9 +2615,11 @@
     String operator = token.lexeme;
     switch (operator) {
       case '&':
+      case '&&':
         push(new AndPattern(left, right, token.charOffset));
         break;
       case '|':
+      case '||':
         Map<String, VariableDeclaration> leftVariablesByName = {
           for (VariableDeclaration leftVariable in left.declaredVariables)
             leftVariable.name!: leftVariable
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart
index b2351ce..b25f9a9 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ as double? & Object? _:
+    case int? _ as double? && Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.expect
index 2752e9e..f22bc8d 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.expect
@@ -37,12 +37,12 @@
                 handleType(double, ?)
               endAsOperatorType(as)
               handleCastPattern(as)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleIdentifier(Object, typeReference)
                 handleNoTypeArguments(?)
                 handleType(Object, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.intertwined.expect
index 3bbf0f4..f38103f 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.intertwined.expect
@@ -83,15 +83,15 @@
                     listener: handleType(double, ?)
                     listener: endAsOperatorType(as)
                     listener: handleCastPattern(as)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(Object, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(Object, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.parser.expect
index 9ad522d..3ea2b81 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ as double? & Object? _:
+case int? _ as double? && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.scanner.expect
index 9ad522d..3ea2b81 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ as double? & Object? _:
+case int? _ as double? && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart
index 6c32b0e..a56e31a 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ & double? _ as Object?:
+    case int? _ && double? _ as Object?:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.expect
index 41c85e0..03f6122 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.expect
@@ -31,7 +31,7 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
@@ -42,7 +42,7 @@
                   handleType(Object, ?)
                 endAsOperatorType(as)
                 handleCastPattern(as)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.intertwined.expect
index 34273c5..2233b21 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.intertwined.expect
@@ -76,10 +76,10 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
@@ -91,7 +91,7 @@
                       listener: handleType(Object, ?)
                       listener: endAsOperatorType(as)
                       listener: handleCastPattern(as)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(?)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.parser.expect
index 49441a7..4c14d80 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ as Object?:
+case int? _ && double? _ as Object?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.scanner.expect
index 49441a7..4c14d80 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_and_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ as Object?:
+case int? _ && double? _ as Object?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart
index ad7bc01..bd61408 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ as double? | Object? _:
+    case int? _ as double? || Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.expect
index ca2e1e5..b0ea97e 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.expect
@@ -37,12 +37,12 @@
                 handleType(double, ?)
               endAsOperatorType(as)
               handleCastPattern(as)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleIdentifier(Object, typeReference)
                 handleNoTypeArguments(?)
                 handleType(Object, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.intertwined.expect
index 2c93301..8470d81 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.intertwined.expect
@@ -83,15 +83,15 @@
                     listener: handleType(double, ?)
                     listener: endAsOperatorType(as)
                     listener: handleCastPattern(as)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(Object, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(Object, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.parser.expect
index 52ce53b..10ad673 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ as double? | Object? _:
+case int? _ as double? || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.scanner.expect
index 52ce53b..10ad673 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ as double? | Object? _:
+case int? _ as double? || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] double[StringToken]?[SimpleToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart
index 73dc2fb..beec53b 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ | double? _ as Object?:
+    case int? _ || double? _ as Object?:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.expect
index 9440d9b..ec337d6 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.expect
@@ -31,7 +31,7 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
@@ -42,7 +42,7 @@
                   handleType(Object, ?)
                 endAsOperatorType(as)
                 handleCastPattern(as)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.intertwined.expect
index 18de7d1..1fc7fdf 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.intertwined.expect
@@ -76,10 +76,10 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
@@ -91,7 +91,7 @@
                       listener: handleType(Object, ?)
                       listener: endAsOperatorType(as)
                       listener: handleCastPattern(as)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(?)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.parser.expect
index b3b87ab..501eae5 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ as Object?:
+case int? _ || double? _ as Object?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.scanner.expect
index b3b87ab..501eae5 100644
--- a/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/cast_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ as Object?:
+case int? _ || double? _ as Object?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] as[KeywordToken] Object[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart
index e61adeb..ca427f8 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart
@@ -1,3 +1,3 @@
 test(dynamic x) {
-  if (x case int? _ & double? _) {}
+  if (x case int? _ && double? _) {}
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
index 08cef0b..a443956 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.expect
@@ -28,12 +28,12 @@
           handleNoTypeArguments(?)
           handleType(int, ?)
           handleVariablePattern(null, _)
-          beginBinaryPattern(&)
+          beginBinaryPattern(&&)
             handleIdentifier(double, typeReference)
             handleNoTypeArguments(?)
             handleType(double, ?)
             handleVariablePattern(null, _)
-          endBinaryPattern(&)
+          endBinaryPattern(&&)
           handleParenthesizedCondition((, case, null)
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
index 41e1edd..1c74567 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.intertwined.expect
@@ -68,15 +68,15 @@
                           listener: handleNoTypeArguments(?)
                           listener: handleType(int, ?)
                           listener: handleVariablePattern(null, _)
-                      listener: beginBinaryPattern(&)
-                      parsePattern(&, precedence: 7, isRefutableContext: true)
-                        parsePrimaryPattern(&, isRefutableContext: true)
-                          parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                      listener: beginBinaryPattern(&&)
+                      parsePattern(&&, precedence: 7, isRefutableContext: true)
+                        parsePrimaryPattern(&&, isRefutableContext: true)
+                          parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                             listener: handleIdentifier(double, typeReference)
                             listener: handleNoTypeArguments(?)
                             listener: handleType(double, ?)
                             listener: handleVariablePattern(null, _)
-                      listener: endBinaryPattern(&)
+                      listener: endBinaryPattern(&&)
                     ensureCloseParen(_, ()
                     listener: handleParenthesizedCondition((, case, null)
                 listener: beginThenStatement({)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.parser.expect
index d1fb18c..c0516fe 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.parser.expect
@@ -1,9 +1,9 @@
 test(dynamic x) {
-if (x case int? _ & double? _) {}
+if (x case int? _ && double? _) {}
 }
 
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
-if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
 }[SimpleToken]
 [SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.scanner.expect
index d1fb18c..c0516fe 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_if_case.dart.scanner.expect
@@ -1,9 +1,9 @@
 test(dynamic x) {
-if (x case int? _ & double? _) {}
+if (x case int? _ && double? _) {}
 }
 
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
-if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
 }[SimpleToken]
 [SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart
index b8195b3..af4486c 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ & double? _ & Object? _:
+    case int? _ && double? _ && Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.expect
index 4102abd..e37b8ce 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.expect
@@ -31,18 +31,18 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(&)
-              beginBinaryPattern(&)
+              endBinaryPattern(&&)
+              beginBinaryPattern(&&)
                 handleIdentifier(Object, typeReference)
                 handleNoTypeArguments(?)
                 handleType(Object, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.intertwined.expect
index 6a773be..71b1314 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.intertwined.expect
@@ -76,24 +76,24 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(&)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                    listener: endBinaryPattern(&&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(Object, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(Object, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.parser.expect
index d7884cd..ff0eb25 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ & Object? _:
+case int? _ && double? _ && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.scanner.expect
index d7884cd..ff0eb25 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ & Object? _:
+case int? _ && double? _ && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart
index 2864da4..fd308dd 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ & double? _ | Object? _:
+    case int? _ && double? _ || Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.expect
index 5c20466..a0d09fd 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.expect
@@ -31,18 +31,18 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(&)
-              beginBinaryPattern(|)
+              endBinaryPattern(&&)
+              beginBinaryPattern(||)
                 handleIdentifier(Object, typeReference)
                 handleNoTypeArguments(?)
                 handleType(Object, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.intertwined.expect
index 02f84f7..3fd4460 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.intertwined.expect
@@ -76,24 +76,24 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(&)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: endBinaryPattern(&&)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(Object, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(Object, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.parser.expect
index 8e20466..9fe788f 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ | Object? _:
+case int? _ && double? _ || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.scanner.expect
index 8e20466..9fe788f 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ & double? _ | Object? _:
+case int? _ && double? _ || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart
index 08f6ee5..f038c54 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ | double? _ & Object? _:
+    case int? _ || double? _ && Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.expect
index ca50ac1..62b3b2a 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.expect
@@ -31,18 +31,18 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
                 handleVariablePattern(null, _)
-                beginBinaryPattern(&)
+                beginBinaryPattern(&&)
                   handleIdentifier(Object, typeReference)
                   handleNoTypeArguments(?)
                   handleType(Object, ?)
                   handleVariablePattern(null, _)
-                endBinaryPattern(&)
-              endBinaryPattern(|)
+                endBinaryPattern(&&)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.intertwined.expect
index b69c58b..0c70eaf 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.intertwined.expect
@@ -76,24 +76,24 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
                           listener: handleVariablePattern(null, _)
-                      listener: beginBinaryPattern(&)
-                      parsePattern(&, precedence: 7, isRefutableContext: true)
-                        parsePrimaryPattern(&, isRefutableContext: true)
-                          parseVariablePattern(&, typeInfo: Instance of 'SimpleNullableType')
+                      listener: beginBinaryPattern(&&)
+                      parsePattern(&&, precedence: 7, isRefutableContext: true)
+                        parsePrimaryPattern(&&, isRefutableContext: true)
+                          parseVariablePattern(&&, typeInfo: Instance of 'SimpleNullableType')
                             listener: handleIdentifier(Object, typeReference)
                             listener: handleNoTypeArguments(?)
                             listener: handleType(Object, ?)
                             listener: handleVariablePattern(null, _)
-                      listener: endBinaryPattern(&)
-                    listener: endBinaryPattern(|)
+                      listener: endBinaryPattern(&&)
+                    listener: endBinaryPattern(||)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.parser.expect
index 75b3404..eea81e0 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ & Object? _:
+case int? _ || double? _ && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.scanner.expect
index 75b3404..eea81e0 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_and_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ & Object? _:
+case int? _ || double? _ && Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] &&[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart
index 49c82b7..b9da181 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart
@@ -1,3 +1,3 @@
 test(dynamic x) {
-  if (x case int? _ | double? _) {}
+  if (x case int? _ || double? _) {}
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
index 2a1acbb..bee0cb6 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.expect
@@ -28,12 +28,12 @@
           handleNoTypeArguments(?)
           handleType(int, ?)
           handleVariablePattern(null, _)
-          beginBinaryPattern(|)
+          beginBinaryPattern(||)
             handleIdentifier(double, typeReference)
             handleNoTypeArguments(?)
             handleType(double, ?)
             handleVariablePattern(null, _)
-          endBinaryPattern(|)
+          endBinaryPattern(||)
           handleParenthesizedCondition((, case, null)
           beginThenStatement({)
             beginBlock({, BlockKind(statement))
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
index 4f755d8..270f6af 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.intertwined.expect
@@ -68,15 +68,15 @@
                           listener: handleNoTypeArguments(?)
                           listener: handleType(int, ?)
                           listener: handleVariablePattern(null, _)
-                      listener: beginBinaryPattern(|)
-                      parsePattern(|, precedence: 6, isRefutableContext: true)
-                        parsePrimaryPattern(|, isRefutableContext: true)
-                          parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                      listener: beginBinaryPattern(||)
+                      parsePattern(||, precedence: 6, isRefutableContext: true)
+                        parsePrimaryPattern(||, isRefutableContext: true)
+                          parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                             listener: handleIdentifier(double, typeReference)
                             listener: handleNoTypeArguments(?)
                             listener: handleType(double, ?)
                             listener: handleVariablePattern(null, _)
-                      listener: endBinaryPattern(|)
+                      listener: endBinaryPattern(||)
                     ensureCloseParen(_, ()
                     listener: handleParenthesizedCondition((, case, null)
                 listener: beginThenStatement({)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.parser.expect
index 2ffecba..cbf05b4 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.parser.expect
@@ -1,9 +1,9 @@
 test(dynamic x) {
-if (x case int? _ | double? _) {}
+if (x case int? _ || double? _) {}
 }
 
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
-if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
 }[SimpleToken]
 [SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.scanner.expect
index 2ffecba..cbf05b4 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_if_case.dart.scanner.expect
@@ -1,9 +1,9 @@
 test(dynamic x) {
-if (x case int? _ | double? _) {}
+if (x case int? _ || double? _) {}
 }
 
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
-if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
+if[KeywordToken] ([BeginToken]x[StringToken] case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
 }[SimpleToken]
 [SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart
index 594f152..947cb1b 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int? _ | double? _ | Object? _:
+    case int? _ || double? _ || Object? _:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.expect
index 6d2af8c..585ccbd 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.expect
@@ -31,18 +31,18 @@
               handleNoTypeArguments(?)
               handleType(int, ?)
               handleVariablePattern(null, _)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleIdentifier(double, typeReference)
                 handleNoTypeArguments(?)
                 handleType(double, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(|)
-              beginBinaryPattern(|)
+              endBinaryPattern(||)
+              beginBinaryPattern(||)
                 handleIdentifier(Object, typeReference)
                 handleNoTypeArguments(?)
                 handleType(Object, ?)
                 handleVariablePattern(null, _)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.intertwined.expect
index 9407c8d..5f60873 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.intertwined.expect
@@ -76,24 +76,24 @@
                         listener: handleNoTypeArguments(?)
                         listener: handleType(int, ?)
                         listener: handleVariablePattern(null, _)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(double, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(double, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(|)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleNullableType')
+                    listener: endBinaryPattern(||)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleNullableType')
                           listener: handleIdentifier(Object, typeReference)
                           listener: handleNoTypeArguments(?)
                           listener: handleType(Object, ?)
                           listener: handleVariablePattern(null, _)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(_)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.parser.expect
index 50fd458..057d519 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ | Object? _:
+case int? _ || double? _ || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.scanner.expect
index 50fd458..057d519 100644
--- a/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/logical_or_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int? _ | double? _ | Object? _:
+case int? _ || double? _ || Object? _:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] |[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] double[StringToken]?[SimpleToken] _[StringToken] ||[SimpleToken] Object[StringToken]?[SimpleToken] _[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart
index 86b756e..4974544 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1! & 2:
+    case 1! && 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.expect
index 46fbbf8..c18433a 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.expect
@@ -30,10 +30,10 @@
               handleLiteralInt(1)
               handleConstantPattern(null)
               handleNullAssertPattern(!)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.intertwined.expect
index 146bf72..90ecf8f 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.intertwined.expect
@@ -78,16 +78,16 @@
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
                     listener: handleNullAssertPattern(!)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.parser.expect
index b7ceb1a..981e663 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1! & 2:
+case 1! && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]![SimpleToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]![SimpleToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.scanner.expect
index b7ceb1a..981e663 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1! & 2:
+case 1! && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]![SimpleToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]![SimpleToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart
index ff84f4e..604ae95 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 & 2!:
+    case 1 && 2!:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.expect
index a4f9a8a..898da6a 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.expect
@@ -29,11 +29,11 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
                 handleNullAssertPattern(!)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.intertwined.expect
index 609e12c..da8754e 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.intertwined.expect
@@ -77,17 +77,17 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
                       listener: handleNullAssertPattern(!)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(!)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.parser.expect
index b93fe52..171c0f4 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & 2!:
+case 1 && 2!:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.scanner.expect
index b93fe52..171c0f4 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_and_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & 2!:
+case 1 && 2!:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart
index e97cea3..7c57c55 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1! | 2:
+    case 1! || 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.expect
index 8339f0f..1feb032 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.expect
@@ -30,10 +30,10 @@
               handleLiteralInt(1)
               handleConstantPattern(null)
               handleNullAssertPattern(!)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.intertwined.expect
index fbaf73d..76c0a53 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.intertwined.expect
@@ -78,16 +78,16 @@
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
                     listener: handleNullAssertPattern(!)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.parser.expect
index 1ea2807..9185b0a 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1! | 2:
+case 1! || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]![SimpleToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]![SimpleToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.scanner.expect
index 1ea2807..9185b0a 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1! | 2:
+case 1! || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]![SimpleToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]![SimpleToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart
index 75511fe..a813d0f 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 | 2!:
+    case 1 || 2!:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.expect
index f9163f5..1c08fa3 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.expect
@@ -29,11 +29,11 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
                 handleNullAssertPattern(!)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.intertwined.expect
index 15f5290..e5037f4 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.intertwined.expect
@@ -77,17 +77,17 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
                       listener: handleNullAssertPattern(!)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(!)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.parser.expect
index 08387d0..7e8e76c 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | 2!:
+case 1 || 2!:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.scanner.expect
index 08387d0..7e8e76c 100644
--- a/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_assert_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | 2!:
+case 1 || 2!:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] 2[StringToken]![SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart
index 1b2721d..1c01ca6 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1? & 2:
+    case 1? && 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.expect
index a26e904..d29a2d4 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.expect
@@ -30,10 +30,10 @@
               handleLiteralInt(1)
               handleConstantPattern(null)
               handleNullCheckPattern(?)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.intertwined.expect
index 23d14e7..628460e 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.intertwined.expect
@@ -78,16 +78,16 @@
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
                     listener: handleNullCheckPattern(?)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.parser.expect
index 9d3e855..cec9c73 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1? & 2:
+case 1? && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]?[SimpleToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]?[SimpleToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.scanner.expect
index 9d3e855..cec9c73 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1? & 2:
+case 1? && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]?[SimpleToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]?[SimpleToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart
index 519e476..6140997 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 & 2?:
+    case 1 && 2?:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.expect
index d1ffacd..a50c204 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.expect
@@ -29,11 +29,11 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
                 handleNullCheckPattern(?)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.intertwined.expect
index 961ab95..ce7fa20 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.intertwined.expect
@@ -77,17 +77,17 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
                       listener: handleNullCheckPattern(?)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(?)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.parser.expect
index 9066c31..8328737 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & 2?:
+case 1 && 2?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.scanner.expect
index 9066c31..8328737 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_and_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & 2?:
+case 1 && 2?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart
index 307ba80..1643090 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1? | 2:
+    case 1? || 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.expect
index a7e2d88..8d34180 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.expect
@@ -30,10 +30,10 @@
               handleLiteralInt(1)
               handleConstantPattern(null)
               handleNullCheckPattern(?)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.intertwined.expect
index 4ac6cbb..ee4de62 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.intertwined.expect
@@ -78,16 +78,16 @@
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
                     listener: handleNullCheckPattern(?)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.parser.expect
index 7259b68..5bab8d2 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1? | 2:
+case 1? || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]?[SimpleToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]?[SimpleToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.scanner.expect
index 7259b68..5bab8d2 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1? | 2:
+case 1? || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken]?[SimpleToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken]?[SimpleToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart
index 81f3894..8beeb55 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 | 2?:
+    case 1 || 2?:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.expect
index 72a5e03..ac7e16f 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.expect
@@ -29,11 +29,11 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
                 handleNullCheckPattern(?)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.intertwined.expect
index 96fd103..c171ba9 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.intertwined.expect
@@ -77,17 +77,17 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
                       listener: handleNullCheckPattern(?)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(?)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.parser.expect
index b4b520c..e517a1b 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | 2?:
+case 1 || 2?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.scanner.expect
index b4b520c..e517a1b 100644
--- a/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/null_check_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | 2?:
+case 1 || 2?:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] 2[StringToken]?[SimpleToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart
index fd98413..23d2055 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case == 1 & 2:
+    case == 1 && 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.expect
index 450690c..5c70223 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.expect
@@ -29,10 +29,10 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleRelationalPattern(==)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.intertwined.expect
index 7fdc1d0..9dd0282 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.intertwined.expect
@@ -77,16 +77,16 @@
                             parseLiteralInt(==)
                               listener: handleLiteralInt(1)
                       listener: handleRelationalPattern(==)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.parser.expect
index 16976c2..b03bd31 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case == 1 & 2:
+case == 1 && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] ==[SimpleToken] 1[StringToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] ==[SimpleToken] 1[StringToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.scanner.expect
index 16976c2..b03bd31 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case == 1 & 2:
+case == 1 && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] ==[SimpleToken] 1[StringToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] ==[SimpleToken] 1[StringToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart
index f94c2daa..74fe078 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 & == 2:
+    case 1 && == 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.expect
index 3f1f03e..ad5e882 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.expect
@@ -29,10 +29,10 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleRelationalPattern(==)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.intertwined.expect
index a7aadf8..627c28e 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.intertwined.expect
@@ -77,16 +77,16 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
                         parsePrecedenceExpression(==, 12, false)
                           parseUnaryExpression(==, false)
                             parsePrimary(==, expression)
                               parseLiteralInt(==)
                                 listener: handleLiteralInt(2)
                         listener: handleRelationalPattern(==)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.parser.expect
index 6b2dee1..d17b5c9 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & == 2:
+case 1 && == 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.scanner.expect
index 6b2dee1..d17b5c9 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_and_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & == 2:
+case 1 && == 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart
index 7c0299e..ee38cd6 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case == 1 | 2:
+    case == 1 || 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.expect
index 9ec5247..e1313a1 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.expect
@@ -29,10 +29,10 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleRelationalPattern(==)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.intertwined.expect
index db8f453..640530e 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.intertwined.expect
@@ -77,16 +77,16 @@
                             parseLiteralInt(==)
                               listener: handleLiteralInt(1)
                       listener: handleRelationalPattern(==)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.parser.expect
index fc1c13c..89fa6d0 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case == 1 | 2:
+case == 1 || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] ==[SimpleToken] 1[StringToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] ==[SimpleToken] 1[StringToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.scanner.expect
index fc1c13c..89fa6d0 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case == 1 | 2:
+case == 1 || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] ==[SimpleToken] 1[StringToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] ==[SimpleToken] 1[StringToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart
index 72ede7b..ba19fec 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 | == 2:
+    case 1 || == 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.expect
index 9514d60..22b0a93 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.expect
@@ -29,10 +29,10 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleRelationalPattern(==)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.intertwined.expect
index b62ed2b..029c43a 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.intertwined.expect
@@ -77,16 +77,16 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
                         parsePrecedenceExpression(==, 12, false)
                           parseUnaryExpression(==, false)
                             parsePrimary(==, expression)
                               parseLiteralInt(==)
                                 listener: handleLiteralInt(2)
                         listener: handleRelationalPattern(==)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.parser.expect
index 9e4c37f..973638e 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | == 2:
+case 1 || == 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.scanner.expect
index 9e4c37f..973638e 100644
--- a/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/relational_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | == 2:
+case 1 || == 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] ==[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart
index 1db90f3..936c300 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int as & 2:
+    case int as && 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.expect
index 5e6035a..25bc0ff 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.expect
@@ -31,10 +31,10 @@
               handleNoTypeArguments(as)
               handleType(int, null)
               handleVariablePattern(null, as)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.intertwined.expect
index cbb010f..8fc5f36 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.intertwined.expect
@@ -76,16 +76,16 @@
                         listener: handleNoTypeArguments(as)
                         listener: handleType(int, null)
                         listener: handleVariablePattern(null, as)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parsePrecedenceExpression(&, 17, false)
-                          parseUnaryExpression(&, false)
-                            parsePrimary(&, expression)
-                              parseLiteralInt(&)
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parsePrecedenceExpression(&&, 17, false)
+                          parseUnaryExpression(&&, false)
+                            parsePrimary(&&, expression)
+                              parseLiteralInt(&&)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.parser.expect
index b48ad6a..36e3602 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int as & 2:
+case int as && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken] as[KeywordToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken] as[KeywordToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.scanner.expect
index b48ad6a..36e3602 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int as & 2:
+case int as && 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken] as[KeywordToken] &[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken] as[KeywordToken] &&[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart
index af77ec0..e7a12ba 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 & int as:
+    case 1 && int as:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.expect
index 25cf2ec..fb75ae0 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.expect
@@ -29,12 +29,12 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(&)
+              beginBinaryPattern(&&)
                 handleIdentifier(int, typeReference)
                 handleNoTypeArguments(as)
                 handleType(int, null)
                 handleVariablePattern(null, as)
-              endBinaryPattern(&)
+              endBinaryPattern(&&)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.intertwined.expect
index a48da38..5d1d765 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.intertwined.expect
@@ -77,15 +77,15 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(&)
-                    parsePattern(&, precedence: 7, isRefutableContext: true)
-                      parsePrimaryPattern(&, isRefutableContext: true)
-                        parseVariablePattern(&, typeInfo: Instance of 'SimpleType')
+                    listener: beginBinaryPattern(&&)
+                    parsePattern(&&, precedence: 7, isRefutableContext: true)
+                      parsePrimaryPattern(&&, isRefutableContext: true)
+                        parseVariablePattern(&&, typeInfo: Instance of 'SimpleType')
                           listener: handleIdentifier(int, typeReference)
                           listener: handleNoTypeArguments(as)
                           listener: handleType(int, null)
                           listener: handleVariablePattern(null, as)
-                    listener: endBinaryPattern(&)
+                    listener: endBinaryPattern(&&)
                   ensureColon(as)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.parser.expect
index 88fe66f..93c1b31 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & int as:
+case 1 && int as:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.scanner.expect
index 88fe66f..93c1b31 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_and_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 & int as:
+case 1 && int as:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] &[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] &&[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart
index 7252f50..eb99cab 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case int as | 2:
+    case int as || 2:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.expect
index dfc02aa..d6ddd32 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.expect
@@ -31,10 +31,10 @@
               handleNoTypeArguments(as)
               handleType(int, null)
               handleVariablePattern(null, as)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleLiteralInt(2)
                 handleConstantPattern(null)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.intertwined.expect
index 3a0980a..dd78502 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.intertwined.expect
@@ -76,16 +76,16 @@
                         listener: handleNoTypeArguments(as)
                         listener: handleType(int, null)
                         listener: handleVariablePattern(null, as)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parsePrecedenceExpression(|, 17, false)
-                          parseUnaryExpression(|, false)
-                            parsePrimary(|, expression)
-                              parseLiteralInt(|)
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parsePrecedenceExpression(||, 17, false)
+                          parseUnaryExpression(||, false)
+                            parsePrimary(||, expression)
+                              parseLiteralInt(||)
                                 listener: handleLiteralInt(2)
                         listener: handleConstantPattern(null)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(2)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.parser.expect
index 450c04d..fd323f6 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int as | 2:
+case int as || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken] as[KeywordToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken] as[KeywordToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.scanner.expect
index 450c04d..fd323f6 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_lhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case int as | 2:
+case int as || 2:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] int[StringToken] as[KeywordToken] |[SimpleToken] 2[StringToken]:[SimpleToken]
+case[KeywordToken] int[StringToken] as[KeywordToken] ||[SimpleToken] 2[StringToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart
index 1299dfe..371f900 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart
@@ -1,6 +1,6 @@
 test(dynamic x) {
   switch (x) {
-    case 1 | int as:
+    case 1 || int as:
       break;
   }
 }
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.expect
index 1e5de36..7efdc8b 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.expect
@@ -29,12 +29,12 @@
             beginCaseExpression(case)
               handleLiteralInt(1)
               handleConstantPattern(null)
-              beginBinaryPattern(|)
+              beginBinaryPattern(||)
                 handleIdentifier(int, typeReference)
                 handleNoTypeArguments(as)
                 handleType(int, null)
                 handleVariablePattern(null, as)
-              endBinaryPattern(|)
+              endBinaryPattern(||)
             endCaseExpression(case, null, :)
             beginSwitchCase(0, 1, case)
               handleBreakStatement(false, break, ;)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.intertwined.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.intertwined.expect
index 4fb2748..c878c9d 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.intertwined.expect
@@ -77,15 +77,15 @@
                             parseLiteralInt(case)
                               listener: handleLiteralInt(1)
                       listener: handleConstantPattern(null)
-                    listener: beginBinaryPattern(|)
-                    parsePattern(|, precedence: 6, isRefutableContext: true)
-                      parsePrimaryPattern(|, isRefutableContext: true)
-                        parseVariablePattern(|, typeInfo: Instance of 'SimpleType')
+                    listener: beginBinaryPattern(||)
+                    parsePattern(||, precedence: 6, isRefutableContext: true)
+                      parsePrimaryPattern(||, isRefutableContext: true)
+                        parseVariablePattern(||, typeInfo: Instance of 'SimpleType')
                           listener: handleIdentifier(int, typeReference)
                           listener: handleNoTypeArguments(as)
                           listener: handleType(int, null)
                           listener: handleVariablePattern(null, as)
-                    listener: endBinaryPattern(|)
+                    listener: endBinaryPattern(||)
                   ensureColon(as)
                   listener: endCaseExpression(case, null, :)
                   peekPastLabels(break)
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.parser.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.parser.expect
index 081bfef..3f595ec 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.parser.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | int as:
+case 1 || int as:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.scanner.expect b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.scanner.expect
index 081bfef..3f595ec 100644
--- a/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/patterns/typed_variable_named_as_inside_logical_or_rhs.dart.scanner.expect
@@ -1,6 +1,6 @@
 test(dynamic x) {
 switch (x) {
-case 1 | int as:
+case 1 || int as:
 break;
 }
 }
@@ -8,7 +8,7 @@
 
 test[StringToken]([BeginToken]dynamic[KeywordToken] x[StringToken])[SimpleToken] {[BeginToken]
 switch[KeywordToken] ([BeginToken]x[StringToken])[SimpleToken] {[BeginToken]
-case[KeywordToken] 1[StringToken] |[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
+case[KeywordToken] 1[StringToken] ||[SimpleToken] int[StringToken] as[KeywordToken]:[SimpleToken]
 break[KeywordToken];[SimpleToken]
 }[SimpleToken]
 }[SimpleToken]