|
18 | 18 | use Microsoft\PhpParser\Node\ClassMembersNode; |
19 | 19 | use Microsoft\PhpParser\Node\ConstElement; |
20 | 20 | use Microsoft\PhpParser\Node\EnumCaseDeclaration; |
| 21 | +use Microsoft\PhpParser\Node\EnumInterfaceClause; |
21 | 22 | use Microsoft\PhpParser\Node\EnumMembers; |
22 | 23 | use Microsoft\PhpParser\Node\Expression; |
23 | 24 | use Microsoft\PhpParser\Node\Expression\{ |
@@ -3386,6 +3387,22 @@ private function parseEnumCaseDeclaration($parentNode) { |
3386 | 3387 | return $enumCaseDeclaration; |
3387 | 3388 | } |
3388 | 3389 |
|
| 3390 | + private function parseEnumInterfaceClause(EnumDeclaration $enumDeclaration): ?EnumInterfaceClause { |
| 3391 | + $enumInterfaceClause = new EnumInterfaceClause(); |
| 3392 | + $enumInterfaceClause->parent = $enumDeclaration; |
| 3393 | + $enumInterfaceClause->implementsKeyword = $this->eatOptional1(TokenKind::ImplementsKeyword); |
| 3394 | + |
| 3395 | + if ($enumInterfaceClause->implementsKeyword === null) { |
| 3396 | + return null; |
| 3397 | + } |
| 3398 | + |
| 3399 | + $enumInterfaceClause->interfaceNameList = |
| 3400 | + $this->parseQualifiedNameList($enumInterfaceClause); |
| 3401 | + return $enumInterfaceClause; |
| 3402 | + } |
| 3403 | + |
| 3404 | + |
| 3405 | + |
3389 | 3406 | /** |
3390 | 3407 | * @param Node $parentNode |
3391 | 3408 | * @param Token[] $modifiers |
@@ -3724,14 +3741,14 @@ private function parseTraitElementFn() { |
3724 | 3741 | private function parseEnumDeclaration($parentNode) { |
3725 | 3742 | $enumDeclaration = new EnumDeclaration(); |
3726 | 3743 | $enumDeclaration->parent = $parentNode; |
3727 | | - |
3728 | 3744 | $enumDeclaration->enumKeyword = $this->eat1(TokenKind::EnumKeyword); |
3729 | 3745 | $enumDeclaration->name = $this->eat1(TokenKind::Name); |
3730 | 3746 | $enumDeclaration->colonToken = $this->eatOptional1(TokenKind::ColonToken); |
3731 | 3747 | if ($enumDeclaration->colonToken !== null) { |
3732 | 3748 | $enumDeclaration->enumType = $this->tryParseParameterTypeDeclaration($enumDeclaration) |
3733 | 3749 | ?: new MissingToken(TokenKind::EnumType, $this->token->fullStart); |
3734 | 3750 | } |
| 3751 | + $enumDeclaration->enumInterfaceClause = $this->parseEnumInterfaceClause($enumDeclaration); |
3735 | 3752 |
|
3736 | 3753 | $enumDeclaration->enumMembers = $this->parseEnumMembers($enumDeclaration); |
3737 | 3754 |
|
|
0 commit comments