diff --git a/grammar.js b/grammar.js index 551e7f9..0b56000 100644 --- a/grammar.js +++ b/grammar.js @@ -123,7 +123,7 @@ module.exports = grammar({ "(", choice($.select_value, $.soong_config_variable), ",", - $.select_cases, + $._select_cases, ")", ), @@ -151,7 +151,7 @@ module.exports = grammar({ ")", ), - select_cases: ($) => seq( + _select_cases: ($) => seq( "{", optional(trailingCommaSeparated($.select_case)), // default *must* be the last one, enforced at parse-time... diff --git a/queries/indents.scm b/queries/indents.scm index 9e63d1e..2797122 100644 --- a/queries/indents.scm +++ b/queries/indents.scm @@ -11,9 +11,11 @@ (select_expression ")" @indent.branch) -(select_cases) @indent.begin -(select_cases - "}" @indent.branch) +; FIXME: how to fix this +; (select_expression +; "{" @indent.begin) +; (select_expression +; "}" @indent.branch) ; }}} ; Declarations {{{ diff --git a/src/grammar.json b/src/grammar.json index 2602bc0..0400043 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -487,7 +487,7 @@ }, { "type": "SYMBOL", - "name": "select_cases" + "name": "_select_cases" }, { "type": "STRING", @@ -597,7 +597,7 @@ } ] }, - "select_cases": { + "_select_cases": { "type": "SEQ", "members": [ { diff --git a/src/node-types.json b/src/node-types.json index e26beb4..24a3425 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -415,21 +415,6 @@ } } }, - { - "type": "select_cases", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "select_case", - "named": true - } - ] - } - }, { "type": "select_expression", "named": true, @@ -439,7 +424,7 @@ "required": true, "types": [ { - "type": "select_cases", + "type": "select_case", "named": true }, { diff --git a/src/parser.c b/src/parser.c index b33fb8a..b10080e 100644 --- a/src/parser.c +++ b/src/parser.c @@ -65,7 +65,7 @@ enum ts_symbol_identifiers { sym_select_expression = 46, sym_select_value = 47, sym_soong_config_variable = 48, - sym_select_cases = 49, + sym__select_cases = 49, sym_select_case = 50, sym_default_case = 51, sym__case_value = 52, @@ -78,7 +78,7 @@ enum ts_symbol_identifiers { aux_sym__old_module_repeat1 = 59, aux_sym__new_module_repeat1 = 60, aux_sym_interpreted_string_literal_repeat1 = 61, - aux_sym_select_cases_repeat1 = 62, + aux_sym__select_cases_repeat1 = 62, aux_sym_list_expression_repeat1 = 63, }; @@ -132,7 +132,7 @@ static const char * const ts_symbol_names[] = { [sym_select_expression] = "select_expression", [sym_select_value] = "select_value", [sym_soong_config_variable] = "soong_config_variable", - [sym_select_cases] = "select_cases", + [sym__select_cases] = "_select_cases", [sym_select_case] = "select_case", [sym_default_case] = "select_case", [sym__case_value] = "_case_value", @@ -145,7 +145,7 @@ static const char * const ts_symbol_names[] = { [aux_sym__old_module_repeat1] = "_old_module_repeat1", [aux_sym__new_module_repeat1] = "_new_module_repeat1", [aux_sym_interpreted_string_literal_repeat1] = "interpreted_string_literal_repeat1", - [aux_sym_select_cases_repeat1] = "select_cases_repeat1", + [aux_sym__select_cases_repeat1] = "_select_cases_repeat1", [aux_sym_list_expression_repeat1] = "list_expression_repeat1", }; @@ -199,7 +199,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_select_expression] = sym_select_expression, [sym_select_value] = sym_select_value, [sym_soong_config_variable] = sym_soong_config_variable, - [sym_select_cases] = sym_select_cases, + [sym__select_cases] = sym__select_cases, [sym_select_case] = sym_select_case, [sym_default_case] = sym_select_case, [sym__case_value] = sym__case_value, @@ -212,7 +212,7 @@ static const TSSymbol ts_symbol_map[] = { [aux_sym__old_module_repeat1] = aux_sym__old_module_repeat1, [aux_sym__new_module_repeat1] = aux_sym__new_module_repeat1, [aux_sym_interpreted_string_literal_repeat1] = aux_sym_interpreted_string_literal_repeat1, - [aux_sym_select_cases_repeat1] = aux_sym_select_cases_repeat1, + [aux_sym__select_cases_repeat1] = aux_sym__select_cases_repeat1, [aux_sym_list_expression_repeat1] = aux_sym_list_expression_repeat1, }; @@ -413,8 +413,8 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_select_cases] = { - .visible = true, + [sym__select_cases] = { + .visible = false, .named = true, }, [sym_select_case] = { @@ -465,7 +465,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, - [aux_sym_select_cases_repeat1] = { + [aux_sym__select_cases_repeat1] = { .visible = false, .named = false, }, @@ -6213,7 +6213,7 @@ static const uint16_t ts_small_parse_table[] = { STATE(12), 1, sym_comment, STATE(14), 1, - aux_sym_select_cases_repeat1, + aux_sym__select_cases_repeat1, STATE(19), 1, sym_interpreted_string_literal, STATE(102), 1, @@ -6236,7 +6236,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(41), 1, anon_sym_RBRACE, STATE(12), 1, - aux_sym_select_cases_repeat1, + aux_sym__select_cases_repeat1, STATE(13), 1, sym_comment, STATE(19), 1, @@ -6267,7 +6267,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_default, STATE(14), 2, sym_comment, - aux_sym_select_cases_repeat1, + aux_sym__select_cases_repeat1, [655] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, @@ -7171,7 +7171,7 @@ static const uint16_t ts_small_parse_table[] = { STATE(81), 1, sym_comment, STATE(95), 1, - sym_select_cases, + sym__select_cases, [1905] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, @@ -7687,9 +7687,9 @@ static const TSParseActionEntry ts_parse_actions[] = { [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_select_cases_repeat1, 2), - [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_select_cases_repeat1, 2), SHIFT_REPEAT(19), - [48] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_select_cases_repeat1, 2), SHIFT_REPEAT(41), + [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__select_cases_repeat1, 2), + [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__select_cases_repeat1, 2), SHIFT_REPEAT(19), + [48] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__select_cases_repeat1, 2), SHIFT_REPEAT(41), [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpreted_string_literal, 2), [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interpreted_string_literal, 3), [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), @@ -7789,11 +7789,11 @@ static const TSParseActionEntry ts_parse_actions[] = { [249] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), [251] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), [253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_select_cases, 5), + [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__select_cases, 5), [257] = {.entry = {.count = 1, .reusable = false}}, SHIFT(122), [259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), [261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_select_cases, 2), + [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__select_cases, 2), [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), [267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), [269] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), @@ -7805,14 +7805,14 @@ static const TSParseActionEntry ts_parse_actions[] = { [281] = {.entry = {.count = 1, .reusable = false}}, SHIFT(121), [283] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), [285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), - [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_select_cases, 3), + [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__select_cases, 3), [289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), [291] = {.entry = {.count = 1, .reusable = false}}, SHIFT(97), [293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), [295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), [297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_default_case, 3, .production_id = 16), [299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_select_case, 3, .production_id = 16), - [301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_select_cases, 4), + [301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__select_cases, 4), [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 2), [305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3), }; diff --git a/test/corpus/select.txt b/test/corpus/select.txt index 166463a..daf5b9b 100644 --- a/test/corpus/select.txt +++ b/test/corpus/select.txt @@ -17,13 +17,12 @@ foo = select(release_variable("RELEASE_TEST"), { (select_value (selection_type) (interpreted_string_literal)) - (select_cases - (select_case - (interpreted_string_literal) - (interpreted_string_literal)) - (select_case - (default) - (unset)))))) + (select_case + (interpreted_string_literal) + (interpreted_string_literal)) + (select_case + (default) + (unset))))) ================================================================================ Select (soong config variable) @@ -45,13 +44,12 @@ foo = select(soong_config_variable("my_namespace", "my_var"), { (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_case + (interpreted_string_literal) + (unset)) + (select_case + (interpreted_string_literal) + (interpreted_string_literal))))) ================================================================================ Select (no default) @@ -74,19 +72,18 @@ foo = select(variant("arch"), { (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_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) @@ -103,8 +100,7 @@ foo = select(variant("VARIANT"), {}) (select_expression (select_value (selection_type) - (interpreted_string_literal)) - (select_cases)))) + (interpreted_string_literal))))) ================================================================================ Select (default in wrong order) @@ -128,23 +124,22 @@ foo = select(variant("VARIANT"), { (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)) + (ERROR (select_case - (interpreted_string_literal) - (interpreted_string_literal)) - (select_case - (interpreted_string_literal) - (interpreted_string_literal)) - (ERROR - (select_case - (default) - (unset))) - (select_case - (interpreted_string_literal) - (interpreted_string_literal)) - (select_case - (interpreted_string_literal) - (interpreted_string_literal)))))) + (default) + (unset))) + (select_case + (interpreted_string_literal) + (interpreted_string_literal)) + (select_case + (interpreted_string_literal) + (interpreted_string_literal))))) ================================================================================ Select (no condition) @@ -165,13 +160,12 @@ foo = select(variant(), { (select_value (selection_type) (MISSING raw_string_literal)) - (select_cases - (select_case - (interpreted_string_literal) - (unset)) - (select_case - (default) - (interpreted_string_literal)))))) + (select_case + (interpreted_string_literal) + (unset)) + (select_case + (default) + (interpreted_string_literal))))) ================================================================================ Select (invalid type)