Skip to content

feat: asymmetric visibility support (PHP 8.4+)#1219

Open
jorgsowa wants to merge 6 commits intomainfrom
feat/asymmetric-visibility-syntax
Open

feat: asymmetric visibility support (PHP 8.4+)#1219
jorgsowa wants to merge 6 commits intomainfrom
feat/asymmetric-visibility-syntax

Conversation

@jorgsowa
Copy link
Copy Markdown
Collaborator

@jorgsowa jorgsowa commented Mar 19, 2026

Supersedes #1148 Closes #1148 Closes #1144

Add parsing support for PHP 8.4 asymmetric visibility modifiers on class properties and constructor promotion parameters.

  • Parse public private(set), protected private(set), private(set), protected(set) modifiers in class body
  • Parse asymmetric visibility on constructor promoted parameters via read_promoted in function.js
  • Add visibilitySet field to Declaration and PropertyStatement AST nodes
  • Add flagsSet field to Parameter AST node

@jorgsowa jorgsowa force-pushed the feat/asymmetric-visibility-syntax branch from 5cd1bd7 to d908669 Compare March 25, 2026 21:05
@jorgsowa jorgsowa marked this pull request as ready for review March 25, 2026 21:17
@czosel
Copy link
Copy Markdown
Collaborator

czosel commented Mar 29, 2026

This one has conflicts now 🙃

@jorgsowa jorgsowa force-pushed the feat/asymmetric-visibility-syntax branch 2 times, most recently from 500ebf7 to 6366ac1 Compare April 2, 2026 18:24
jorgsowa and others added 5 commits April 3, 2026 01:08
Add parsing support for PHP 8.4 asymmetric visibility modifiers on class
properties and constructor promotion parameters.

- Parse `public private(set)`, `protected private(set)`, `private(set)`,
  `protected(set)` modifiers in class body via `read_member_flags`
- Parse asymmetric visibility on constructor promoted parameters via
  `read_promoted` in function.js
- Add `visibilitySet` field to `Declaration` and `PropertyStatement` AST nodes
- Add `flagsSet` field to `Parameter` AST node
- Update `types.d.ts` with new fields
- All (set) parsing is gated behind `version >= 804`

Co-authored-by: Thomas Genin <664857+genintho@users.noreply.github.com>
@jorgsowa jorgsowa force-pushed the feat/asymmetric-visibility-syntax branch from 6366ac1 to e8b3211 Compare April 2, 2026 23:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8.4 - Asymmetric Visibility

2 participants