1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 02:33:17 +02:00
Commit Graph

534 Commits

Author SHA1 Message Date
Xinchen Hui a6519d0514 year++ 2018-01-02 12:57:58 +08:00
Sammy Kaye Powers b591c329ee Allow trailing commas in function and method calls 2017-11-06 07:13:56 +00:00
Anatol Belski bc5811f361 further sync for vim mode lines 2017-07-04 18:12:45 +02:00
Sammy Kaye Powers 12300f465e Add trailing comma syntax support for mixed and unmixed group use lists
RFC: https://wiki.php.net/rfc/list-syntax-trailing-commas
2017-05-01 12:19:47 +02:00
Anatol Belski c698299550 Interned strings unification for TS/NTS
Hereby, interned strings are supported in thread safe PHP. The patch
implements two types of interned strings

- interning per process, strings are not freed till process end
- interning per request, strings are freed at request end

There is no runtime interning.

With Opcache, all the permanent iterned strings are copied into SHM on
startup, additional copying into SHM might happen on demand.
2017-03-04 10:39:13 +01:00
Sammy Kaye Powers 9e29f841ce Update copyright headers to 2017 2017-01-02 09:30:12 -06:00
Nikita Popov fe98ff94bb Merge branch 'PHP-7.1' 2016-12-11 13:34:28 +01:00
Nikita Popov 2c70581338 Fix T_NUM_STRING negation
T_NUM_STRING follows the rules of symtable numeric string
conversion. If the offset isn't an integer under those rules, it
is treated as a string. This should apply to negated T_NUM_STRINGs
as well.
2016-12-11 13:33:25 +01:00
Christoph M. Becker dd35ba08ef Merge branch 'PHP-7.1' 2016-10-14 14:15:31 +02:00
Christoph M. Becker 2cc3aeb4b9 Implement #72918: negative offset inside a quoted string leads to parse error
We allow negative numeric offsets for the simple syntax inside
double-quoted and heredoc strings.
2016-10-14 14:14:08 +02:00
Nikita Popov 8754b191f7 Fix "already in use" check inconsistencies/bugs
This fixes the following issues:
 * "use function" and "use const" inside namespaced code were checking
   for conflicts against class imports. Now they always check against
   the correct symbol type.
 * Symbol conflicts are now always checked within a single file only.
   Previously class uses inside namespaced code were checked globally.
   This behavior is illegal because symbols from other files are not
   visible if opcache is used, resulting in behavioral discrepancies.
   Additionally this made the presence/absence of symbol errors dependent
   on autoloading order, which is volatile.
 * The "single file" restriction is now enforced by collecting defined
   symbols inside a separate hash table. Previously it was enforced
   (for the non-namespaced case) by comparing the filename of the
   symbol declaration. However this is inaccurate if the same filename
   is used multiple times, such as may happen if eval() is used.
 * Additionally the previous approach relies on symbols being registered
   at compile-time, which is not the case for late-bound classes, which
   makes the behavior dependent on class declaration order, as well as
   opcache (which may cause delayed early-binding).
 * Lastly, conflicts are now consistently checked for conditionally
   defined symbols. Previously only declaration-after-use conflicts were
   checked in this case. Now use-after-declaration conflicts are
   detected as well.
2016-10-07 00:12:55 +02:00
Davey Shafik b33e965111 Use non-deprecated %pure-parser 2016-08-11 18:29:55 +02:00
Nikita Popov ab304579ff Forbid use of array() in nested destructuring
Previously array() was only forbidden on the outermost level.
2016-07-06 21:15:54 +02:00
Xinchen Hui 493524454d Improve the signature 2016-06-14 08:05:17 -07:00
Xinchen Hui aeb3948f3c Cleanup 2016-06-13 09:33:19 -07:00
Xinchen Hui dcd1c29f79 Fixed bug #72395 (list() regression) 2016-06-13 09:21:14 -07:00
Dmitry Stogov 0cdbabe558 Merge branch 'nullable_types' of github.com:morrisonlevi/php-src
* 'nullable_types' of github.com:morrisonlevi/php-src:
  Fix bug #71428
  Add nullable parameter types
  Implement nullable return types.
2016-05-23 10:14:26 +03:00
Bob Weinand 4f077aee83 Allow for [] = $array; (alias for list()) 2016-05-20 01:51:05 +02:00
Dmitry Stogov ccf18da450 Eliminated checks for (func->op_array.fn_flags & ZEND_ACC_GENERATOR) in fast path of DO_FCALL* handlers.
This slightly improves calls to regular function and method calls in cost of a bit slower generator initialization.
Separate call frame for generators, allocated on heap, now created by ZEND_GENERATOR_CREATE instruction.
2016-05-13 01:40:15 +03:00
Dmitry Stogov 7b94b958cc Intern some known (and offten used) strings. 2016-05-12 13:47:22 +03:00
Levi Morrison 9662259cb9 Add nullable parameter types
This works off of Dmitry's commit for nullable return types
2016-05-05 11:53:32 -06:00
Dmitry Stogov 49fe737e58 Implement nullable return types. 2016-05-05 09:34:16 -06:00
Pierrick Charron 0aed2cc2a4 Allow catching multiple exception types in a single catch statement
This commit add the possibility to catch multiple exception types in
a single catch statement to avoid code duplication.

try {
	   // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
	   // Code to handle the exception
} catch (\Exception $e) {
	   // ...
}
2016-05-01 18:47:08 -04:00
Nikita Popov 5c7903f477 Merge branch 'PHP-7.0' 2016-04-07 05:52:51 +02:00
Nikita Popov 5ab950cb2c Remove __halt_compiler from semi-reserved tokens
token_get_all() is not capable of dealing with this one correctly.
2016-04-07 05:52:32 +02:00
Andrea Faulds 37c8bb5868 Allow specifying keys on list() elements
Squashed commit of the following:

commit 0361dbe356
Author: Andrea Faulds <ajf@ajf.me>
Date:   Fri Mar 25 16:59:20 2016 +0000

    UPGRADING and NEWS

commit dca9d4a36c
Author: Andrea Faulds <ajf@ajf.me>
Date:   Fri Mar 25 16:45:18 2016 +0000

    Add tests contributed by @jesseschalken

commit e557f77eab
Author: Andrea Faulds <ajf@ajf.me>
Date:   Fri Mar 25 16:44:51 2016 +0000

    Rebuild VM

commit 70942e4c3c
Author: Andrea Faulds <ajf@ajf.me>
Date:   Wed Feb 24 13:12:26 2016 +0000

    Add test for evaluation order of nested list() keys

commit ed3592e80c
Author: Andrea Faulds <ajf@ajf.me>
Date:   Wed Feb 24 12:42:04 2016 +0000

    Add test for evaluation order

commit 589756cbcc
Author: Andrea Faulds <ajf@ajf.me>
Date:   Tue Jan 19 17:29:34 2016 +0000

    Allow arbitrary expressions for key

commit 3f622077c3
Author: Andrea Faulds <ajf@ajf.me>
Date:   Tue Jan 19 17:45:10 2016 +0000

    Remove compile-time HANDLE_NUMERIC (see bug #63217)

commit bab758119a
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sun Jan 17 01:20:26 2016 +0000

    Handle numeric strings

commit 14bfe93ddc
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sun Jan 17 01:09:36 2016 +0000

    Allow trailing comma

commit f4c8b2cb30
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sat Jan 16 23:47:11 2016 +0000

    Add tests

commit 0085884a61
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sat Jan 16 22:24:23 2016 +0000

    Handle non-integer/string opcodes

commit e572d2d0ad
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sat Jan 16 21:10:33 2016 +0000

    Disallow mixing keyed and unkeyed list() elements

commit cede13ccfe
Author: Andrea Faulds <ajf@ajf.me>
Date:   Sun Jan 10 20:46:44 2016 +0000

    list() with keys (no foreach or tests)
2016-03-25 17:18:42 +00:00
Nikita Popov d9f0c8429d Merge branch 'PHP-7.0' 2016-03-11 22:28:50 +01:00
Grigorii Sokolik ccc5150f15 Fix bug #71767 2016-03-11 22:27:48 +01:00
Xinchen Hui 563659822d Merge branch 'PHP-7.0' 2016-01-02 17:56:54 +08:00
Xinchen Hui 97a9470d97 bump year which is missed in rev 49493a2 2016-01-02 17:56:11 +08:00
Dmitry Stogov a75c195000 Implemented the RFC Support Class Constant Visibility.
Squashed commit of the following:

commit f11ca0e7a5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Dec 8 12:38:42 2015 +0300

    Fixed test expectation

commit 211f873f54
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Dec 8 12:28:38 2015 +0300

    Embed zend_class_constant.flags into zend_class_constants.value.u2.access_flags

commit 51deab84b2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Dec 7 11:18:55 2015 +0300

    Fixed issues found by Nikita

commit 544dbd5b47
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Sat Dec 5 02:41:05 2015 +0300

    Refactored immplementation of https://wiki.php.net/rfc/class_const_visibility
    @reeze created an RFC here and I emailed internals here and didn't get any responses positive/negative.
2015-12-08 12:40:42 +03:00
Xinchen Hui 05738eb71a Revert "Improved fix for Fully qualified (leading backslash) type names must fail"
This reverts commit 00865ae22f.
2015-11-25 19:06:42 +08:00
Xinchen Hui 00865ae22f Improved fix for Fully qualified (leading backslash) type names must fail
it now all fails with COMPILE_ERROR instead of syntax error for T_ARRAY
but COMPILE_ERROR for int
2015-11-25 11:27:32 +08:00
Nikita Popov e3e92e96c1 Fixed bug #70430 2015-10-15 22:14:23 +02:00
Nikita Popov 06f38d36a8 Reindent zend_yytnamerr
Separating this whitespace change from the next diff.
2015-10-15 22:13:14 +02:00
Márcio Almada ddb6d7801e Fix bug #70650 2015-10-07 16:25:59 +02:00
Márcio Almada c08b3922dd adds missing tokens to list of semi-reserved words and regenerates test suite 2015-09-04 15:02:50 +02:00
Nikita Popov 186b0f3770 Don't allow leading \ in group use decl list
We recently added support for "use \Foo\{Bar}". This commit drops
support for the reverse "use Foo\{\Bar}". Those two got mixed up
in the initial implementation.
2015-08-20 11:47:43 +02:00
Márcio Almada 7568d5cb89 fixes a syntactical inconsistency with group use and leading \
discussion: http://news.php.net/php.internals/87774
2015-08-18 19:23:58 -03:00
Dmitry Stogov 4bd22cf1c1 Improved zend_string API (Francois Laupretre)
Squashed commit of the following:

commit d96eab8d79
Author: Francois Laupretre <francois@tekwire.net>
Date:   Fri Jun 26 01:23:31 2015 +0200

    Use the new 'ZSTR' macros in the rest of the code.

    Does not change anything to the generated code (thanks to compat macros) but cleaner.

commit b352643910
Author: Francois Laupretre <francois@tekwire.net>
Date:   Thu Jun 25 13:45:06 2015 +0200

    Improve zend_string API

    Add missing methods
2015-06-29 16:44:54 +03:00
Nikita Popov a684e6adb2 Drop unnecessary %prec
Leftover from a previous implementation
2015-06-20 13:10:51 +02:00
Xinchen Hui 438d17e74e Even fake token better to be in upper case 2015-05-26 18:11:07 +08:00
Bob Weinand 31f3eeb0c5 Fix tokenizer test due to recent changes 2015-05-26 00:17:27 +02:00
Bob Weinand 69b54ba926 Also unreserve T_CLASS 2015-05-25 22:58:30 +02:00
Bob Weinand 36c3c47434 Set %expect to 0 in parser (Using %prec) 2015-05-25 20:26:57 +02:00
Bob Weinand 21ccdf6304 Rebuild scanner, add NEWS/UPGRADING 2015-05-25 19:00:08 +02:00
Márcio Almada 110759386e ext tokenizer port + cleanup unused lexer states
we basically added a mechanism to store the token stream during parsing
and exposed the entire parser stack on the tokenizer extension through
an opt in flag: token_get_all($src, TOKEN_PARSE).

this change allows easy future language enhancements regarding context
aware parsing & scanning without further maintance on the tokenizer
extension while solves known inconsistencies "parseless" tokenizer
extension has when it handles `__halt_compiler()` presence.
2015-04-30 03:03:29 -03:00
Márcio Almada a75decd452 implement context sensitive language with lexical feedback
The implementation has no regression risks, has an even smaller footprint
compared to the previous attempt involving a pure lexical approach, is higly
predictable and higly configurable.

To turn a word semi-reserved you only need to edit the "SEMI_RESERVED" parser rule,
it's an inclusive list of all the words that should be matched as T_STRING on specific contexts.
Example:

```
method_modifiers function returns_ref indentifier '(' parameter_list ')' ...
```

instead of:

```
method_modifiers function returns_ref T_STRING '(' parameter_list ')' ...
```

TODO: port ext tokenizer
2015-04-30 03:03:29 -03:00
Nikita Popov f2f890a256 More cleanup (mainly retab) 2015-04-26 15:54:30 +02:00
krakjoe 49608e0608 Rebase Joe's anon classes implementation 2015-04-26 15:04:22 +02:00