fix #275 - quotation: add identifier method to avoid wrong type refinement inference #280
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.
Fixes #275
Problem
The quotation mechanism uses a type refinement with an annotation to store the AST. The scala compiler considers two type refinements equal if they have the same signature, which doesn't include annotations. This makes the quotation infer the wrong AST for some dynamic query compositions.
Solution
Add an identifier method to the quotation to make the type refinements different from the scala compiler's perspective.
Notes
The method name will have up to 12 characters, so we shouldn't hit any method name limit.
Checklist
README.md
if applicable[WIP]
to the pull request title if it's work in progresssbt scalariformFormat
to make sure that the source files are formatted@getquill/maintainers