Abdul Malik Ikhsan
d4fce83c2c
Remove useless cast (string) and @var doc
2025-01-16 21:27:18 +01:00
Nikita Popov
6478c5ac53
Fix PropertyHook::getStmts() for set hook
...
Produce the correct desugaring if the propertyName attribute is
set, and set it in the parser. Otherwise throw an exception.
Fixes #1053 .
2024-12-27 16:56:00 +01:00
Nikita Popov
48fd76e542
Make PropertyHook::getStmts() less incorrect
...
Still missing the assignment to the correct property, but at
least we're not returning from a non-void function now...
2024-12-27 16:30:03 +01:00
Ondrej Mirtes
f212bb7afb
Add PropertyHook::isFinal()
helper method with tests
2024-12-13 23:15:12 +01:00
Ondrej Mirtes
f43324a074
Missing flags subNode description in PropertyHook constructor PHPDoc
2024-12-13 23:15:12 +01:00
Ondrej Mirtes
73b160f8c4
Add flags helper methods Property::isAbstract()
and Property::isFinal()
2024-12-13 23:15:12 +01:00
Ondrej Mirtes
4f9dc8b0f5
Promoted properties with hooks do not need visibility modifier
2024-12-11 10:17:55 +01:00
Nathanael Esayeas
469377f4a8
Fix classmap authoritative autoloading ( #1046 )
...
This patch resolves #1045 by adding dummy class definitions
behind if (false) checks that are picked up the authoritative
autoloader.
2024-12-06 22:00:17 +01:00
Markus Staab
954f7a411f
More precise toLowerString()
return type
2024-11-05 21:19:09 +01:00
Nikita Popov
b493c51cce
[8.4] Add support for asymmetric visibility modifiers
...
Represented using new PRIVATE_SET, PROTECTED_SET and PUBLIC_SET
bits in Modifiers.
RFC: https://wiki.php.net/rfc/asymmetric-visibility-v2
2024-09-05 21:38:16 +02:00
Nikita Popov
03caf4cc99
[8.4] Add support for property hooks
...
Add hooks subnode to Stmt\Property and Param, which contains an
array of PropertyHook.
The property hook support is considered experimental and subject
to change.
RFC: https://wiki.php.net/rfc/property-hooks
2024-07-28 19:02:18 +02:00
Nikita Popov
d8235a2701
[8.4] Add support for __PROPERTY__ magic constant
...
Part of property hooks RFC.
2024-07-14 18:52:47 +02:00
Markus Staab
c5ee33df86
Declare more precise phpdoc types ( #993 )
2024-04-19 21:04:10 +09:00
Ondrej Mirtes
1eeeb2d525
Fix parent class of PropertyItem and UseItem
2023-12-22 19:57:32 +01:00
Nikita Popov
b4183c2b09
Remove Stmt\Throw
...
This was a backwards-compatibility shim for Expr\Throw.
2023-09-25 18:37:07 +02:00
Nikita Popov
a1ccf57727
Introduce Stmt\Block
...
Stmt\Block will be created for { $a; } style blocks, unless these
occur directly inside some structure that is usually combined
with a block.
For example if ($a) { $b; } will continue to use the old
representation (plain array in in If_::$stmts), but a free-standing
{ $b; } will become a Stmt\Block.
Fixes #590 .
2023-09-24 21:13:01 +02:00
RainX
f4961b89ac
Add missing phpdoc annotations in AST nodes ( #946 )
2023-09-18 21:16:54 +02:00
Nikita Popov
ab51e9d35a
Remove superfluous phpdoc tags
...
These just specify a type that is already specified as a real PHP
type.
2023-09-17 18:24:05 +02:00
Nikita Popov
2d3dd4e23e
Don't align phpdoc tags
...
I did this to start with, but then alignment kept being broken
during refactorings, and at some point I switched to not aligning,
and now we have a big mess.
Add a php-cs-fixer rule to consistently not align phpdoc tags.
2023-09-17 16:00:10 +02:00
Nikita Popov
e395f042d2
Add php-cs-fixer CI job
2023-09-17 11:08:23 +02:00
Markus Staab
263fa80b81
Use more precise Use_::TYPE_* types ( #945 )
...
For better static analysis support in consuming projects.
2023-09-14 10:03:42 +02:00
Nikita Popov
ea77807592
Add more property types
...
Some of these are not maximally accurate due to lack of union
types.
2023-08-17 21:36:07 +02:00
Nikita Popov
502b090900
Add property types
...
Types omitted in two places where we violate them currently:
Namespace_::$stmts can be null during parsing, and Enum_::$scalarType
can be a complex type for invalid programs.
2023-08-16 21:37:02 +02:00
Abdul Malik Ikhsan
eaa1d91b4e
Early return false after VariadicPlaceholder check on CallLike::isFirstClassCallable() ( #924 )
...
VariadicPlaceholder can only occur as the first (and only) argument, so avoid a loop to check for it.
2023-06-25 18:38:11 +02:00
Nikita Popov
23647573e8
Represent names using string rather than array of parts
...
In most circumstances we are interested in the whole string, not
the parts split by namespace separator. As names are common, this
representation measurably improves memory usage and performance.
2023-05-21 21:25:49 +02:00
Nikita Popov
df3a7057ab
Add Name::getParts(), deprecate Name::$parts
...
In preparation for switching this to a plain string in
PHP-Parser 5, deprecate direct access to the property and
provide an API that will work on both versions.
(cherry picked from commit c9e5a13d68486e9fd75f9be1b4639644e54e7f4f)
2023-05-21 21:24:13 +02:00
Nikita Popov
c23976a299
Stop accepting strings as types
...
For types the use of a string is ambiguous -- it could be either
an Identifier or a Name. Don't guess.
Retain the implicit promotion to Identifier in places where only
Identifier is legal, e.g. various symbol names.
2023-05-20 22:13:04 +02:00
Nikita Popov
a9dad5c54e
Fix type of ClassConst::$type
2023-05-20 22:01:01 +02:00
Nikita Popov
a5d4c1005c
Remove some unused symbols
2023-05-20 21:40:55 +02:00
Nikita Popov
5c267f55c9
Add support for typed constants
...
RFC: https://wiki.php.net/rfc/typed_class_constants
2023-05-20 21:02:03 +02:00
Nikita Popov
bbec9db626
Handle overflowing \u escape sequence
2023-03-01 22:39:15 +01:00
Nikita Popov
2df8878f5d
[PHP 8.3] Support dynamic class const fetch
...
RFC: https://wiki.php.net/rfc/dynamic_class_constant_fetch
2023-01-29 20:49:00 +01:00
Markus Staab
8ad4129442
Declare list types ( #907 )
...
Closes #905
2022-12-14 22:59:53 +01:00
Nikita Popov
4ce9781260
Fix parsing of large hex floats containing "e"
...
These ended up taking the code path for normal floats and being
cast to zero.
2022-11-12 16:15:32 +01:00
Nikita Popov
b3ad14b938
Fix some types
2022-09-17 20:33:04 +02:00
Nikita Popov
f98341f688
Specify more types
2022-09-17 18:48:56 +02:00
Nikita Popov
a099803d01
Use array<string, mixed> type for $attributes
...
Slightly more accurate, and stops PHPStan from complaining about
the missing array type information.
2022-09-11 20:51:31 +02:00
Nikita Popov
205bd75aa8
Add isPublic() etc methods on Param node
...
Also isPromoted() to check for any flags.
2022-09-11 16:11:32 +02:00
Nikita Popov
031c5e6ed0
Move verifyModifier/verifyClassModifier to Modifiers class
...
Now that the Modifiers are in a separate class, these *internal*
verification methods should also be moved there.
2022-09-11 16:05:21 +02:00
Christopher Hertel
36b2a996ca
Add isReadonly on Param node
2022-09-11 16:05:10 +02:00
Nikita Popov
b9fe3449e8
Add missing parameter types
2022-09-11 15:22:23 +02:00
Nikita Popov
f59f226f65
Fix some phpstan warnings
2022-09-11 12:16:12 +02:00
Jaroslav Hanslík
468c0ef6bc
Fixed type in UnionType
...
(cherry picked from commit 2f1fd784fe5560675722a1e5cbbcece5f43bf3a0)
2022-09-10 22:42:32 +02:00
Nikita Popov
4917c71a91
Rename Stmt\UseUse to UseItem
2022-09-03 18:59:48 +02:00
Nikita Popov
e1345f0c09
Rename Stmt\PropertyProperty to PropertyItem
2022-09-03 18:55:22 +02:00
Nikita Popov
03ccfa3dd4
Rename Stmt\DeclareDeclare to DeclareItem
2022-09-03 18:45:28 +02:00
Nikita Popov
a44faa6328
Rename Scalar\Encapsed to Scalar\InterpolatedString
2022-09-03 15:14:04 +02:00
Nikita Popov
11caa3b9cc
Add compat shim for EncapsedStringPart
2022-09-03 15:08:39 +02:00
Nikita Popov
f4ec6a1e53
Rename Scalar\EncapsedStringPart to InterpolatedStringPart
...
It is no longer an expression node, which unfortunately does
require a more awkward type for the Encaps node.
2022-09-03 13:25:23 +02:00
Nikita Popov
23835d20ef
Rename Scalar\LNumber to Scalar\Int_
2022-09-03 12:07:38 +02:00