Skip to content

fix(extgen): extract Go function bodies via go/ast instead of brace counting#2379

Merged
alexandre-daubois merged 1 commit into
php:mainfrom
alexandre-daubois:fix/extgen-ast-body-extraction
May 12, 2026
Merged

fix(extgen): extract Go function bodies via go/ast instead of brace counting#2379
alexandre-daubois merged 1 commit into
php:mainfrom
alexandre-daubois:fix/extgen-ast-body-extraction

Conversation

@alexandre-daubois
Copy link
Copy Markdown
Member

No description provided.

@dunglas dunglas requested a review from Copilot May 12, 2026 12:58
@dunglas
Copy link
Copy Markdown
Member

dunglas commented May 12, 2026

Needs a rebase

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the internal/extgen generator’s Go source extraction logic to use go/ast parsing rather than manual brace counting, making function/method body extraction resilient to braces appearing in strings and comments.

Changes:

  • Replace line-scanning + brace counting in FuncParser with go/parser + AST-based source slicing.
  • Replace line-scanning + brace counting in class method parsing with AST-based extraction.
  • Add shared AST utilities and a regression test covering braces inside strings/comments.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
internal/extgen/funcparser.go Parse Go files via go/parser, associate //export_php:function directives via AST doc comments, and extract function source via node offsets.
internal/extgen/funcparser_test.go Adds a regression test ensuring braces in strings/comments don’t break extraction.
internal/extgen/classparser.go Migrates method extraction to AST-based parsing and removes brace-counting scanner logic.
internal/extgen/astutil.go Adds reusable helpers for directive lookup, node source extraction, and orphan-directive detection.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/extgen/astutil.go Outdated
Comment thread internal/extgen/funcparser.go
@alexandre-daubois alexandre-daubois force-pushed the fix/extgen-ast-body-extraction branch from 42a788a to 0629082 Compare May 12, 2026 13:18
@alexandre-daubois alexandre-daubois merged commit 3740118 into php:main May 12, 2026
12 checks passed
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.

3 participants