44
55namespace TypeLang \PhpDoc \Platform ;
66
7+ use TypeLang \PhpDoc \DocBlock \Tag \AllowPrivateMutationTag \AllowPrivateMutationTagDefinition ;
78use TypeLang \PhpDoc \DocBlock \Tag \ApiTag \ApiTagDefinition ;
9+ use TypeLang \PhpDoc \DocBlock \Tag \ConsistentConstructorTag \ConsistentConstructorTagDefinition ;
810use TypeLang \PhpDoc \DocBlock \Tag \ImmutableTag \ImmutableTagDefinition ;
911use TypeLang \PhpDoc \DocBlock \Tag \InheritanceTag \ExtendsTagDefinition ;
1012use TypeLang \PhpDoc \DocBlock \Tag \InheritanceTag \ImplementsTagDefinition ;
1618use TypeLang \PhpDoc \DocBlock \Tag \PropertyTag \PropertyReadTagDefinition ;
1719use TypeLang \PhpDoc \DocBlock \Tag \PropertyTag \PropertyTagDefinition ;
1820use TypeLang \PhpDoc \DocBlock \Tag \PropertyTag \PropertyWriteTagDefinition ;
21+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmConsistentTemplatesTag \PsalmConsistentTemplatesTagDefinition ;
22+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmExternalMutationFreeTag \PsalmExternalMutationFreeTagDefinition ;
23+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmIgnoreFalsableReturnTag \PsalmIgnoreFalsableReturnTagDefinition ;
24+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmIgnoreNullableReturnTag \PsalmIgnoreNullableReturnTagDefinition ;
25+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmIgnoreVariableMethodTag \PsalmIgnoreVariableMethodTagDefinition ;
26+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmIgnoreVariablePropertyTag \PsalmIgnoreVariablePropertyTagDefinition ;
27+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmIgnoreVarTag \PsalmIgnoreVarTagDefinition ;
28+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmMutationFreeTag \PsalmMutationFreeTagDefinition ;
29+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmNoSealMethodsTag \PsalmNoSealMethodsTagDefinition ;
30+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmNoSealPropertiesTag \PsalmNoSealPropertiesTagDefinition ;
31+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmOverrideMethodVisibilityTag \PsalmOverrideMethodVisibilityTagDefinition ;
32+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmOverridePropertyVisibilityTag \PsalmOverridePropertyVisibilityTagDefinition ;
33+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmStubOverrideTag \PsalmStubOverrideTagDefinition ;
34+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmTaintSpecializeTag \PsalmTaintSpecializeTagDefinition ;
35+ use TypeLang \PhpDoc \DocBlock \Tag \PsalmVariadicTag \PsalmVariadicTagDefinition ;
36+ use TypeLang \PhpDoc \DocBlock \Tag \PureTag \PureTagDefinition ;
37+ use TypeLang \PhpDoc \DocBlock \Tag \ReadonlyAllowPrivateMutationTag \ReadonlyAllowPrivateMutationTagDefinition ;
1938use TypeLang \PhpDoc \DocBlock \Tag \ReadonlyTag \ReadonlyTagDefinition ;
2039use TypeLang \PhpDoc \DocBlock \Tag \RequireInheritanceTag \RequireExtendsTagDefinition ;
2140use TypeLang \PhpDoc \DocBlock \Tag \RequireInheritanceTag \RequireImplementsTagDefinition ;
2746use TypeLang \PhpDoc \DocBlock \Tag \TemplateTag \TemplateCovariantTagDefinition ;
2847use TypeLang \PhpDoc \DocBlock \Tag \TemplateTag \TemplateTagDefinition ;
2948use TypeLang \PhpDoc \DocBlock \Tag \VarTag \VarTagDefinition ;
49+ use TypeLang \PhpDoc \DocBlock \TagDefinition \TagDefinitionInterface ;
3050
3151/**
3252 * The Psalm platform: the "@psalm-*" tag family understood by Psalm.
3353 *
34- * Only those tags that restate an existing tag are wired up, as aliases onto it;
35- * Psalm's own analysis-specific tags carry no meaning here .
54+ * Tags that restate an existing one are wired as aliases onto it; Psalm's own
55+ * marker tags are contributed as their own flag definitions .
3656 */
3757final class PsalmPlatform extends Platform
3858{
@@ -43,6 +63,33 @@ final class PsalmPlatform extends Platform
4363
4464 public private(set) string $ name = self ::NAME ;
4565
66+ /**
67+ * @var iterable<non-empty-lowercase-string, TagDefinitionInterface>
68+ */
69+ public iterable $ tags {
70+ get => [
71+ 'psalm-allow-private-mutation ' => new AllowPrivateMutationTagDefinition (),
72+ 'psalm-consistent-constructor ' => new ConsistentConstructorTagDefinition (),
73+ 'psalm-pure ' => new PureTagDefinition (),
74+ 'psalm-readonly-allow-private-mutation ' => new ReadonlyAllowPrivateMutationTagDefinition (),
75+ PsalmConsistentTemplatesTagDefinition::NAME => new PsalmConsistentTemplatesTagDefinition (),
76+ PsalmExternalMutationFreeTagDefinition::NAME => new PsalmExternalMutationFreeTagDefinition (),
77+ PsalmMutationFreeTagDefinition::NAME => new PsalmMutationFreeTagDefinition (),
78+ PsalmIgnoreFalsableReturnTagDefinition::NAME => new PsalmIgnoreFalsableReturnTagDefinition (),
79+ PsalmIgnoreNullableReturnTagDefinition::NAME => new PsalmIgnoreNullableReturnTagDefinition (),
80+ PsalmIgnoreVarTagDefinition::NAME => new PsalmIgnoreVarTagDefinition (),
81+ PsalmIgnoreVariableMethodTagDefinition::NAME => new PsalmIgnoreVariableMethodTagDefinition (),
82+ PsalmIgnoreVariablePropertyTagDefinition::NAME => new PsalmIgnoreVariablePropertyTagDefinition (),
83+ PsalmNoSealMethodsTagDefinition::NAME => new PsalmNoSealMethodsTagDefinition (),
84+ PsalmNoSealPropertiesTagDefinition::NAME => new PsalmNoSealPropertiesTagDefinition (),
85+ PsalmOverrideMethodVisibilityTagDefinition::NAME => new PsalmOverrideMethodVisibilityTagDefinition (),
86+ PsalmOverridePropertyVisibilityTagDefinition::NAME => new PsalmOverridePropertyVisibilityTagDefinition (),
87+ PsalmStubOverrideTagDefinition::NAME => new PsalmStubOverrideTagDefinition (),
88+ PsalmTaintSpecializeTagDefinition::NAME => new PsalmTaintSpecializeTagDefinition (),
89+ PsalmVariadicTagDefinition::NAME => new PsalmVariadicTagDefinition (),
90+ ];
91+ }
92+
4693 /**
4794 * @var iterable<non-empty-lowercase-string, non-empty-lowercase-string>
4895 */
0 commit comments