Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d9b660c

Browse files
Do not require description
1 parent 184e730 commit d9b660c

File tree

3 files changed

+7
-28
lines changed

3 files changed

+7
-28
lines changed

‎src/Ast/PhpDoc/TypelessParamTagValueNode.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class TypelessParamTagValueNode implements PhpDocTagValueNode
1919
/** @var string */
2020
public $parameterName;
2121

22-
/** @var string */
22+
/** @var string (may be empty) */
2323
public $description;
2424

2525
public function __construct(bool $isVariadic, string $parameterName, string $description, bool $isReference = false)

‎src/Parser/PhpDocParser.php

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,12 @@ private function parseParamTagValue(TokenIterator $tokens): Ast\PhpDoc\PhpDocTag
249249
$isReference = $tokens->tryConsumeTokenType(Lexer::TOKEN_REFERENCE);
250250
$isVariadic = $tokens->tryConsumeTokenType(Lexer::TOKEN_VARIADIC);
251251
$parameterName = $this->parseRequiredVariableName($tokens);
252+
$description = $this->parseOptionalDescription($tokens);
252253

253254
if ($type !== null) {
254-
$description = $this->parseOptionalDescription($tokens);
255255
return new Ast\PhpDoc\ParamTagValueNode($type, $isVariadic, $parameterName, $description, $isReference);
256256
}
257257

258-
$description = $this->parseRequiredDescription($tokens);
259258
return new Ast\PhpDoc\TypelessParamTagValueNode($isVariadic, $parameterName, $description, $isReference);
260259
}
261260

@@ -482,23 +481,6 @@ private function parseRequiredVariableName(TokenIterator $tokens): string
482481
return $parameterName;
483482
}
484483

485-
private function parseRequiredDescription(TokenIterator $tokens): string
486-
{
487-
$tokens->pushSavePoint();
488-
489-
$description = $this->parseOptionalDescription($tokens);
490-
491-
if (strlen($description) === 0) {
492-
$tokens->rollback();
493-
494-
$tokens->consumeTokenType(Lexer::TOKEN_OTHER);
495-
}
496-
497-
$tokens->dropSavePoint();
498-
499-
return $description;
500-
}
501-
502484
private function parseOptionalDescription(TokenIterator $tokens, bool $limitStartToken = false): string
503485
{
504486
if ($limitStartToken) {

‎tests/PHPStan/Parser/PhpDocParserTest.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -462,19 +462,16 @@ public function provideTypelessParamTagsData(): Iterator
462462
];
463463

464464
yield [
465-
'invalid without type and description',
465+
'OK without type and description',
466466
'/** @param $foo */',
467467
new PhpDocNode([
468468
new PhpDocTagNode(
469469
'@param',
470-
new InvalidTagValueNode(
470+
new TypelessParamTagValueNode(
471+
false,
471472
'$foo',
472-
new ParserException(
473-
'*/',
474-
Lexer::TOKEN_CLOSE_PHPDOC,
475-
16,
476-
Lexer::TOKEN_OTHER
477-
)
473+
'',
474+
false
478475
)
479476
),
480477
]),

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /