[Blazor] Generate AOT-safe binding metadata - #68297
Draft
javiercn wants to merge 6 commits into
Draft
Conversation
javiercn
force-pushed
the
javiercn-aot-stack-3-binding
branch
from
August 9, 2026 11:34
cce199b to
0e67e50
Compare
javiercn
force-pushed
the
javiercn-aot-stack-3-binding
branch
from
August 9, 2026 12:31
0e67e50 to
36dfc1c
Compare
Open
3 tasks
javiercn
force-pushed
the
javiercn-aot-stack-3-binding
branch
from
August 9, 2026 19:21
36dfc1c to
e1ca242
Compare
Use non-generic enum parsing and reflectionless array conversion so runtime-selected binding no longer depends on emitted generic closures. Behavior: changed: enum and array binding works without dynamic code State: builds; tests in #2 Review hint: compare the dynamic-code-safe enum and array branches with their existing generic counterparts Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compare the reflectionless enum and array paths with the existing JIT conversion behavior. Behavior: preserved State: complete Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Evaluate known binding expression shapes through the MemberInfo already carried by each expression node, preserving the existing fallback for unsupported shapes. Behavior: preserved State: builds; reflection walk tests in #4 Review hint: this commit deliberately has no bindable descriptor abstraction; every recognized hop uses expression metadata Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cover nested members, fields carried by closures, arrays, indexers, edit-context anchoring, and compatibility with FieldIdentifier.Create. Behavior: preserved State: complete Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Introduce bindable member, indexer, and type descriptors at their first generated use. Registered metadata contexts now resolve descriptor graphs before the existing reflection fallback. The existing application metadata generator emits only JsonTypeInfoResolver, JSInvokableMethods, and BindableTypes at this layer. Behavior: changed: described form models use generated accessors while undescribed models retain reflection compatibility State: builds; generated graph and resolver tests in #6 Review hint: generator changes are limited to bindable discovery, accessors, context registration, and descriptor-first expression evaluation Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cover transitive and cyclic model discovery, private member accessors, indexers, descriptor-first expression walks, and per-provider resolver composition. Behavior: preserved State: complete Review hint: generated tests exercise descriptors as runtime delegates, not only emitted source text Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
javiercn
force-pushed
the
javiercn-aot-stack-3-binding
branch
from
August 9, 2026 21:40
e1ca242 to
5cce742
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack layer 3/6. Depends on #68296.
Review focus: binding conversion and expressions only.
This layer removes runtime generic converter closure for enum/array binding, walks binding expressions without compilation, and extends the existing metadata generator with bindable model descriptors and generated accessors. The generator emits only
JsonTypeInfoResolver,JSInvokableMethods, andBindableTypesat this layer.Validation:
BindConverterTest(41 passed)FormDataMapperTests(282 passed)BindingExpressionEvaluatorTest(9 passed)