Skip to content

Commit

Permalink
Add more property types
Browse files Browse the repository at this point in the history
Some of these are not maximally accurate due to lack of union
types.
  • Loading branch information
nikic committed Aug 17, 2023
1 parent 9a68468 commit ea77807
Show file tree
Hide file tree
Showing 34 changed files with 90 additions and 82 deletions.
4 changes: 2 additions & 2 deletions lib/PhpParser/Builder/ClassConst.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ class ClassConst implements PhpParser\Builder {

/** @var list<Node\AttributeGroup> */
protected array $attributeGroups = [];
/** @var Identifier|Node\Name|Node\ComplexType */
protected $type;
/** @var Identifier|Node\Name|Node\ComplexType|null */
protected ?Node $type = null;

/**
* Creates a class constant builder
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Builder/EnumCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class EnumCase implements PhpParser\Builder {
/** @var Identifier|string */
protected $name;
/** @var ?Node\Expr */
protected $value = null;
protected ?Node\Expr $value = null;
/** @var array<string, mixed> */
protected array $attributes = [];

Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Builder/FunctionLike.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ abstract class FunctionLike extends Declaration {
protected array $params = [];

/** @var Node\Identifier|Node\Name|Node\ComplexType|null */
protected $returnType = null;
protected ?Node $returnType = null;

/**
* Make the function return by reference.
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Builder/Param.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Param implements PhpParser\Builder {
/** @var Node\Expr|null */
protected ?Node\Expr $default = null;
/** @var Node\Identifier|Node\Name|Node\ComplexType|null */
protected $type = null;
protected ?Node $type = null;
/** @var bool */
protected bool $byRef = false;
/** @var int */
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Builder/Property.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Property implements PhpParser\Builder {
/** @var array<string, mixed> */
protected array $attributes = [];
/** @var null|Identifier|Name|ComplexType */
protected $type;
protected ?Node $type = null;
/** @var list<Node\AttributeGroup> */
protected array $attributeGroups = [];

Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Internal/PrintableNewAnonClassNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class PrintableNewAnonClassNode extends Expr {
/** @var int Modifiers */
public int $flags;
/** @var (Node\Arg|Node\VariadicPlaceholder)[] Arguments */
public $args;
public array $args;
/** @var null|Node\Name Name of extended class */
public ?Node\Name $extends;
/** @var Node\Name[] Names of implemented interfaces */
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/Expr/ArrowFunction.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class ArrowFunction extends Expr implements FunctionLike {
public array $params = [];

/** @var null|Node\Identifier|Node\Name|Node\ComplexType */
public $returnType;
public ?Node $returnType;

/** @var Expr */
public Expr $expr;
Expand Down
7 changes: 4 additions & 3 deletions lib/PhpParser/Node/Expr/ClassConstFetch.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;

class ClassConstFetch extends Expr {
/** @var Name|Expr Class name */
public $class;
public Node $class;
/** @var Identifier|Expr|Error Constant name */
public $name;
public Node $name;

/**
* Constructs a class const fetch node.
Expand All @@ -19,7 +20,7 @@ class ClassConstFetch extends Expr {
* @param string|Identifier|Expr|Error $name Constant name
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct($class, $name, array $attributes = []) {
public function __construct(Node $class, $name, array $attributes = []) {
$this->attributes = $attributes;
$this->class = $class;
$this->name = \is_string($name) ? new Identifier($name) : $name;
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/Expr/Closure.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Closure extends Expr implements FunctionLike {
/** @var ClosureUse[] use()s */
public array $uses;
/** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
public $returnType;
public ?Node $returnType;
/** @var Node\Stmt[] Statements */
public array $stmts;
/** @var Node\AttributeGroup[] PHP attribute groups */
Expand Down
10 changes: 5 additions & 5 deletions lib/PhpParser/Node/Expr/FuncCall.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@

class FuncCall extends CallLike {
/** @var Node\Name|Expr Function name */
public $name;
public Node $name;
/** @var array<Node\Arg|Node\VariadicPlaceholder> Arguments */
public $args;
public array $args;

/**
* Constructs a function call node.
*
* @param Node\Name|Expr $name Function name
* @param array<Node\Arg|Node\VariadicPlaceholder> $args Arguments
* @param Node\Name|Expr $name Function name
* @param array<Node\Arg|Node\VariadicPlaceholder> $args Arguments
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct($name, array $args = [], array $attributes = []) {
public function __construct(Node $name, array $args = [], array $attributes = []) {
$this->attributes = $attributes;
$this->name = $name;
$this->args = $args;
Expand Down
9 changes: 5 additions & 4 deletions lib/PhpParser/Node/Expr/Instanceof_.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Name;

class Instanceof_ extends Expr {
/** @var Expr Expression */
public Expr $expr;
/** @var Name|Expr Class name */
public $class;
public Node $class;

/**
* Constructs an instanceof check node.
*
* @param Expr $expr Expression
* @param Name|Expr $class Class name
* @param Expr $expr Expression
* @param Name|Expr $class Class name
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct(Expr $expr, $class, array $attributes = []) {
public function __construct(Expr $expr, Node $class, array $attributes = []) {
$this->attributes = $attributes;
$this->expr = $expr;
$this->class = $class;
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/Expr/List_.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class List_ extends Expr {
public const KIND_ARRAY = 2; // [] syntax

/** @var (ArrayItem|null)[] List of items to assign to */
public $items;
public array $items;

/**
* Constructs a list() destructuring node.
Expand Down
11 changes: 6 additions & 5 deletions lib/PhpParser/Node/Expr/MethodCall.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;
Expand All @@ -11,16 +12,16 @@ class MethodCall extends CallLike {
/** @var Expr Variable holding object */
public Expr $var;
/** @var Identifier|Expr Method name */
public $name;
public Node $name;
/** @var array<Arg|VariadicPlaceholder> Arguments */
public $args;
public array $args;

/**
* Constructs a function call node.
*
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
Expand Down
10 changes: 5 additions & 5 deletions lib/PhpParser/Node/Expr/New_.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@

class New_ extends CallLike {
/** @var Node\Name|Expr|Node\Stmt\Class_ Class name */
public $class;
public Node $class;
/** @var array<Arg|VariadicPlaceholder> Arguments */
public $args;
public array $args;

/**
* Constructs a function call node.
*
* @param Node\Name|Expr|Node\Stmt\Class_ $class Class name (or class node for anonymous classes)
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param Node\Name|Expr|Node\Stmt\Class_ $class Class name (or class node for anonymous classes)
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct($class, array $args = [], array $attributes = []) {
public function __construct(Node $class, array $args = [], array $attributes = []) {
$this->attributes = $attributes;
$this->class = $class;
$this->args = $args;
Expand Down
11 changes: 6 additions & 5 deletions lib/PhpParser/Node/Expr/NullsafeMethodCall.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;
Expand All @@ -11,16 +12,16 @@ class NullsafeMethodCall extends CallLike {
/** @var Expr Variable holding object */
public Expr $var;
/** @var Identifier|Expr Method name */
public $name;
public Node $name;
/** @var array<Arg|VariadicPlaceholder> Arguments */
public $args;
public array $args;

/**
* Constructs a nullsafe method call node.
*
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
Expand Down
7 changes: 4 additions & 3 deletions lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;

class NullsafePropertyFetch extends Expr {
/** @var Expr Variable holding object */
public Expr $var;
/** @var Identifier|Expr Property name */
public $name;
public Node $name;

/**
* Constructs a nullsafe property fetch node.
*
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Property name
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Property name
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct(Expr $var, $name, array $attributes = []) {
Expand Down
7 changes: 4 additions & 3 deletions lib/PhpParser/Node/Expr/PropertyFetch.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Identifier;

class PropertyFetch extends Expr {
/** @var Expr Variable holding object */
public Expr $var;
/** @var Identifier|Expr Property name */
public $name;
public Node $name;

/**
* Constructs a function call node.
*
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Property name
* @param Expr $var Variable holding object
* @param string|Identifier|Expr $name Property name
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct(Expr $var, $name, array $attributes = []) {
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/Expr/ShellExec.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

class ShellExec extends Expr {
/** @var (Expr|InterpolatedStringPart)[] Interpolated string array */
public $parts;
public array $parts;

/**
* Constructs a shell exec (backtick) node.
Expand Down
14 changes: 7 additions & 7 deletions lib/PhpParser/Node/Expr/StaticCall.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@

class StaticCall extends CallLike {
/** @var Node\Name|Expr Class name */
public $class;
public Node $class;
/** @var Identifier|Expr Method name */
public $name;
public Node $name;
/** @var array<Arg|VariadicPlaceholder> Arguments */
public $args;
public array $args;

/**
* Constructs a static method call node.
*
* @param Node\Name|Expr $class Class name
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param Node\Name|Expr $class Class name
* @param string|Identifier|Expr $name Method name
* @param array<Arg|VariadicPlaceholder> $args Arguments
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct($class, $name, array $args = [], array $attributes = []) {
public function __construct(Node $class, $name, array $args = [], array $attributes = []) {
$this->attributes = $attributes;
$this->class = $class;
$this->name = \is_string($name) ? new Identifier($name) : $name;
Expand Down
11 changes: 6 additions & 5 deletions lib/PhpParser/Node/Expr/StaticPropertyFetch.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,25 @@

namespace PhpParser\Node\Expr;

use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Name;
use PhpParser\Node\VarLikeIdentifier;

class StaticPropertyFetch extends Expr {
/** @var Name|Expr Class name */
public $class;
public Node $class;
/** @var VarLikeIdentifier|Expr Property name */
public $name;
public Node $name;

/**
* Constructs a static property fetch node.
*
* @param Name|Expr $class Class name
* @param string|VarLikeIdentifier|Expr $name Property name
* @param Name|Expr $class Class name
* @param string|VarLikeIdentifier|Expr $name Property name
* @param array<string, mixed> $attributes Additional attributes
*/
public function __construct($class, $name, array $attributes = []) {
public function __construct(Node $class, $name, array $attributes = []) {
$this->attributes = $attributes;
$this->class = $class;
$this->name = \is_string($name) ? new VarLikeIdentifier($name) : $name;
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/IntersectionType.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

class IntersectionType extends ComplexType {
/** @var (Identifier|Name)[] Types */
public $types;
public array $types;

/**
* Constructs an intersection type.
Expand Down
2 changes: 1 addition & 1 deletion lib/PhpParser/Node/NullableType.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

class NullableType extends ComplexType {
/** @var Identifier|Name Type */
public $type;
public Node $type;

/**
* Constructs a nullable type (wrapping another type).
Expand Down

0 comments on commit ea77807

Please sign in to comment.