summaryrefslogtreecommitdiffstats
path: root/system/xonsh/v310.patch
blob: 836124714eaa887e221930b973bc99839f48fd40 (plain)
--- xonsh-0.14.4/xonsh/parsers/v310.orig.py	2024-01-18 17:58:44.463700213 +0200
+++ xonsh-0.14.4/xonsh/parsers/v310.py	2024-01-18 19:03:33.985074856 +0200
@@ -76,26 +76,24 @@
         """
 
         loc = self.get_line_cols(p, 1)
-        match list(p):
-            case [_, _, pattern, _, suite]:
-                p[0] = ast.match_case(pattern=pattern, body=suite, **loc)
-            case [_, _, pattern, _, guard, _, suite]:
-                p[0] = ast.match_case(pattern=pattern, body=suite, guard=guard, **loc)
-            case _:
-                raise AssertionError()
+        if list(p) == [_, _, pattern, _, suite]:
+            p[0] = ast.match_case(pattern=pattern, body=suite, **loc)
+        elif list(p) == [_, _, pattern, _, guard, _, suite]:
+            p[0] = ast.match_case(pattern=pattern, body=suite, guard=guard, **loc)
+        else:
+            raise AssertionError()
 
     def p_case_block_list_nonempty(self, p):
         """
         case_block_list_nonempty : case_block
                                  | case_block case_block_list_nonempty
         """
-        match list(p):
-            case [_, case_block]:
-                p[0] = [case_block]
-            case [_, case_block, case_block_list_nonempty]:
-                p[0] = [case_block] + case_block_list_nonempty
-            case _:
-                raise AssertionError()
+        if list(p) == [_, case_block]:
+            p[0] = [case_block]
+        elif list(p) == [_, case_block, case_block_list_nonempty]:
+            p[0] = [case_block] + case_block_list_nonempty
+        else:
+            raise AssertionError()
 
     # subject expression
     def p_subject_expr_single_value(self, p):
@@ -103,33 +101,31 @@
         subject_expr : test_or_star_expr comma_opt
         """
 
-        match list(p):
-            case [_, test_or_star_expr, None]:
-                # single value
-                p[0] = test_or_star_expr
-            case [_, test_or_star_expr, ","]:
-                # tuple with one element
-                p[0] = ast.Tuple(
-                    elts=[test_or_star_expr], ctx=ast.Load(), **self.get_line_cols(p, 1)
-                )
-            case _:
-                raise AssertionError()
+        if list(p) == [_, test_or_star_expr, None]:
+            # single value
+            p[0] = test_or_star_expr
+        elif list(p) == [_, test_or_star_expr, ","]:
+            # tuple with one element
+            p[0] = ast.Tuple(
+                elts=[test_or_star_expr], ctx=ast.Load(), **self.get_line_cols(p, 1)
+            )
+        else:
+            raise AssertionError()
 
     def p_subject_expr_multiple_values(self, p):
         """
         subject_expr : test_or_star_expr comma_test_or_star_expr_list comma_opt
         """
 
-        match list(p):
-            case [_, test_or_star_expr, comma_test_or_star_expr_list, "," | None]:
-                # tuple with more than one element
-                p[0] = ast.Tuple(
-                    elts=[test_or_star_expr] + comma_test_or_star_expr_list,
-                    ctx=ast.Load(),
-                    **self.get_line_cols(p, 1),
-                )
-            case _:
-                raise AssertionError()
+        if list(p) == [_, test_or_star_expr, comma_test_or_star_expr_list, "," | None]:
+            # tuple with more than one element
+            p[0] = ast.Tuple(
+                elts=[test_or_star_expr] + comma_test_or_star_expr_list,
+                ctx=ast.Load(),
+                **self.get_line_cols(p, 1),
+            )
+        else:
+            raise AssertionError()
 
     # patterns
     def p_closed_pattern(self, p):
@@ -167,22 +163,20 @@
 
         _, or_pattern_list = p
 
-        match or_pattern_list:
-            case [single_value]:
-                p[0] = single_value
-            case multiple_values:
-                p[0] = ast.MatchOr(patterns=multiple_values, **self.get_line_cols(p, 1))
+        if or_pattern_list == [single_value]:
+            p[0] = single_value
+        elif or_pattern_list == multiple_values:
+            p[0] = ast.MatchOr(patterns=multiple_values, **self.get_line_cols(p, 1))
 
     def p_or_pattern_list(self, p):
         """
         or_pattern_list : closed_pattern
                         | closed_pattern PIPE or_pattern_list
         """
-        match list(p):
-            case [_, closed_pattern]:
-                p[0] = [closed_pattern]
-            case [_, closed_pattern, "|", or_pattern_list]:
-                p[0] = [closed_pattern] + or_pattern_list
+        if list(p) == [_, closed_pattern]:
+            p[0] = [closed_pattern]
+        elif list(p) == [_, closed_pattern, "|", or_pattern_list]:
+            p[0] = [closed_pattern] + or_pattern_list
 
     # group pattern
     def p_group_pattern(self, p):
@@ -198,11 +192,10 @@
         literal_pattern : literal_expr
         """
 
-        match p[1]:
-            case None | True | False:
-                p[0] = ast.MatchSingleton(value=p[1], **self.get_line_cols(p, 1))
-            case _:
-                p[0] = ast.MatchValue(value=p[1], **self.get_line_cols(p, 1))
+        if p[1] == None | True | False:
+            p[0] = ast.MatchSingleton(value=p[1], **self.get_line_cols(p, 1))
+        else:
+            p[0] = ast.MatchValue(value=p[1], **self.get_line_cols(p, 1))
 
     def p_literal_expr_number_or_string_literal_list(self, p):
         """
@@ -212,11 +205,10 @@
 
         p[0] = p[1]
 
-        match p[1]:
-            case ast.JoinedStr():
-                raise AssertionError("patterns may not match formatted string literals")
-                # TODO: raise SyntaxError instead
-                # (doing so currently somehow causes an IndexError in tools.py:get_logical_line)
+        if p[1] == ast.JoinedStr():
+            raise AssertionError("patterns may not match formatted string literals")
+            # TODO: raise SyntaxError instead
+            # (doing so currently somehow causes an IndexError in tools.py:get_logical_line)
 
         # TODO: f"hi" "hi" does not parse in xonsh
 
@@ -227,15 +219,14 @@
                      | false_tok
         """
 
-        match p[1].value:
-            case "None":
-                value = None
-            case "True":
-                value = True
-            case "False":
-                value = False
-            case _:
-                raise AssertionError()
+        if p[1].value == "None":
+            value = None
+        elif "True":
+            value = True
+        elif "False":
+            value = False
+        else:
+            raise AssertionError()
 
         p[0] = value
 
@@ -253,19 +244,18 @@
         build_complex = False
         loc = self.get_line_cols(p, 1)
 
-        match list(p):
-            case [_, x]:
-                p[0] = x
-            case [_, "-", x]:
-                p[0] = ast.UnaryOp(op=ast.USub(), operand=x, **loc)
-            case [_, left, ("+" | "-") as op_char, right]:
-                build_complex = True
-                negate_left_side = False
-            case [_, "-", left, ("+" | "-") as op_char, right]:
-                build_complex = True
-                negate_left_side = True
-            case _:
-                raise AssertionError()
+        if list(p) == [_, x]:
+            p[0] = x
+        elif list(p) == [_, "-", x]:
+            p[0] = ast.UnaryOp(op=ast.USub(), operand=x, **loc)
+        elif list(p) == [_, left, ("+",  op_char) | ("-", op_char), right]:
+            build_complex = True
+            negate_left_side = False
+        elif list(p) == [_, "-", left, ("+",  op_char) | ("-", op_char), right]:
+            build_complex = True
+            negate_left_side = True
+        else:
+            raise AssertionError()
 
         if build_complex:
             # TODO raise syntax error instead (see reason in p_literal_expr_number_or_string_literal_list)
@@ -322,17 +312,16 @@
                          | LPAREN RPAREN
         """
 
-        match list(p):
-            case [_, _, ast.MatchSequence() as seq, _]:
-                p[0] = seq
-            case [_, _, single_item, _]:
-                p[0] = ast.MatchSequence(
-                    patterns=[single_item], **self.get_line_cols(p, 1)
-                )
-            case [_, _, _]:
-                p[0] = ast.MatchSequence(patterns=[], **self.get_line_cols(p, 1))
-            case _:
-                raise AssertionError()
+        if list(p) == [_, _, (ast.MatchSequence(), seq), _]:
+            p[0] = seq
+        elif list(p) == [_, _, single_item, _]:
+            p[0] = ast.MatchSequence(
+                patterns=[single_item], **self.get_line_cols(p, 1)
+            )
+        elif list(p) == [_, _, _]:
+            p[0] = ast.MatchSequence(patterns=[], **self.get_line_cols(p, 1))
+        else:
+            raise AssertionError()
 
     def p_maybe_sequence_pattern(self, p):
         """
@@ -340,30 +329,24 @@
                                | maybe_star_pattern COMMA maybe_sequence_pattern
         """
 
-        match list(p):
-            case [_, maybe_star_pattern, ","]:
-                p[0] = ast.MatchSequence(
-                    patterns=[maybe_star_pattern], **self.get_line_cols(p, 1)
-                )
-            case [_, maybe_star_pattern, None]:
-                p[0] = maybe_star_pattern
-            case [
-                _,
-                maybe_star_pattern,
-                ",",
-                ast.MatchSequence(patterns=list(maybe_sequence_pattern)),
-            ]:
-                p[0] = ast.MatchSequence(
-                    patterns=[maybe_star_pattern] + maybe_sequence_pattern,
-                    **self.get_line_cols(p, 1),
-                )
-            case [_, maybe_star_pattern, ",", maybe_sequence_pattern]:
-                p[0] = ast.MatchSequence(
-                    patterns=[maybe_star_pattern, maybe_sequence_pattern],
-                    **self.get_line_cols(p, 1),
-                )
-            case _:
-                raise AssertionError()
+        if list(p) == [_, maybe_star_pattern, ","]:
+            p[0] = ast.MatchSequence(
+                patterns=[maybe_star_pattern], **self.get_line_cols(p, 1)
+            )
+        elif list(p) == [_, maybe_star_pattern, None]:
+            p[0] = maybe_star_pattern
+        elif list(p) == [_, maybe_star_pattern, ",", ast.MatchSequence(patterns=list(maybe_sequence_pattern)),]:
+            p[0] = ast.MatchSequence(
+                patterns=[maybe_star_pattern] + maybe_sequence_pattern,
+                **self.get_line_cols(p, 1),
+            )
+        elif list(p) == [_, maybe_star_pattern, ",", maybe_sequence_pattern]:
+            p[0] = ast.MatchSequence(
+                patterns=[maybe_star_pattern, maybe_sequence_pattern],
+                **self.get_line_cols(p, 1),
+            )
+        else:
+            raise AssertionError()
 
     def p_open_sequence_pattern(self, p):
         """
@@ -429,19 +412,18 @@
                                             | name_str EQUALS pattern COMMA class_pattern_keyword_part
         """
 
-        match list(p):
-            case [_]:
-                p[0] = ([], [])
-            case [_, pattern]:
-                p[0] = ([pattern], [])
-            case [_, pattern, ",", (names, patterns)]:
-                p[0] = ([pattern] + names, patterns)
-            case [_, name, "=", pattern]:
-                p[0] = ([], [(name, pattern)])
-            case [_, name, "=", pattern, ",", class_pattern_keyword_part]:
-                p[0] = ([], [(name, pattern)] + class_pattern_keyword_part)
-            case _:
-                raise AssertionError()
+        if list(p) == [_]:
+            p[0] = ([], [])
+        elif list(p) == [_, pattern]:
+            p[0] = ([pattern], [])
+        elif list(p) == [_, pattern, ",", (names, patterns)]:
+            p[0] = ([pattern] + names, patterns)
+        elif list(p) == [_, name, "=", pattern]:
+            p[0] = ([], [(name, pattern)])
+        elif list(p) == [_, name, "=", pattern, ",", class_pattern_keyword_part]:
+            p[0] = ([], [(name, pattern)] + class_pattern_keyword_part)
+        else:
+            raise AssertionError()
 
     # returns ( [pattern], [ (name, pattern) ]  )
     def p_class_pattern_positional_part_skip(self, p):
@@ -457,13 +439,12 @@
                                       | pattern COMMA class_pattern_positional_part
         """
 
-        match list(p):
-            case [_, pattern]:
-                p[0] = ([pattern], [])
-            case [_, pattern, ",", (names, patterns)]:
-                p[0] = ([pattern] + names, patterns)
-            case _:
-                raise AssertionError()
+        if list(p) == [_, pattern]:
+            p[0] = ([pattern], [])
+        elif list(p) == [_, pattern, ",", (names, patterns)]:
+            p[0] = ([pattern] + names, patterns)
+        else:
+            raise AssertionError()
 
     # returns [ (name, pattern) ]
     def p_class_pattern_keyword_part(self, p):
@@ -474,15 +455,14 @@
                                    | name_str EQUALS pattern COMMA class_pattern_keyword_part
         """
 
-        match list(p):
-            case [_] | [_, ","]:
-                p[0] = []
-            case [_, name, "=", pattern]:
-                p[0] = [(name, pattern)]
-            case [_, name, "=", pattern, ",", class_pattern_keyword_part]:
-                p[0] = [(name, pattern)] + class_pattern_keyword_part
-            case _:
-                raise AssertionError()
+        if list(p) == [_] | [_, ","]:
+            p[0] = []
+        elif list(p) == [_, name, "=", pattern]:
+            p[0] = [(name, pattern)]
+        elif list(p) == [_, name, "=", pattern, ",", class_pattern_keyword_part]:
+            p[0] = [(name, pattern)] + class_pattern_keyword_part
+        else:
+            raise AssertionError()
 
     # Mapping pattern
 
@@ -505,43 +485,40 @@
                                    | key_value_pattern COMMA mapping_pattern_args_item_part
                                    | double_star_pattern
         """
-        match list(p):
-            case [_]:
-                p[0] = [], [], None
-            case [_, (key, value)]:
-                p[0] = [key], [value], None
-            case [_, (key, value), ",", (keys, values, rest)]:
-                p[0] = [key] + keys, [value] + values, rest
-            case [_, str(double_star_pattern)]:
-                p[0] = [], [], double_star_pattern
-            case _:
-                raise AssertionError()
+        if list(p) == [_]:
+            p[0] = [], [], None
+        elif list(p) == [_, (key, value)]:
+            p[0] = [key], [value], None
+        elif list(p) == [_, (key, value), ",", (keys, values, rest)]:
+            p[0] = [key] + keys, [value] + values, rest
+        elif list(p) == [_, str(double_star_pattern)]:
+            p[0] = [], [], double_star_pattern
+        else:
+            raise AssertionError()
 
     def p_mapping_pattern_args_item_part_skip(self, p):
         """
         mapping_pattern_args_item_part :
                                        | double_star_pattern
         """
-        match list(p):
-            case [_]:
-                p[0] = [], [], None
-            case [_, rest]:
-                p[0] = [], [], rest
-            case _:
-                raise AssertionError()
+        if list(p) == [_]:
+            p[0] = [], [], None
+        elif list(p) == [_, rest]:
+            p[0] = [], [], rest
+        else:
+            raise AssertionError()
 
     def p_mapping_pattern_args_item_part(self, p):
         """
         mapping_pattern_args_item_part : key_value_pattern
                                        | key_value_pattern COMMA mapping_pattern_args_item_part
         """
-        match list(p):
-            case [_, (key, value)]:
-                p[0] = [key], [value], None
-            case [_, (key, value), ",", (keys, values, rest)]:
-                p[0] = [key] + keys, [value] + values, rest
-            case _:
-                raise AssertionError()
+        if list(p) == [_, (key, value)]:
+            p[0] = [key], [value], None
+        elif list(p) == [_, (key, value), ",", (keys, values, rest)]:
+            p[0] = [key] + keys, [value] + values, rest
+        else:
+            raise AssertionError()
 
     def p_double_star_pattern(self, p):
         """