diff options
| -rw-r--r-- | lockfile.json | 4 | ||||
| -rw-r--r-- | queries/php_only/highlights.scm | 31 | ||||
| -rw-r--r-- | tests/query/highlights/php/keywords.php | 27 | ||||
| -rw-r--r-- | tests/query/highlights/php/namespaces.php | 147 |
4 files changed, 175 insertions, 34 deletions
diff --git a/lockfile.json b/lockfile.json index 095615b8f..e3dd2cc4a 100644 --- a/lockfile.json +++ b/lockfile.json @@ -552,10 +552,10 @@ "revision": "bb53f204aa3e7507960014642965c9f9a9e84b1d" }, "php": { - "revision": "f3a19ab3217a6e838870fc7142fa492d1fd7a7c9" + "revision": "b22484c92180e6e30c14477f00e1c7f9d2e39304" }, "php_only": { - "revision": "f3a19ab3217a6e838870fc7142fa492d1fd7a7c9" + "revision": "b22484c92180e6e30c14477f00e1c7f9d2e39304" }, "phpdoc": { "revision": "fe3202e468bc17332bec8969f2b50ff1f1da3a46" diff --git a/queries/php_only/highlights.scm b/queries/php_only/highlights.scm index 6d51154df..2d473dd0c 100644 --- a/queries/php_only/highlights.scm +++ b/queries/php_only/highlights.scm @@ -194,6 +194,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) (named_type @@ -208,6 +210,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) (enum_declaration @@ -269,6 +273,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) (scoped_call_expression @@ -276,6 +282,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) (class_constant_access_expression @@ -284,6 +292,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ] (name) @constant) @@ -292,6 +302,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) (scoped_property_access_expression @@ -309,6 +321,8 @@ (name) @type (qualified_name (name) @type) + (relative_name + (name) @type) ]) ; Functions, methods, constructors @@ -326,11 +340,13 @@ name: (name) @function.method) (function_call_expression - function: (qualified_name - (name) @function.call)) - -(function_call_expression - (name) @function.call) + function: [ + (name) @function.call + (qualified_name + (name) @function.call) + (relative_name + (name) @function.call) + ]) (scoped_call_expression name: (name) @function.call) @@ -365,6 +381,8 @@ (name) @constructor (qualified_name (name) @constructor) + (relative_name + (name) @constructor) ]) ; Parameters @@ -410,6 +428,9 @@ (namespace_name (name) @module) +(relative_name + "namespace" @module.builtin) + ; Attributes (attribute_list) @attribute diff --git a/tests/query/highlights/php/keywords.php b/tests/query/highlights/php/keywords.php index 5504cab19..21d248e69 100644 --- a/tests/query/highlights/php/keywords.php +++ b/tests/query/highlights/php/keywords.php @@ -2,49 +2,22 @@ namespace Foo\Bar; //^^^^^^^ @keyword.type -// ^^^ @module -// ^^^ @module use Foo\Baz as Baaz; //^ @keyword.import -// ^^^ @module -// ^^^ @type // ^^ @keyword.operator -// ^^^^ @type.definition - -use Foo\Baz\{Foo, Bar}; -// ^^^ @type -// ^^^ @type use function Foo\foo as fooo; // ^^^^^^^^ @keyword.function -// ^^^ @function -// ^^^^ @function - -use function Foo\{bar, baz}; -// ^^^ @function -// ^^^ @function use const Foo\FOO as FOOO; // ^^^^^ @keyword.modifier -// ^^^ @constant -// ^^^^ @constant - -use const Foo\{FOO, BAR}; -// ^^^ @constant -// ^^^ @constant use Foo\Baz\{ -// ^^^ @module -// ^^^ @module - Bar, -//^^^ @type function foo, //^^^^^^^^ @keyword.function -// ^^^ @function const FOO, //^^^^^ @keyword.modifier -// ^^^ @constant }; abstract class A diff --git a/tests/query/highlights/php/namespaces.php b/tests/query/highlights/php/namespaces.php new file mode 100644 index 000000000..1c96a95b2 --- /dev/null +++ b/tests/query/highlights/php/namespaces.php @@ -0,0 +1,147 @@ +<?php + +namespace Foo\Bar; +// ^^^ @module +// ^^^ @module + +use Baz as Baaz; +// ^^^ @type +// ^^^^ @type +use Foo\Baz as Baaz; +// ^^^ @module +// ^^^ @type +// ^^^^ @type + +use Foo\{Bar, Baz as Baaz}; +// ^^^ @type +// ^^^ @type +// ^^^^ @type + +use function foo as fooo; +// ^^^ @function +// ^^^^ @function +// +use function Foo\foo as fooo; +// ^^^ @module +// ^^^ @function +// ^^^^ @function +use function Foo\{bar, foo as fooo}; +// ^^^ @function +// ^^^ @function +// ^^^^ @function +use const FOO as FOOO; +// ^^^ @constant +// ^^^^ @constant +use const Foo\FOO as FOOO; +// ^^^ @module +// ^^^ @constant +// ^^^^ @constant +use const Foo\{FOO as FOOO, BAR}; +// ^^^ @constant +// ^^^^ @constant +// ^^^ @constant + +use Foo\Baz\{ +// ^^^ @module +// ^^^ @module + Bar as Barr, +//^^^ @type +// ^^^^ @type + Foo\Bar as Barr, +//^^^ @module +// ^^^ @type +// ^^^^ @type + function foo as fooo, +// ^^^ @function +// ^^^^ @function + function Foo\foo as fooo, +// ^^^ @module +// ^^^ @function +// ^^^^ @function + const FOO as FOOO, +// ^^^ @constant +// ^^^^ @constant + const Foo\FOO as FOOO, +// ^^^ @module +// ^^^ @constant +// ^^^^ @constant +}; + +class Foo { + public function foo() { + Bar::foo(); +// ^^^ @type +// ^^^ @function.call + \Bar::foo(); +// ^^^ @type +// ^^^ @function.call + Foo\Bar::foo(); +// ^^^ @module +// ^^^ @type +// ^^^ @function.call + \Foo\Bar::foo(); +// ^^^ @module +// ^^^ @type +// ^^^ @function.call + namespace\Bar::foo(); +// ^^^^^^^^^ @module.builtin +// ^^^ @type +// ^^^ @function.call + namespace\Foo\Bar::foo(); +// ^^^^^^^^^ @module.builtin +// ^^^ @module +// ^^^ @type +// ^^^ @function.call + new Bar(); +// ^^^ @constructor + new \Bar(); +// ^^^ @constructor + new Foo\Bar(); +// ^^^ @module +// ^^^ @constructor + new \Foo\Bar(); +// ^^^ @module +// ^^^ @constructor + new namespace\Bar(); +// ^^^^^^^^^ @module.builtin +// ^^^ @constructor + new namespace\Foo\Bar(); +// ^^^^^^^^^ @module.builtin +// ^^^ @module +// ^^^ @constructor + BAZ; +// ^^^ @constant + \BAZ; +// ^^^ @constant + Foo\BAZ; +// ^^^ @module +// ^^^ @constant + \Foo\BAZ; +// ^^^ @module +// ^^^ @constant + namespace\BAZ; +// ^^^^^^^^^ @module.builtin +// ^^^ @constant + namespace\Foo\BAZ; +// ^^^^^^^^^ @module.builtin +// ^^^ @module +// ^^^ @constant + foo(); +// ^^^ @function.call + \foo(); +// ^^^ @function.call + Foo\foo(); +// ^^^ @module +// ^^^ @function.call + \Foo\foo(); +// ^^^ @module +// ^^^ @function.call + namespace\foo(); +// ^^^^^^^^^ @module.builtin +// ^^^ @function.call + namespace\Foo\foo(); +// ^^^^^^^^^ @module.builtin +// ^^^ @module +// ^^^ @function.call + } +} |
