tree-sitter-bp/test/corpus/select.txt
Bruno BELANYI c56e2eca70 Simplify 'select_value' rule
Upstream has greatly simplified the parsing of `select` expressions, in
order to add multi-valued `select`.

To this end, we remove the hard-coded list of function names, and accept
an arbitrary number of arguments.
2024-04-23 15:11:00 +00:00

251 lines
6.5 KiB
Plaintext

================================================================================
Select
================================================================================
foo = select(release_variable("RELEASE_TEST"), {
"d": "d2",
default: unset,
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(default)
(unset))))))
================================================================================
Select (soong config variable)
================================================================================
foo = select(soong_config_variable("my_namespace", "my_var"), {
"foo": unset,
"default": "bar",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(unset))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))))))
================================================================================
Select (no default)
================================================================================
foo = select(variant("arch"), {
"x86": "my_x86",
"x86_64": "my_x86_64",
"arm": "my_arm",
"arm64": "my_arm64",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))))))
================================================================================
Select (no values)
================================================================================
foo = select(variant("VARIANT"), {})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal))
(select_cases))))
================================================================================
Select (default in wrong order)
================================================================================
foo = select(variant("VARIANT"), {
"x86": "my_x86",
"x86_64": "my_x86_64",
default: unset,
"arm": "my_arm",
"arm64": "my_arm64",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(default)
(unset))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(interpreted_string_literal)
(interpreted_string_literal))))))
================================================================================
Select (no condition)
================================================================================
foo = select(variant(), {
"d": unset,
default: "f2",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type))
(select_cases
(select_case
(interpreted_string_literal)
(unset))
(select_case
(default)
(interpreted_string_literal))))))
================================================================================
Select (invalid type)
================================================================================
foo = select(some_unknown_type("CONDITION"), {
"d": "d2",
default: "f2",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(default)
(interpreted_string_literal))))))
================================================================================
Select (multiple type arguments)
================================================================================
foo = select(release_variable("ONE", "TWO"), {
"d": "d2",
default: "f2",
})
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(select_expression
(select_value
(selection_type)
(interpreted_string_literal)
(interpreted_string_literal))
(select_cases
(select_case
(interpreted_string_literal)
(interpreted_string_literal))
(select_case
(default)
(interpreted_string_literal))))))
================================================================================
Select as an identifier
================================================================================
select = 42
foo {
select: false,
}
--------------------------------------------------------------------------------
(source_file
(assignment
(identifier)
(operator)
(integer_literal))
(module
(identifier)
(property
(identifier)
(boolean_literal))))