diff --git a/grammar.js b/grammar.js index cfe0d4e..c9444a9 100644 --- a/grammar.js +++ b/grammar.js @@ -155,7 +155,7 @@ module.exports = grammar({ "{", optional(trailingCommaSeparated($.select_case)), // default *must* be the last one, enforced at parse-time... - optional(seq($.default_case, ",")), + optional(seq(alias($.default_case, $.select_case), ",")), "}", ), diff --git a/src/grammar.json b/src/grammar.json index 0683d3b..a9c7110 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -630,8 +630,13 @@ "type": "SEQ", "members": [ { - "type": "SYMBOL", - "name": "default_case" + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "default_case" + }, + "named": true, + "value": "select_case" }, { "type": "STRING", diff --git a/src/node-types.json b/src/node-types.json index 48b3587..6eb385e 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -177,68 +177,6 @@ "named": true, "fields": {} }, - { - "type": "default_case", - "named": true, - "fields": { - "pattern": { - "multiple": false, - "required": true, - "types": [ - { - "type": "default", - "named": true - } - ] - }, - "value": { - "multiple": false, - "required": true, - "types": [ - { - "type": "binary_expression", - "named": true - }, - { - "type": "boolean_literal", - "named": true - }, - { - "type": "identifier", - "named": true - }, - { - "type": "integer_literal", - "named": true - }, - { - "type": "interpreted_string_literal", - "named": true - }, - { - "type": "list_expression", - "named": true - }, - { - "type": "map_expression", - "named": true - }, - { - "type": "raw_string_literal", - "named": true - }, - { - "type": "select_expression", - "named": true - }, - { - "type": "unset", - "named": true - } - ] - } - } - }, { "type": "integer_literal", "named": true, @@ -420,6 +358,10 @@ "multiple": false, "required": true, "types": [ + { + "type": "default", + "named": true + }, { "type": "interpreted_string_literal", "named": true @@ -486,10 +428,6 @@ "multiple": true, "required": true, "types": [ - { - "type": "default_case", - "named": true - }, { "type": "select_case", "named": true diff --git a/src/parser.c b/src/parser.c index 2d7ccc9..7de8635 100644 --- a/src/parser.c +++ b/src/parser.c @@ -136,7 +136,7 @@ static const char * const ts_symbol_names[] = { [sym_soong_config_variable] = "soong_config_variable", [sym__select_cases] = "_select_cases", [sym_select_case] = "select_case", - [sym_default_case] = "default_case", + [sym_default_case] = "select_case", [sym__case_value] = "_case_value", [sym_list_expression] = "list_expression", [sym_map_expression] = "map_expression", @@ -204,7 +204,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_soong_config_variable] = sym_soong_config_variable, [sym__select_cases] = sym__select_cases, [sym_select_case] = sym_select_case, - [sym_default_case] = sym_default_case, + [sym_default_case] = sym_select_case, [sym__case_value] = sym__case_value, [sym_list_expression] = sym_list_expression, [sym_map_expression] = sym_map_expression, diff --git a/test/corpus/select.txt b/test/corpus/select.txt index ddaa8f2..205e13e 100644 --- a/test/corpus/select.txt +++ b/test/corpus/select.txt @@ -20,7 +20,7 @@ foo = select(release_variable("RELEASE_TEST"), { (select_case (interpreted_string_literal) (interpreted_string_literal)) - (default_case + (select_case (default) (unset))))) @@ -131,7 +131,7 @@ foo = select(variant("VARIANT"), { (interpreted_string_literal) (interpreted_string_literal)) (ERROR - (default_case + (select_case (default) (unset))) (select_case @@ -163,7 +163,7 @@ foo = select(variant(), { (select_case (interpreted_string_literal) (unset)) - (default_case + (select_case (default) (interpreted_string_literal)))))