diff --git a/grammar.js b/grammar.js index 86d0dd6..d2c4652 100644 --- a/grammar.js +++ b/grammar.js @@ -118,6 +118,7 @@ module.exports = grammar({ ), )), + // FIXME select_expression: ($) => seq( "select", "(", @@ -127,6 +128,7 @@ module.exports = grammar({ ")", ), + // FIXME select_value: ($) => seq( field("type", alias( choice("product_variable", "release_variable", "variant"), @@ -137,6 +139,7 @@ module.exports = grammar({ ")", ), + // FIXME soong_config_variable: ($) => seq( field("type", alias("soong_config_variable", $.selection_type)), "(", @@ -151,6 +154,7 @@ module.exports = grammar({ ")", ), + // FIXME should probably be hidden completely select_cases: ($) => seq( "{", optional(trailingCommaSeparated($.select_case)), @@ -159,12 +163,14 @@ module.exports = grammar({ "}", ), + // FIXME: Do I really need to account for default_case is being different? select_case: ($) => seq( field("pattern", $._string_literal), ":", field("value", $._case_value) ), + // FIXME default_case: ($) => seq( field("pattern", "default"), ":", diff --git a/queries/highlights.scm b/queries/highlights.scm index a28d844..fa87c49 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -49,6 +49,15 @@ field: (identifier) @variable.member)) ; }}} +; Built-ins {{{ +[ + (unset) + "default" +] @variable.builtin + +(selection_type) @function.builtin +; }}} + ; Expressions {{{ (map_expression (property diff --git a/test/highlight/builtins.bp b/test/highlight/builtins.bp new file mode 100644 index 0000000..cb5333f --- /dev/null +++ b/test/highlight/builtins.bp @@ -0,0 +1,13 @@ +foo = select(soong_config_variable("my_namespace", "my_var"), { + // ^ function.builtin + "foo": unset, + // ^ variable.builtin + default: true, + // <- variable.builtin +}) + +/* Assigning to builtins is conveniently not allowed at runtime */ +unset = 12 +// <- variable.builtin +default = 27 +// <- variable.builtin diff --git a/test/highlight/select.bp b/test/highlight/select.bp new file mode 100644 index 0000000..8bf3113 --- /dev/null +++ b/test/highlight/select.bp @@ -0,0 +1,5 @@ +foo = select(soong_config_variable("my_namespace", "my_var"), { + // ^ keyword.conditional + "foo": unset, + default: "bar", +})