File tree Expand file tree Collapse file tree 3 files changed +17
-15
lines changed
tests/pattern_matching/is Expand file tree Collapse file tree 3 files changed +17
-15
lines changed Original file line number Diff line number Diff line change @@ -8,13 +8,13 @@ interface B {}
8
8
interface C {}
9
9
class Foo implements A, B {}
10
10
11
- var_dump (1 is ( int& 1 ) );
12
- var_dump (2 is ( int& (1 |2 ) ));
13
- var_dump (3 is ( float& 1 ) );
14
- var_dump (4 is ( int& float) );
15
- var_dump ([] is ([]& [...]) );
16
- var_dump ('foo ' is ( string& 'bar ' ) );
17
- var_dump (new Foo () is ( A&B) );
11
+ var_dump (1 is int & 1 );
12
+ var_dump (2 is int & (1 |2 ));
13
+ var_dump (3 is float & 1 );
14
+ var_dump (4 is int & float);
15
+ var_dump([] is [] & [...]);
16
+ var_dump ('foo ' is string & 'bar ' );
17
+ var_dump(new Foo () is A&B);
18
18
var_dump(new Foo () is (A&C));
19
19
20
20
?>
Original file line number Diff line number Diff line change @@ -3,13 +3,14 @@ Or pattern
3
3
--FILE--
4
4
<?php
5
5
6
- var_dump (1 is ( 1 |2 |3 ) );
7
- var_dump (2 is ( 1 |2 |3 ) );
8
- var_dump (3 is ( 1 |2 |3 ) );
9
- var_dump (4 is ( 1 |2 |3 ) );
10
- var_dump (null is ( 1 |2 |3 ) );
11
- var_dump ([] is ( 1 |2 |3 ) );
6
+ var_dump (1 is 1 |2 |3 );
7
+ var_dump (2 is 1 |2 |3 );
8
+ var_dump (3 is 1 |2 |3 );
9
+ var_dump (4 is 1 |2 |3 );
10
+ var_dump (null is 1 |2 |3 );
11
+ var_dump ([] is 1 |2 |3 );
12
12
var_dump ('hello world ' is (1 |2 |3 ));
13
+ var_dump ('hello world ' is 1 |2 |3 === false );
13
14
14
15
?>
15
16
--EXPECT--
@@ -20,3 +21,4 @@ bool(false)
20
21
bool(false)
21
22
bool(false)
22
23
bool(false)
24
+ bool(true)
Original file line number Diff line number Diff line change @@ -52,6 +52,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
52
52
%destructor { if ($$) zend_string_release_ex ($$, 0 ); } <str>
53
53
54
54
%precedence T_THROW
55
+ %precedence T_IS
55
56
%precedence PREC_ARROW_FUNCTION
56
57
%precedence T_INCLUDE T_INCLUDE_ONCE T_REQUIRE T_REQUIRE_ONCE
57
58
%left T_LOGICAL_OR
@@ -80,7 +81,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
80
81
%precedence ' ~' T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST ' @'
81
82
%right T_POW
82
83
%precedence T_CLONE
83
- %precedence T_IS
84
84
85
85
/* Resolve danging else conflict */
86
86
%precedence T_NOELSE
@@ -1276,7 +1276,7 @@ expr:
1276
1276
| attributes T_STATIC inline_function
1277
1277
{ $$ = zend_ast_with_attributes($3 , $1 ); ((zend_ast_decl *) $$ )->flags |= ZEND_ACC_STATIC; }
1278
1278
| match { $$ = $1 ; }
1279
- | expr T_IS atomic_pattern { $$ = zend_ast_create(ZEND_AST_IS, $1 , $3 ); }
1279
+ | expr T_IS pattern { $$ = zend_ast_create(ZEND_AST_IS, $1 , $3 ); }
1280
1280
;
1281
1281
1282
1282
pattern :
You can’t perform that action at this time.
0 commit comments