Skip to content

Commit 2d90596

Browse files
committed
Merge branch 'development' into #116-php8.1
2 parents b5348de + d0005fb commit 2d90596

25 files changed

+1700
-16
lines changed

.ci/win-ci-tools.psm1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ function EnableExtension {
299299

300300
Copy-Item -Path "${env:RELEASE_DLL_PATH}" -Destination "${env:PHPROOT}\ext\"
301301

302-
Enable-PhpExtension -Extension 'Zephir Parser' -Path "${env:PHPROOT}"
302+
Enable-PhpExtension -Extension zephir_parser -Path "${env:PHPROOT}"
303303
}
304304

305305
function PrepareReleasePackage {

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ jobs:
165165
- name: Run Tests
166166
if: matrix.arch == 'x64'
167167
run: |
168-
& ${env:TEST_PHP_EXECUTABLE} --ri 'Zephir Parser'
168+
& ${env:TEST_PHP_EXECUTABLE} --ri zephir_parser
169169
& ${env:TEST_PHP_EXECUTABLE} run-tests.php
170170
171171
- name: Prepare Release Package
@@ -321,7 +321,7 @@ jobs:
321321

322322
- name: Run Tests
323323
run: |
324-
php -d extension=./modules/zephir_parser.so --ri 'Zephir Parser'
324+
php -d extension=./modules/zephir_parser.so --ri zephir_parser
325325
make test NO_INTERACTION=1 REPORT_EXIT_STATUS=1
326326
327327
- name: Print failures

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## [Unreleased]
88

9+
## [1.4.1] - 2021-09-18
10+
### Changed
11+
- Renamed extension name from `Zephir Parser` to `zephir_parser` [#125](https://github.com/phalcon/php-zephir-parser/issues/125)
12+
13+
## [1.4.0] - 2021-09-18
14+
### Added
15+
- Added support for `mixed` type [#120](https://github.com/phalcon/php-zephir-parser/issues/120)
16+
- Added support for `yield` statement [#118](https://github.com/phalcon/php-zephir-parser/issues/118)
17+
918
## [1.3.8] - 2021-09-08
1019
### Changed
1120
- Changed CI from AppVeyor to Github Actions [#110](https://github.com/phalcon/php-zephir-parser/issues/110)
@@ -168,7 +177,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
168177
### Added
169178
- Initial stable release
170179

171-
[Unreleased]: https://github.com/phalcon/php-zephir-parser/compare/v1.3.8...HEAD
180+
[Unreleased]: https://github.com/phalcon/php-zephir-parser/compare/v1.4.1...HEAD
181+
[1.4.1]: https://github.com/phalcon/php-zephir-parser/compare/v1.4.0...v1.4.1
182+
[1.4.0]: https://github.com/phalcon/php-zephir-parser/compare/v1.3.8...v1.4.0
172183
[1.3.8]: https://github.com/phalcon/php-zephir-parser/compare/v1.3.7...v1.3.8
173184
[1.3.7]: https://github.com/phalcon/php-zephir-parser/compare/v1.3.6...v1.3.7
174185
[1.3.6]: https://github.com/phalcon/php-zephir-parser/compare/v1.3.5...v1.3.6

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
MIT License
33

4-
Copyright (c) 2013-2019 Zephir Team
4+
Copyright (c) 2013-present Zephir Team
55

66
Permission is hereby granted, free of charge, to any person obtaining a copy
77
of this software and associated documentation files (the "Software"), to deal

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.8
1+
1.4.1

config.m4

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ if test "$PHP_ZEPHIR_PARSER" = "yes"; then
6868
[PHP_INSTALL_HEADERS([ext/zephir_parser], $PHP_ZEPHIR_PARSER_HEADERS)])
6969

7070
PHP_ADD_MAKEFILE_FRAGMENT([parser.mk])
71+
72+
dnl Create directories because PECL can't
73+
if test ! -d parser; then
74+
mkdir parser
75+
fi
7176
fi
7277

7378
dnl Code Coverage -------------------------------------------------------------

package.xml

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<package packagerversion="1.10.5" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0"
3+
xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
5+
<name>zephir_parser</name>
6+
<channel>pecl.php.net</channel>
7+
<summary>Zephir code parser.</summary>
8+
<description>Zephir Parser is a code parser, delivered as a C extension for the PHP language.</description>
9+
<lead>
10+
<name>Anton Vasiliev</name>
11+
<user>jeckerson</user>
12+
<email>anton@phalcon.io</email>
13+
<active>yes</active>
14+
</lead>
15+
<date>2021-09-18</date>
16+
<time>15:00:00</time>
17+
<version>
18+
<release>1.4.1</release>
19+
<api>1.4.1</api>
20+
</version>
21+
<stability>
22+
<release>stable</release>
23+
<api>stable</api>
24+
</stability>
25+
<license uri="https://github.com/zephir-lang/php-zephir-parser/blob/development/LICENSE">MIT</license>
26+
<notes>
27+
Sat, Sep 18, 2021 - Zephir Parser 1.4.1
28+
29+
= Changes:
30+
31+
- Fixed issue #125: Renamed extension name from `Zephir Parser` to `zephir_parser`
32+
</notes>
33+
<contents>
34+
<dir name="/">
35+
<dir name="parser">
36+
<file name="parser.c" role="src"/>
37+
<file name="scanner.c" role="src"/>
38+
39+
<file name="parser.h" role="src"/>
40+
<file name="scanner.h" role="src"/>
41+
<file name="xx.h" role="src"/>
42+
<file name="zephir.h" role="src"/>
43+
</dir>
44+
45+
<dir name="tests">
46+
<dir name="base">
47+
<file name="cblocks.phpt" role="test"/>
48+
<file name="declare.phpt" role="test"/>
49+
<file name="empty01.phpt" role="test"/>
50+
<file name="empty02.phpt" role="test"/>
51+
<file name="extension_info.phpt" role="test"/>
52+
<file name="literals.phpt" role="test"/>
53+
<file name="types.phpt" role="test"/>
54+
<file name="variables.phpt" role="test"/>
55+
</dir>
56+
57+
<dir name="cf">
58+
<file name="do-while.phpt" role="test"/>
59+
<file name="for.phpt" role="test"/>
60+
<file name="if.phpt" role="test"/>
61+
<file name="loop.phpt" role="test"/>
62+
<file name="switch.phpt" role="test"/>
63+
<file name="try-catch01.phpt" role="test"/>
64+
<file name="try-catch02.phpt" role="test"/>
65+
<file name="try-catch03.phpt" role="test"/>
66+
<file name="while01.phpt" role="test"/>
67+
</dir>
68+
69+
<dir name="classes">
70+
<file name="bug48.phpt" role="test"/>
71+
<file name="constant.phpt" role="test"/>
72+
<file name="interface.phpt" role="test"/>
73+
<file name="method-visibility.phpt" role="test"/>
74+
</dir>
75+
76+
<dir name="comments">
77+
<dir name="dockblocks">
78+
<file name="bug13.phpt" role="test"/>
79+
<file name="empty.phpt" role="test"/>
80+
<file name="simple.phpt" role="test"/>
81+
</dir>
82+
83+
<file name="comment.phpt" role="test"/>
84+
<file name="comments_before.phpt" role="test"/>
85+
<file name="empty.phpt" role="test"/>
86+
<file name="sl_comment.phpt" role="test"/>
87+
</dir>
88+
89+
<dir name="errors">
90+
<file name="001.phpt" role="test"/>
91+
<file name="bug30.phpt" role="test"/>
92+
</dir>
93+
94+
<dir name="functions">
95+
<dir name="closures">
96+
<file name="closure_arrow.phpt" role="test"/>
97+
<file name="empty_closure.phpt" role="test"/>
98+
<file name="empty_closure_with_body.phpt" role="test"/>
99+
<file name="non_empty_closure_with_use.phpt" role="test"/>
100+
<file name="non_empty_closure_with_use_and_body.phpt" role="test"/>
101+
<file name="preg_replace_callback.phpt" role="test"/>
102+
</dir>
103+
104+
<dir name="parameter-types">
105+
<file name="int.phpt" role="test"/>
106+
<file name="mixed.phpt" role="test"/>
107+
</dir>
108+
109+
<dir name="return-types">
110+
<file name="int.phpt" role="test"/>
111+
<file name="mixed.phpt" role="test"/>
112+
</dir>
113+
114+
<file name="definition01.phpt" role="test"/>
115+
<file name="definition02.phpt" role="test"/>
116+
<file name="definition03.phpt" role="test"/>
117+
<file name="definition04.phpt" role="test"/>
118+
</dir>
119+
120+
<dir name="globals">
121+
<file name="001.phpt" role="test"/>
122+
</dir>
123+
124+
<dir name="namespaces">
125+
<file name="001.phpt" role="test"/>
126+
<file name="002.phpt" role="test"/>
127+
<file name="003.phpt" role="test"/>
128+
<file name="004.phpt" role="test"/>
129+
</dir>
130+
131+
<dir name="operators">
132+
<dir name="assignments">
133+
<file name="bitwise.phpt" role="test"/>
134+
<file name="concat.phpt" role="test"/>
135+
<file name="div.phpt" role="test"/>
136+
<file name="mod.phpt" role="test"/>
137+
<file name="mul.phpt" role="test"/>
138+
<file name="sub.phpt" role="test"/>
139+
</dir>
140+
141+
<file name="and.phpt" role="test"/>
142+
<file name="bitwise.phpt" role="test"/>
143+
<file name="bug89.phpt" role="test"/>
144+
<file name="comparison.phpt" role="test"/>
145+
<file name="decr.phpt" role="test"/>
146+
<file name="div.phpt" role="test"/>
147+
<file name="dot.phpt" role="test"/>
148+
<file name="erange.phpt" role="test"/>
149+
<file name="incr.phpt" role="test"/>
150+
<file name="instanceof.phpt" role="test"/>
151+
<file name="irange.phpt" role="test"/>
152+
<file name="mod.phpt" role="test"/>
153+
<file name="mul.phpt" role="test"/>
154+
<file name="negation.phpt" role="test"/>
155+
<file name="new01.phpt" role="test"/>
156+
<file name="new02.phpt" role="test"/>
157+
<file name="new03.phpt" role="test"/>
158+
<file name="new04.phpt" role="test"/>
159+
<file name="not.phpt" role="test"/>
160+
<file name="or.phpt" role="test"/>
161+
<file name="special.phpt" role="test"/>
162+
<file name="static-constant-access.phpt" role="test"/>
163+
<file name="static-property-access.phpt" role="test"/>
164+
<file name="sub.phpt" role="test"/>
165+
<file name="ternary.phpt" role="test"/>
166+
</dir>
167+
168+
<dir name="statements">
169+
<dir name="yield">
170+
<file name="empty-yield.phpt" role="test"/>
171+
<file name="yield-array.phpt" role="test"/>
172+
<file name="yield-closure.phpt" role="test"/>
173+
<file name="yield-key-value.phpt" role="test"/>
174+
<file name="yield-key-value-variables.phpt" role="test"/>
175+
<file name="yield-value.phpt" role="test"/>
176+
</dir>
177+
178+
<file name="break.phpt" role="test"/>
179+
<file name="continue.phpt" role="test"/>
180+
<file name="empty.phpt" role="test"/>
181+
<file name="fcall.phpt" role="test"/>
182+
<file name="fetch.phpt" role="test"/>
183+
<file name="mcall.phpt" role="test"/>
184+
<file name="require.phpt" role="test"/>
185+
<file name="require_once.phpt" role="test"/>
186+
<file name="return.phpt" role="test"/>
187+
<file name="scall.phpt" role="test"/>
188+
<file name="throw.phpt" role="test"/>
189+
<file name="unset.phpt" role="test"/>
190+
</dir>
191+
192+
<dir name="unicode">
193+
<file name="bug56.phpt" role="test"/>
194+
<file name="bug62.phpt" role="test"/>
195+
</dir>
196+
197+
<file name="skipif.inc" role="test"/>
198+
<file name="skipifwin32.inc" role="test"/>
199+
</dir>
200+
201+
<file name="config.m4" role="src"/>
202+
<file name="config.w32" role="src"/>
203+
<file name="zephir_parser.c" role="src"/>
204+
<file name="zephir_parser.h" role="src"/>
205+
<file name="CHANGELOG.md" role="doc"/>
206+
<file name="CODE_OF_CONDUCT.md" role="doc"/>
207+
<file name="LICENSE" role="doc"/>
208+
<file name="NO_WARRANTY" role="doc"/>
209+
</dir>
210+
</contents>
211+
<dependencies>
212+
<required>
213+
<php>
214+
<min>7.0.0</min>
215+
<max>8.0.99</max>
216+
</php>
217+
<pearinstaller>
218+
<min>1.10</min>
219+
</pearinstaller>
220+
</required>
221+
</dependencies>
222+
<providesextension>zephir_parser</providesextension>
223+
<extsrcrelease/>
224+
</package>

parser/base.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
178178
case XX_T_RETURN:
179179
xx_(xx_parser, XX_RETURN, NULL, parser_status);
180180
break;
181+
case XX_T_YIELD:
182+
xx_(xx_parser, XX_YIELD, NULL, parser_status);
183+
break;
181184
case XX_T_REQUIRE_ONCE:
182185
xx_(xx_parser, XX_REQUIRE_ONCE, NULL, parser_status);
183186
break;
@@ -444,6 +447,9 @@ void xx_parse_program(zval *return_value, char *program, size_t program_length,
444447
case XX_T_TYPE_RESOURCE:
445448
xx_(xx_parser, XX_TYPE_RESOURCE, NULL, parser_status);
446449
break;
450+
case XX_T_TYPE_MIXED:
451+
xx_(xx_parser, XX_TYPE_MIXED, NULL, parser_status);
452+
break;
447453
case XX_T_TYPE_CALLABLE:
448454
xx_(xx_parser, XX_TYPE_CALLABLE, NULL, parser_status);
449455
break;

parser/parser.h

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,6 @@ static void xx_ret_return_type_item(zval *ret, zval *type, zval *cast, int manda
534534
static void xx_ret_type(zval *ret, int type)
535535
{
536536
switch (type) {
537-
538537
case XX_TYPE_INTEGER:
539538
parser_get_string(ret, "int");
540539
return;
@@ -587,6 +586,10 @@ static void xx_ret_type(zval *ret, int type)
587586
parser_get_string(ret, "object");
588587
return;
589588

589+
case XX_TYPE_MIXED:
590+
parser_get_string(ret, "mixed");
591+
return;
592+
590593
case XX_T_TYPE_NULL:
591594
parser_get_string(ret, "null");
592595
return;
@@ -896,6 +899,28 @@ static void xx_ret_return_statement(zval *ret, zval *expr, xx_scanner_state *sta
896899
parser_add_int(ret, "char", state->active_char);
897900
}
898901

902+
static void xx_ret_yield_statement(zval *ret, zval *expr, zval *K, zval *V, xx_scanner_state *state)
903+
{
904+
array_init(ret);
905+
906+
parser_add_str(ret, "type", "yield");
907+
if (expr) {
908+
parser_add_zval(ret, "expr", expr);
909+
}
910+
911+
if (K) {
912+
parser_add_zval(ret, "key", K);
913+
}
914+
915+
if (V) {
916+
parser_add_zval(ret, "value", V);
917+
}
918+
919+
parser_add_str(ret, "file", state->active_file);
920+
parser_add_int(ret, "line", state->active_line);
921+
parser_add_int(ret, "char", state->active_char);
922+
}
923+
899924
static void xx_ret_require_once_statement(zval *ret, zval *expr, xx_scanner_state *state)
900925
{
901926
array_init(ret);
@@ -1040,6 +1065,10 @@ static void xx_ret_declare_statement(zval *ret, int type, zval *variables, xx_sc
10401065
parser_add_str(ret, "data-type", "resource");
10411066
break;
10421067

1068+
case XX_T_TYPE_MIXED:
1069+
parser_add_str(ret, "data-type", "mixed");
1070+
break;
1071+
10431072
case XX_T_TYPE_OBJECT:
10441073
parser_add_str(ret, "data-type", "object");
10451074
break;

parser/scanner.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#define XX_T_TYPE_RESOURCE 333
4747
#define XX_T_TYPE_NULL 334
4848
#define XX_T_TYPE_THIS 335
49+
#define XX_T_TYPE_MIXED 336
4950

5051
#define XX_T_NAMESPACE 350
5152
#define XX_T_CLASS 351
@@ -98,6 +99,7 @@
9899
#define XX_T_CATCH 398
99100
#define XX_T_DEPRECATED 399
100101
#define XX_T_REQUIRE_ONCE 459
102+
#define XX_T_YIELD 460
101103

102104
/* Operators */
103105
#define XX_T_AT '@'

0 commit comments

Comments
 (0)