Skip to content

feat(classfile): add resource schema reader#2726

Draft
aofei wants to merge 2 commits into
goplus:mainfrom
aofei:classfile-resource-schema-reader
Draft

feat(classfile): add resource schema reader#2726
aofei wants to merge 2 commits into
goplus:mainfrom
aofei:classfile-resource-schema-reader

Conversation

@aofei

@aofei aofei commented Apr 14, 2026

Copy link
Copy Markdown
Member

Add cl/outline/classfile to load resource schema from one typed framework package.

This reader collects resource kinds, discovery directives, name-discovery directives, handle-bearing types, and resource-api-scope-binding directives from Go and XGo source.

Also fix outline.NewPackage to load Go-file constant expressions when reading package outlines. This makes the schema reader work on real Go framework packages such as spx, not just on synthetic test packages.

Updates #2704

@codecov

codecov Bot commented Apr 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.97%. Comparing base (df19f4a) to head (c1db598).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
cl/compile.go 60.00% 5 Missing and 1 partial ⚠️
cl/func_type_and_var.go 33.33% 5 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2726      +/-   ##
==========================================
- Coverage   94.08%   93.97%   -0.11%     
==========================================
  Files          32       32              
  Lines       10061    10081      +20     
==========================================
+ Hits         9466     9474       +8     
- Misses        425      435      +10     
- Partials      170      172       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a resource schema loading system for XGo classfiles, enabling the discovery and validation of resource kinds and API scope bindings through source-level directives. It includes the implementation of a schema loader, comprehensive tests, and a new specification document. The review feedback focuses on enhancing diagnostic quality by tracking the source positions of resource declarations, which would allow for more precise error messages when encountering duplicate types or undeclared parent kinds.

Comment thread cl/outline/classfile/loader.go Outdated
Comment thread cl/outline/classfile/loader.go
Comment thread cl/outline/classfile/loader.go Outdated
Comment thread cl/outline/classfile/loader.go
Comment thread cl/outline/classfile/loader.go Outdated
Comment thread cl/outline/classfile/schema.go
@aofei aofei force-pushed the classfile-resource-schema-reader branch 3 times, most recently from b004cfb to d09a2d1 Compare April 14, 2026 11:44
Add `doc/classfile-resource-spec.md` to define the resource model for
XGo classfile frameworks.

The specification now defines discovery-based resource introduction over
project-scoped pack documents, work classfile-implied top-level
resources, and static tool semantics for typed resource references.

This also updates `doc/classfile-spec.md` to define `pack` directives,
pack roots, and pack documents as the standardized discovery substrate
for classfile resource semantics.

Fixes goplus#2704
Updates goplus#2719

Signed-off-by: Aofei Sheng <aofei@aofeisheng.com>
@aofei aofei force-pushed the classfile-resource-schema-reader branch 3 times, most recently from 6d240a9 to 4d407c5 Compare April 15, 2026 09:30
Add `cl/outline/classfile` to load resource schema from one typed
framework package.

This reader collects resource kinds, discovery directives,
name-discovery directives, handle-bearing types, and
`resource-api-scope-binding` directives from Go and XGo source.

Also fix `outline.NewPackage` to load Go-file constant expressions when
reading package outlines. This makes the schema reader work on real Go
framework packages such as spx, not just on synthetic test packages.

Updates goplus#2704

Signed-off-by: Aofei Sheng <aofei@aofeisheng.com>
@aofei aofei force-pushed the classfile-resource-schema-reader branch from 4d407c5 to c1db598 Compare April 15, 2026 09:40
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.

1 participant