Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / nikic / php-parser / lib / PhpParser / Builder / TraitUse.php
1 <?php declare(strict_types=1);
2
3 namespace PhpParser\Builder;
4
5 use PhpParser\Builder;
6 use PhpParser\BuilderHelpers;
7 use PhpParser\Node;
8 use PhpParser\Node\Stmt;
9
10 class TraitUse implements Builder
11 {
12     protected $traits = [];
13     protected $adaptations = [];
14
15     /**
16      * Creates a trait use builder.
17      *
18      * @param Node\Name|string ...$traits Names of used traits
19      */
20     public function __construct(...$traits) {
21         foreach ($traits as $trait) {
22             $this->and($trait);
23         }
24     }
25
26     /**
27      * Adds used trait.
28      *
29      * @param Node\Name|string $trait Trait name
30      *
31      * @return $this The builder instance (for fluid interface)
32      */
33     public function and($trait) {
34         $this->traits[] = BuilderHelpers::normalizeName($trait);
35         return $this;
36     }
37
38     /**
39      * Adds trait adaptation.
40      *
41      * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
42      *
43      * @return $this The builder instance (for fluid interface)
44      */
45     public function with($adaptation) {
46         $adaptation = BuilderHelpers::normalizeNode($adaptation);
47
48         if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
49             throw new \LogicException('Adaptation must have type TraitUseAdaptation');
50         }
51
52         $this->adaptations[] = $adaptation;
53         return $this;
54     }
55
56     /**
57      * Returns the built node.
58      *
59      * @return Node The built node
60      */
61     public function getNode() : Node {
62         return new Stmt\TraitUse($this->traits, $this->adaptations);
63     }
64 }