Implement WithCompileTimeConstants for fluent method body builders#98
Draft
Copilot wants to merge 2 commits intofeature/metehod_templatefrom
Draft
Implement WithCompileTimeConstants for fluent method body builders#98Copilot wants to merge 2 commits intofeature/metehod_templatefrom
Copilot wants to merge 2 commits intofeature/metehod_templatefrom
Conversation
…age5 builders - Add WithCompileTimeConstants methods to DataMethodBodyBuilderStage4, DataMethodBodyBuilderStage4NoArg, DataMethodBodyBuilderStage4ReturnVoid, and DataMethodBodyBuilderStage4ReturnVoidNoArg - Add Stage5 builder records: DataMethodBodyBuilderStage5WithConstants, DataMethodBodyBuilderStage5NoArgWithConstants, DataMethodBodyBuilderStage5ReturnVoidWithConstants, and DataMethodBodyBuilderStage5ReturnVoidNoArgWithConstants - Update BodyGenerationDataExtractor to pass CompileTimeConstants when invoking ReturnConstantValueFactory and RuntimeDelegateBody delegates - Add unit tests for all Stage5 builders and WithCompileTimeConstants flow - Add unit tests for BodyGenerationDataExtractor with constants Co-authored-by: dex3r <3155725+dex3r@users.noreply.github.com> Agent-Logs-Url: https://github.com/dex3r/EasySourceGenerators/sessions/c5e01801-855b-4054-bfa6-7860c743dca7
Copilot
AI
changed the title
[WIP] Finish implementing WithCompileTimeConstants API
Implement WithCompileTimeConstants for fluent method body builders
Mar 25, 2026
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.
The
WithCompileTimeConstantsAPI had interfaces defined in Abstractions and aCompileTimeConstantsslot onBodyGenerationData, but no builder implementations or extractor support.Stage4 builders → Stage5 transitions
Added
WithCompileTimeConstants<TConstants>(Func<TConstants>)to all four Stage4 builders. The factory is invoked immediately and the materialized result stored inBodyGenerationData.CompileTimeConstants. Returns the corresponding Stage5 builder:DataMethodBodyBuilderStage5WithConstants<TParam1, TReturnType, TConstants>DataMethodBodyBuilderStage5NoArgWithConstants<TReturnType, TConstants>DataMethodBodyBuilderStage5ReturnVoidWithConstants<TParam1, TConstants>DataMethodBodyBuilderStage5ReturnVoidNoArgWithConstants<TConstants>BodyGenerationDataExtractor
Updated
TryExtractFromConstantFactoryandTryExtractFromRuntimeBodyto passCompileTimeConstantsas the first argument when the delegate expects a parameter and constants are present. Delegates with additional method parameters beyond constants still correctly return null (can't evaluate at compile time).Usage
Per
PiExampleFluent:Tests
23 new tests: Stage5 builder wiring,
WithCompileTimeConstantsdata flow,BodyGenerationDataExtractorwith/without constants, factory invocation timing, and constant factory priority over runtime body.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.