TomasVotruba
e2e99f269b
Add strict_types to lib code
2017-08-18 23:00:13 +02:00
Nikita Popov
a32e3797d4
Generate PHP 7 type annotations
2017-04-28 21:40:59 +02:00
Nikita Popov
3da189769c
Distinguish between implicit/explicit alias
...
The UseUse::$alias node can now be null if an alias is not
explicitly given. As such "use Foo\Bar" and "use Foo\Bar as Bar"
are now represented differently.
The UseUse->getAlias() method replicates the previous semantics,
by returning "Bar" in both cases.
2017-04-28 21:05:01 +02:00
Nikita Popov
a6846e3b71
Always use Identifier nodes
...
The parser will now always generate Identifier nodes (for
non-namespaced identifiers). This obsoletes the useIdentifierNodes
parser option.
Node constructors still accepts strings and will implicitly create
an Identifier wrapper. Identifier implement __toString(), so that
outside of strict-mode many things continue to work without changes.
2017-04-28 20:57:32 +02:00
Nikita Popov
7f6477ed83
Combine class/non-class name resolution into single method
2017-04-28 17:18:13 +02:00
Nikita Popov
6168abd9a0
Extract name resolution logic into NameContext
...
All the generic name resolution logic is now available as a separate
class with a public API.
2017-04-27 21:06:07 +02:00
Nikita Popov
fba61390d8
Use null-coalesce operator
2017-04-24 22:32:40 +02:00
Nikita Popov
f291a19fd5
Merge branch '3.x'
...
Conflicts:
lib/PhpParser/Parser/Php7.php
2017-02-26 23:13:21 +01:00
Nikita Popov
86ea6fe8c4
Remove leftover code
2017-02-26 22:53:08 +01:00
Nikita Popov
dce34f37db
Merge branch '3.x'
2017-02-26 22:51:27 +01:00
Nikita Popov
1b59e918f7
Perform NullableType resolution earlier
...
This makes sure function signatures are already fully resolved in
enterNode(). Resolves issue #360 .
2017-02-26 22:50:31 +01:00
Matthew Brown
329e90c239
Improve doc comments
2017-02-09 20:49:52 +01:00
Nikita Popov
bfea338d36
Update doc comments after previous comment
...
Make some of the type annotations more accurate, and complete the
generated doc-comments to be complete (with description and
parameter annotations.)
2017-01-26 00:16:54 +01:00
Matthew Brown
e3b87f40aa
Add non-void return types
2017-01-25 23:32:50 +01:00
Matthew Brown
7b441d2142
Fix issues reported by psalm
2017-01-23 01:06:46 +01:00
Nikita Popov
f21309f52f
Add NameResolver mode that does not modify nodes
2016-12-26 21:45:33 +01:00
Felix Becker
3e8c8d248d
Add originalName attribute in NameResolver
...
For now gated behind a preserveOriginalNames option.
2016-12-22 20:25:02 +01:00
Ondrej Mirtes
a485ecd7ba
NameResolver - resolve Name in NullableType
2016-12-06 12:21:30 +01:00
Nikita Popov
bcdfb703d5
Cleanup imports
...
Thanks PhpStorm :)
2016-11-23 22:58:18 +01:00
Nikita Popov
fa7357b483
Represent empty Name::slice() using null
...
Instead of a Name([]) dummy value, that is invalid in other
contexts.
2016-10-22 17:02:38 +02:00
Nikita Popov
91cb82d3d2
Explicitly support Name copy construction
...
It already worked beforehand by accident ... make clear it's
actually supported.
2016-10-22 16:41:58 +02:00
Nikita Popov
f99a96e0a2
Introduce ErrorHandler
...
Add ErrorHandler interface, as well as ErrorHandler\Throwing
and ErrorHandler\Collecting. The error handler is passed to
Parser::parse(). This supersedes the throwOnError option.
NameResolver now accepts an ErrorHandler in the ctor.
2016-10-16 22:12:46 +02:00
Nikita Popov
90834bff8e
Add namespacedName attribute on runtime-resolved names
...
The NameResolver now adds a namespacedName attribute on function/
const names which cannot be statically resolved.
2016-10-11 19:44:22 +02:00
Nikita Popov
537b59d4d1
PHP 7.1: Support multi-catch
...
Catch::$type is now an array Catch::$types.
2016-07-22 15:40:00 +02:00
Nikita Popov
0265c28e6e
Switch NameResolver resolve methods to be immutable
...
To make it theoretically possible to expose this as API.
Add slice() method to Name to allow this. Deprecate existing mutable
Name APIs.
2015-07-12 23:56:57 +02:00
Nikita Popov
1a1bd1448d
Support mixed group use declarations
2015-06-13 11:27:38 +02:00
Nikita Popov
9620f79cdc
Add partial group use support
...
Supported via Stmt\GroupUse which has Name $prefix in addition to
the usual.
Still missing: Mixed group uses.
2015-06-12 23:05:28 +02:00
Nikita Popov
e1a0ec3724
Add support for anonymous classes
...
Has not landed upstream yet, but syntax is unlikely to change.
2015-04-26 23:04:31 +02:00
Nikita Popov
52dafafd10
Resolve param type hints earlier
...
For convenience of concurrent visitors that want to perform
enterNode actions based on Stmt\Function_ etc.
Fixes #188 .
2015-03-25 20:57:39 +01:00
Nikita Popov
dce19b074b
Strict type compliance
...
Were this library to be fully annotated with scalar types and
return types where possible and were strict types to be enabled
for all files, the test suite would now pass.
2015-03-24 11:19:17 +01:00
Nikita Popov
3ad0d4b310
Add support for return type declarations [PHP 7]
...
This adds an additional "returnType" subnode to Stmt\Function_,
Stmt\ClassMethod and Expr\Closure, as well as the corresponding
support in the name resolver and pretty printer.
2015-03-12 22:16:12 +01:00
Arne Blankerts
6fad8ff32a
Make NameResolver resolve trait alias and precedence names
2014-11-03 16:06:43 +01:00
nikic
6d0589d14f
Ensure that special class names are unqualified
...
Replicates the PHP error message
2014-08-11 22:04:52 +02:00
Elliot Levin
c0340053d1
Fix case sensitivity for special class names
2014-08-11 21:41:54 +02:00
nikic
a5e0bbcb62
Support use function/const in name resolver
2014-03-26 23:28:32 +01:00
nikic
f82862ec9c
Port library to use namespaces, with BC for old names
2014-02-06 20:29:35 +01:00