[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode ad4e825 20/62: Added some new lex analyzer te
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode ad4e825 20/62: Added some new lex analyzer tests for PHP 8.0 tokens |
Date: |
Tue, 20 Apr 2021 10:56:16 -0400 (EDT) |
branch: externals/phps-mode
commit ad4e825ec0499fabab75824833b9aa83e072a83c
Author: Christian Johansson <christian@mediastrategi.se>
Commit: Christian Johansson <christian@mediastrategi.se>
Added some new lex analyzer tests for PHP 8.0 tokens
---
test/phps-mode-test-lexer.el | 71 +++++++++++++++++++++++++++++++++++++++-----
1 file changed, 64 insertions(+), 7 deletions(-)
diff --git a/test/phps-mode-test-lexer.el b/test/phps-mode-test-lexer.el
index 076632a..20e4545 100644
--- a/test/phps-mode-test-lexer.el
+++ b/test/phps-mode-test-lexer.el
@@ -226,15 +226,72 @@
phps-mode-lex-analyzer--tokens
'((T_OPEN_TAG 1 . 7) (T_COMMENT 7 . 22) (T_DOC_COMMENT 23 . 44)))))
- ;; (phps-mode-test--with-buffer
- ;; "<?php ??= $var EXIT die function return yield from yield try catch
finally throw if elseif endif else while endwhile do for endfor foreach
endforeach declare enddeclare instanceof as switch endswitch case default break
continue goto echo print class interface trait extends implements :: \\ ... ??
new clone var (int) (integer) (real) (double) (float) (string) (binary) (array)
(object) (boolean) (bool) (unset) eval include include_once require
require_once namespace use insteadof gl [...]
- ;; "All PHP tokens after each other"
- ;; (message "Tokens: %s" phps-mode-lex-analyzer--tokens)
- ;; (should (equal phps-mode-lex-analyzer--tokens
- ;; '((T_OPEN_TAG 1 . 7) (T_COALESCE_EQUAL 7 . 10)
(T_VARIABLE 11 . 15) (T_EXIT 16 . 20) (T_DIE 21 . 24) (T_FUNCTION 25 . 33)
(T_RETURN 34 . 40) (T_YIELD_FROM 41 . 52) (T_YIELD 52 . 57) (T_TRY 58 . 61)
(T_CATCH 62 . 67) (T_FINALLY 68 . 75) (T_THROW 76 . 81) (T_IF 82 . 84)
(T_ELSEIF 85 . 91) (T_ENDIF 92 . 97) (T_ELSE 98 . 102) (T_WHILE 103 . 108)
(T_ENDWHILE 109 . 117) (T_DO 118 . 120) (T_FOR 121 . 124) (T_ENDFOR 125 . 131)
(T_FOREACH 132 . 139) (T_ENDFOREACH 140 . 150) ( [...]
+ ;; https://www.php.net/releases/8.0/en.php
+ (phps-mode-test--with-buffer
+ "<?php\nhtmlspecialchars($string, double_encode: false);"
+ "PHP 8.0 Named arguments"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_STRING 7 . 23) ("(" 23 . 24) (T_VARIABLE 24 . 31)
("," 31 . 32) (T_STRING 33 . 46) (":" 46 . 47) (T_STRING 48 . 53) (")" 53 . 54)
(";" 54 . 55)))))
+
+ (phps-mode-test--with-buffer
+ "<?php\nclass PostsController\n{\n #[Route(\"/api/posts/{id}\", methods:
[\"GET\"])]\n public function get($id) { /* ... */ }\n}"
+ "PHP 8.0 Attributes"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_CLASS 7 . 12) (T_STRING 13 . 28) ("{" 29 . 30)
(T_ATTRIBUTE 35 . 37) (T_STRING 37 . 42) ("(" 42 . 43)
(T_CONSTANT_ENCAPSED_STRING 43 . 60) ("," 60 . 61) (T_STRING 62 . 69) (":" 69 .
70) ("[" 71 . 72) (T_CONSTANT_ENCAPSED_STRING 72 . 77) ("]" 77 . 78) (")" 78 .
79) ("]" 79 . 80) (T_PUBLIC 85 . 91) (T_FUNCTION 92 . 100) (T_STRING 101 . 104)
("(" 104 . 105) (T_VARIABLE 105 . 108) (")" 108 . 109) ("{" 110 . 111)
(T_COMMENT 112 . 121) ("}" 122 . 123) ("}" 124 . 125)))))
+
+ (phps-mode-test--with-buffer
+ "<?php\nclass Point {\n public function __construct(\n public float $x
= 0.0,\n public float $y = 0.0,\n public float $z = 0.0,\n ) {}\n}"
+ "PHP 8.0 Constructor property promotion"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_CLASS 7 . 12) (T_STRING 13 . 18) ("{" 19 . 20)
(T_PUBLIC 23 . 29) (T_FUNCTION 30 . 38) (T_STRING 39 . 50) ("(" 50 . 51)
(T_PUBLIC 56 . 62) (T_STRING 63 . 68) (T_VARIABLE 69 . 71) ("=" 72 . 73)
(T_DNUMBER 74 . 77) ("," 77 . 78) (T_PUBLIC 83 . 89) (T_STRING 90 . 95)
(T_VARIABLE 96 . 98) ("=" 99 . 100) (T_DNUMBER 101 . 104) ("," 104 . 105)
(T_PUBLIC 110 . 116) (T_STRING 117 . 122) (T_VARIABLE 123 . 125) ("=" 126 .
127) (T_DNUMBER 128 . 131) ("," 131 . 132) (")" [...]
+
+ (phps-mode-test--with-buffer
+ "<?php\nclass Number {\n public function __construct(\n private
int|float $number\n ) {}\n}\n\nnew Number('NaN'); // TypeError"
+ "PHP 8.0 Union types"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_CLASS 7 . 12) (T_STRING 13 . 19) ("{" 20 . 21)
(T_PUBLIC 24 . 30) (T_FUNCTION 31 . 39) (T_STRING 40 . 51) ("(" 51 . 52)
(T_PRIVATE 57 . 64) (T_STRING 65 . 68) ("|" 68 . 69) (T_STRING 69 . 74)
(T_VARIABLE 75 . 82) (")" 85 . 86) ("{" 87 . 88) ("}" 88 . 89) ("}" 90 . 91)
(T_NEW 93 . 96) (T_STRING 97 . 103) ("(" 103 . 104) (T_CONSTANT_ENCAPSED_STRING
104 . 109) (")" 109 . 110) (";" 110 . 111) (T_COMMENT 112 . 124)))))
- ;; TODO Add PHP 8 new tokens here
+ (phps-mode-test--with-buffer
+ "<?php\necho match (8.0) {\n '8.0' => \"Oh no!\",\n 8.0 => \"This is what
I expected\",\n};\n//> This is what I expected"
+ "PHP 8.0 Match expression"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_ECHO 7 . 11) (T_STRING 12 . 17) ("(" 18 . 19)
(T_DNUMBER 19 . 22) (")" 22 . 23) ("{" 24 . 25) (T_CONSTANT_ENCAPSED_STRING 28
. 33) (T_DOUBLE_ARROW 34 . 36) (T_CONSTANT_ENCAPSED_STRING 37 . 45) ("," 45 .
46) (T_DNUMBER 49 . 52) (T_DOUBLE_ARROW 53 . 55) (T_CONSTANT_ENCAPSED_STRING 56
. 81) ("," 81 . 82) ("}" 83 . 84) (";" 84 . 85) (T_COMMENT 86 . 113)))))
+
+ (phps-mode-test--with-buffer
+ "<?php\n\n$country = $session?->user?->getAddress()?->country;\n"
+ "PHP 8.0 Nullsafe operator"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_VARIABLE 8 . 16) ("=" 17 . 18) (T_VARIABLE 19 .
27) (T_NULLSAFE_OBJECT_OPERATOR 27 . 30) (T_STRING 30 . 34)
(T_NULLSAFE_OBJECT_OPERATOR 34 . 37) (T_STRING 37 . 47) ("(" 47 . 48) (")" 48 .
49) (T_NULLSAFE_OBJECT_OPERATOR 49 . 52) (T_STRING 52 . 59) (";" 59 . 60)))))
+
+ (phps-mode-test--with-buffer
+ "<?php\n\n0 == 'foobar' // false\n"
+ "PHP 8.0 Saner string to number comparisons"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_LNUMBER 8 . 9) (T_IS_EQUAL 10 . 12)
(T_CONSTANT_ENCAPSED_STRING 13 . 21) (T_COMMENT 22 . 30)))))
+
+ (phps-mode-test--with-buffer
+ "<?php\n\nstrlen([]); // TypeError: strlen(): Argument #1 ($str) must be of
type string, array given\n\narray_chunk([], -1); // ValueError: array_chunk():
Argument #2 ($length) must be greater than 0\n"
+ "PHP 8.0 Consistent type errors for internal functions"
+ (should
+ (equal
+ phps-mode-lex-analyzer--tokens
+ '((T_OPEN_TAG 1 . 7) (T_STRING 8 . 14) ("(" 14 . 15) ("[" 15 . 16) ("]"
16 . 17) (")" 17 . 18) (";" 18 . 19) (T_COMMENT 20 . 98) (T_STRING 100 . 111)
("(" 111 . 112) ("[" 112 . 113) ("]" 113 . 114) ("," 114 . 115) ("-" 116 . 117)
(T_LNUMBER 117 . 118) (")" 118 . 119) (";" 119 . 120) (T_COMMENT 121 . 195)))))
+ ;; TODO Add more PHP 8 examples here
)
- [elpa] externals/phps-mode 85ed75d 46/62: More work on automated parser generation, (continued)
- [elpa] externals/phps-mode 85ed75d 46/62: More work on automated parser generation, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode aeec1d2 55/62: Removed comment, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 62e7617 61/62: Merged GitHub, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode cd3bbfd 02/62: More work on PHP 8.0 lex analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 804a42e 09/62: Most of lex analyzer implemented, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 1072b2d 14/62: Improved debugging of lex-analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 9c63f7d 16/62: Passed first old tests for lexer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode e624011 19/62: White-space fixes for lexer unit tests, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode d893f7f 22/62: Passing some more tests, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode c1ab121 25/62: Work on making integration-tests pass, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode ad4e825 20/62: Added some new lex analyzer tests for PHP 8.0 tokens,
Christian Johansson <=
- [elpa] externals/phps-mode a418e41 26/62: Integration-test now comparing nest-location-stack as well, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode f1b513c 27/62: Passed another integration test, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a900472 29/62: Passed bookkeeping tests, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 685375c 31/62: Passing all unit tests after updated lex-analyzer, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 050fe6a 36/62: Updated version and modified date, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode ec19574 43/62: More implementation of grammar, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a99284a 39/62: Added TODO item, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 209055b 62/62: Updated date and version, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode 86de51b 51/62: Fixed bug with incremental nesting stack, Christian Johansson, 2021/04/20
- [elpa] externals/phps-mode a164e82 33/62: Updated README about PHP 8.0 lexer, Christian Johansson, 2021/04/20