-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TypeTest of TypeBlock of Quotes API matches every Block #21721
Labels
Comments
felher
added
itype:bug
stat:needs triage
Every issue needs to have an "area" and "itype" label
labels
Oct 7, 2024
felher
added a commit
to felher/dotty
that referenced
this issue
Oct 7, 2024
TypeBlocks are represented as normal Blocks in the Quotes API. The current TypeTest for TypeBlock is exactly the same as the TypeTest for Block, which means that case TypeBlock(_, _) matches every block. The implementation of unapply on TypeBlockModule, however, gives back (List[TypeDef], TypeTree). It constructs the List[TypeDef] by mapping over every statement, turning it into a TypeDef by using a match with the pattern case alias: TypeDef => alias Since the TypeTest matches any Block and not only Blocks that are TypeBlocks, the statemnts can be anything, not just TypeDefs, which lets the whole case TypeBlock(_, _) pattern fail with a MatchError. This commit fixes the problem by making the TypeTest check whether the Block is a type (which in turns checks whether the blocks expression is a type)
Gedochao
added
area:metaprogramming:quotes
Issues related to quotes and splices
area:match-types
and removed
stat:needs triage
Every issue needs to have an "area" and "itype" label
labels
Oct 16, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Compiler version
3.5.1 (and way before, as far as I can see)
Minimized code
Test.scala
Macro.scala
Output
Expectation
There should be no match error here. It should just compile fine.
PR
PR attempt for a fix here: #21722
The text was updated successfully, but these errors were encountered: