aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lockfile.json4
-rw-r--r--queries/php_only/highlights.scm31
-rw-r--r--tests/query/highlights/php/keywords.php27
-rw-r--r--tests/query/highlights/php/namespaces.php147
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
+ }
+}