branch: externals/phps-mode
commit 08589687eb02c25122ad3422562998b4bf0a613c
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    Implemented new unit tests for PHP 8.4
---
 test/phps-mode-test-parser.el | 85 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 83 insertions(+), 2 deletions(-)

diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el
index 8144e1637b..e762adc9a2 100644
--- a/test/phps-mode-test-parser.el
+++ b/test/phps-mode-test-parser.el
@@ -195,9 +195,90 @@
   (phps-mode-test-parser--buffer-contents
    "<?php\n\nclass Foo {\n    const PHP = 'PHP 8.3';\n}\n\n$searchableConstant 
= 'PHP';\n\nvar_dump(Foo::{$searchableConstant});"
    "PHP 8.3 Dynamic class constant fetch"
-   (lambda()
-     (phps-mode-parser-parse)))
+   (lambda() (phps-mode-parser-parse)))
 
+  (phps-mode-test-parser--buffer-contents
+  "<?php\nclass Locale
+{
+    public string $languageCode;
+
+    public string $countryCode
+    {
+        set (string $countryCode) {
+            $this->countryCode = strtoupper($countryCode);
+        }
+    }
+
+    public string $combinedCode
+    {
+        get => \sprintf(\"%s_%s\", $this->languageCode, $this->countryCode);
+        set (string $value) {
+            [$this->languageCode, $this->countryCode] = explode('_', $value, 
2);
+        }
+    }
+
+    public function __construct(string $languageCode, string $countryCode)
+    {
+        $this->languageCode = $languageCode;
+        $this->countryCode = $countryCode;
+    }
+}
+
+$brazilianPortuguese = new Locale('pt', 'br');
+var_dump($brazilianPortuguese->countryCode); // BR
+var_dump($brazilianPortuguese->combinedCode); // pt_BR"
+  "PHP 8.4 Property hooks"
+  (lambda() (phps-mode-parser-parse)))
+
+  (phps-mode-test-parser--buffer-contents
+  "<?php\nclass PhpVersion
+{
+    public private(set) string $version = '8.4';
+
+    public function increment(): void
+    {
+        [$major, $minor] = explode('.', $this->version);
+        $minor++;
+        $this->version = \"{$major}.{$minor}\";
+    }
+}"
+  "PHP 8.4 Asymmetric Visibility"
+  (lambda() (phps-mode-parser-parse)))
+
+  (phps-mode-test-parser--buffer-contents
+   "<?php\nclass PhpVersion
+{
+    #[\\Deprecated(
+        message: \"use PhpVersion::getVersion() instead\",
+        since: \"8.4\",
+    )]
+    public function getPhpVersion(): string
+    {
+        return $this->getVersion();
+    }
+
+    public function getVersion(): string
+    {
+        return '8.4';
+    }
+}
+$phpVersion = new PhpVersion();
+// Deprecated: Method PhpVersion::getPhpVersion() is deprecated since 8.4, use 
PhpVersion::getVersion() instead
+echo $phpVersion->getPhpVersion();"
+   "PHP 8.4 #[\\Deprecated] Attribute"
+   (lambda() (phps-mode-parser-parse)))
+
+  (phps-mode-test-parser--buffer-contents
+   "<?php\nclass PhpVersion
+{
+    public function getVersion(): string
+    {
+        return 'PHP 8.4';
+    }
+}
+var_dump(new PhpVersion()->getVersion());"
+   "PHP 8.4 new MyClass()->method() without parentheses"
+   (lambda() (phps-mode-parser-parse)))
 
   (message "\n-- Ran tests for parser parse. --"))
 

Reply via email to