Skip to content

Commit 63e1cc9

Browse files
committed
Test: add corpus test for switch case patterns with labeled arguments
Adds a test case 'Switch with labeled case pattern arguments' covering: - case .implicit(isAcknowledged: false) — labeled bool literal - case .thread(threadRowId: _, let rowId) — labeled wildcard + binding The current output contains type errors: pattern_element::key is being produced as name_expr instead of identifier. These will be fixed in the following commit.
1 parent 2182265 commit 63e1cc9

1 file changed

Lines changed: 151 additions & 0 deletions

File tree

unified/extractor/tests/corpus/swift/control-flow.txt

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,3 +732,154 @@ top_level
732732
value:
733733
name_expr
734734
identifier: identifier "shape"
735+
736+
===
737+
Switch with labeled case pattern arguments
738+
===
739+
740+
switch x {
741+
case .implicit(isAcknowledged: false):
742+
print("yes")
743+
case .thread(threadRowId: _, let rowId):
744+
print(rowId)
745+
}
746+
747+
---
748+
749+
source_file
750+
statement:
751+
switch_statement
752+
entry:
753+
switch_entry
754+
pattern:
755+
switch_pattern
756+
pattern:
757+
pattern
758+
kind:
759+
case_pattern
760+
arguments:
761+
tuple_pattern
762+
item:
763+
tuple_pattern_item
764+
name: simple_identifier "isAcknowledged"
765+
pattern:
766+
pattern
767+
kind:
768+
boolean_literal
769+
dot: .
770+
name: simple_identifier "implicit"
771+
statement:
772+
call_expression
773+
function: simple_identifier "print"
774+
suffix:
775+
call_suffix
776+
arguments:
777+
value_arguments
778+
argument:
779+
value_argument
780+
value:
781+
line_string_literal
782+
text: line_str_text "yes"
783+
switch_entry
784+
pattern:
785+
switch_pattern
786+
pattern:
787+
pattern
788+
kind:
789+
case_pattern
790+
arguments:
791+
tuple_pattern
792+
item:
793+
tuple_pattern_item
794+
name: simple_identifier "threadRowId"
795+
pattern:
796+
pattern
797+
kind: wildcard_pattern "_"
798+
tuple_pattern_item
799+
pattern:
800+
pattern
801+
kind:
802+
binding_pattern
803+
binding:
804+
value_binding_pattern
805+
mutability: let
806+
pattern:
807+
pattern
808+
bound_identifier: simple_identifier "rowId"
809+
dot: .
810+
name: simple_identifier "thread"
811+
statement:
812+
call_expression
813+
function: simple_identifier "print"
814+
suffix:
815+
call_suffix
816+
arguments:
817+
value_arguments
818+
argument:
819+
value_argument
820+
value: simple_identifier "rowId"
821+
expr: simple_identifier "x"
822+
823+
---
824+
825+
top_level
826+
body:
827+
block
828+
stmt:
829+
switch_expr
830+
case:
831+
switch_case
832+
body:
833+
block
834+
stmt:
835+
call_expr
836+
argument:
837+
argument
838+
value: string_literal "\"yes\""
839+
callee:
840+
name_expr
841+
identifier: identifier "print"
842+
pattern:
843+
constructor_pattern
844+
element:
845+
pattern_element
846+
key:
847+
name_expr <-- ERROR: The field pattern_element.key should contain identifier, but got name_expr
848+
identifier: identifier "isAcknowledged"
849+
pattern: tuple_pattern "false"
850+
constructor:
851+
member_access_expr
852+
base: inferred_type_expr "."
853+
member: identifier "implicit"
854+
switch_case
855+
body:
856+
block
857+
stmt:
858+
call_expr
859+
argument:
860+
argument
861+
value:
862+
name_expr
863+
identifier: identifier "rowId"
864+
callee:
865+
name_expr
866+
identifier: identifier "print"
867+
pattern:
868+
constructor_pattern
869+
element:
870+
pattern_element
871+
key:
872+
name_expr <-- ERROR: The field pattern_element.key should contain identifier, but got name_expr
873+
identifier: identifier "threadRowId"
874+
pattern: tuple_pattern "_"
875+
pattern_element
876+
pattern:
877+
name_pattern
878+
identifier: identifier "rowId"
879+
constructor:
880+
member_access_expr
881+
base: inferred_type_expr "."
882+
member: identifier "thread"
883+
value:
884+
name_expr
885+
identifier: identifier "x"

0 commit comments

Comments
 (0)