Skip to content

Commit 360f44e

Browse files
committedJun 19, 2024
Switch from _ to * for wildcard pattern
This avoids a BC break, and/or incompatibilities with _ named types.
1 parent fc205f6 commit 360f44e

10 files changed

+13
-48
lines changed
 

‎Zend/tests/numeric_literal_separator_002.phpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ Invalid use: trailing underscore
55
100_;
66
?>
77
--EXPECTF--
8-
Parse error: syntax error, unexpected token "_" in %s on line %d
8+
Parse error: syntax error, unexpected identifier "_" in %s on line %d

‎Zend/tests/numeric_literal_separator_004.phpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ Invalid use: underscore left of period
55
100_.0;
66
?>
77
--EXPECTF--
8-
Parse error: syntax error, unexpected token "_" in %s on line %d
8+
Parse error: syntax error, unexpected identifier "_" in %s on line %d

‎Zend/tests/pattern_matching/is/underscore_bc.phpt

-19
This file was deleted.

‎Zend/tests/pattern_matching/is/wildcard.phpt

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ Wildcard pattern matching
55

66
class Foo {}
77

8-
var_dump('' is _);
9-
var_dump(42 is _);
10-
var_dump(3.141 is _);
11-
var_dump(null is _);
12-
var_dump(true is _);
13-
var_dump(new Foo() is _);
14-
var_dump([1, 2, 3] is _);
8+
var_dump('' is *);
9+
var_dump(42 is *);
10+
var_dump(3.141 is *);
11+
var_dump(null is *);
12+
var_dump(true is *);
13+
var_dump(new Foo() is *);
14+
var_dump([1, 2, 3] is *);
1515

1616
?>
1717
--EXPECT--

‎Zend/tests/pattern_matching/match/basic.phpt

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var_dump(match ('Foo') {
5555
is 1 => wrong(),
5656
is 2 => wrong(),
5757
is 3 => wrong(),
58-
is _ => 'Wildcard pattern',
58+
is * => 'Wildcard pattern',
5959
});
6060

6161
var_dump(match (15) {

‎Zend/zend_language_parser.y

+2-3
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
136136
%token <ident> T_DEFAULT "'default'"
137137
%token <ident> T_MATCH "'match'"
138138
%token <ident> T_IS "'is'"
139-
%token <ident> T_UNDERSCORE "'_'"
140139
%token <ident> T_BREAK "'break'"
141140
%token <ident> T_CONTINUE "'continue'"
142141
%token <ident> T_GOTO "'goto'"
@@ -312,7 +311,7 @@ reserved_non_modifiers:
312311
| T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT | T_BREAK
313312
| T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
314313
| T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_FN | T_MATCH | T_ENUM
315-
| T_UNDERSCORE | T_IS
314+
| T_IS
316315
;
317316

318317
semi_reserved:
@@ -1298,7 +1297,7 @@ atomic_pattern:
12981297
| array_pattern { $$ = $1; }
12991298
| binding_pattern { $$ = $1; }
13001299
| class_const_pattern { $$ = $1; }
1301-
| T_UNDERSCORE { $$ = zend_ast_create(ZEND_AST_WILDCARD_PATTERN); }
1300+
| '*' { $$ = zend_ast_create(ZEND_AST_WILDCARD_PATTERN); }
13021301
| '(' pattern ')' {
13031302
$$ = $2;
13041303
if ($$->kind == ZEND_AST_OR_PATTERN || $$->kind == ZEND_AST_AND_PATTERN) {

‎Zend/zend_language_scanner.l

-8
Original file line numberDiff line numberDiff line change
@@ -1509,14 +1509,6 @@ OPTIONAL_WHITESPACE_OR_COMMENTS ({WHITESPACE}|{MULTI_LINE_COMMENT}|{SINGLE_LINE_
15091509
RETURN_TOKEN_WITH_IDENT(T_IS);
15101510
}
15111511

1512-
<ST_IN_SCRIPTING>"_"[ \t\r\n]*"(" {
1513-
yyless(1);
1514-
RETURN_TOKEN_WITH_STR(T_STRING, 0);
1515-
}
1516-
<ST_IN_SCRIPTING>"_" {
1517-
RETURN_TOKEN_WITH_IDENT(T_UNDERSCORE);
1518-
}
1519-
15201512
<ST_IN_SCRIPTING>"endswitch" {
15211513
RETURN_TOKEN_WITH_IDENT(T_ENDSWITCH);
15221514
}

‎ext/tokenizer/tokenizer_data.c

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎ext/tokenizer/tokenizer_data.stub.php

-5
Original file line numberDiff line numberDiff line change
@@ -242,11 +242,6 @@
242242
* @cvalue T_IS
243243
*/
244244
const T_IS = UNKNOWN;
245-
/**
246-
* @var int
247-
* @cvalue T_UNDERSCORE
248-
*/
249-
const T_UNDERSCORE = UNKNOWN;
250245
/**
251246
* @var int
252247
* @cvalue T_BREAK

‎ext/tokenizer/tokenizer_data_arginfo.h

+1-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)