Don't treat ::class as ::VARIANT (requiring write_props)
commit1ad6681a8ac7aab2fd2366b8443598b758d2b9e8
authorLeo Osvald <leoo@fb.com>
Fri, 4 Jun 2021 01:16:38 +0000 (3 18:16 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Fri, 4 Jun 2021 01:18:08 +0000 (3 18:18 -0700)
tree95ea25de10850c83744f9e9507ef4edb72513a5c
parentb1cb7db06bf578692b5c8f31d30878cb3b731025
Don't treat ::class as ::VARIANT (requiring write_props)

Summary:
Typechecker treats `::class` as class constant access,
and in case of enum classes it was assumed that we always access *variants*.
Instead, we should special-case `class` since it is always pure,
where as unlike variants require the WriteProperty capability.

Reviewed By: vassilmladenov

Differential Revision: D28885882

fbshipit-source-id: cbda3602f179a6ba188ba3755487ee42021417dc
hphp/hack/src/typing/typing.ml
hphp/hack/test/typecheck/coeffects/enum-class_nonvariant-access.php [new file with mode: 0644]
hphp/hack/test/typecheck/coeffects/enum-class_nonvariant-access.php.exp [new file with mode: 0644]