phan/ProposedAnnotations

Add a common tag to indicate that there are no undeclared magic methods/properties.

TysonAndre opened this issue · 1 comments

In Psalm, this is psalm-seal-methods/psalm-seal-properties.

In Phan, this is phan-forbid-undeclared-magic-methods/phan-forbid-undeclared-magic-properties.

In the majority of use cases, you'd want a single tag that would apply to any analyzer/IDE that exists.

  • x(experimental) is the best prefix I can come up with - Having a hyphen is needed to avoid tools such as doctrine from treating the annotations like
  • For a few exceptions (e.g. there's a plugin that's only implemented for one analyzer/IDE that adds the methods), having analyzer-specific tags that other analyzers ignore is still useful.

Something along the lines of @seal-properties/@seal-methods on classes, interfaces, and traits would work for that. (Or @x-seal-properties, but there's probably no reason for a prefix in names that have hyphens already)

  • I'd prefer for that to be inheritable, and possibly add @unseal-properties (name to be determined)

cc @muglug

I like seal-methods/seal-properties. It’s not as obvious, but it aligns with some widely-used terminology (sealed) with somewhat similar meaning