@@ -1347,7 +1347,7 @@ object desugar {
13471347 )).withSpan(tree.span)
13481348 end makePolyFunctionType
13491349
1350- /** Invent a name for an anonympus given of type or template `impl`. */
1350+ /** Invent a name for an anonymous given of type or template `impl`. */
13511351 def inventGivenName (impl : Tree )(using Context ): SimpleName =
13521352 val str = impl match
13531353 case impl : Template =>
@@ -2136,18 +2136,19 @@ object desugar {
21362136 * that refers to the bound variable for the pattern. Wildcard Binds are
21372137 * also replaced by Binds with fresh names.
21382138 */
2139- def makeIdPat (pat : Tree ): (Tree , Ident ) = pat match {
2140- case bind @ Bind (name, pat1) =>
2141- if name == nme.WILDCARD then
2142- val name = UniqueName .fresh()
2143- (cpy.Bind (pat)(name, pat1).withMods(bind.mods), Ident (name))
2144- else (pat, Ident (name))
2139+ def makeIdPat (pat : Tree ): (Tree , Ident ) = pat match
2140+ case pat @ Bind (nme.WILDCARD , body) =>
2141+ val name =
2142+ body match
2143+ case Typed (Ident (nme.WILDCARD ), tpt) if pat.mods.is(Given ) => inventGivenName(tpt)
2144+ case _ => UniqueName .fresh()
2145+ (cpy.Bind (pat)(name, body).withMods(pat.mods), Ident (name))
2146+ case Bind (name, _) => (pat, Ident (name))
21452147 case id : Ident if isVarPattern(id) && id.name != nme.WILDCARD => (id, id)
21462148 case Typed (id : Ident , _) if isVarPattern(id) && id.name != nme.WILDCARD => (pat, id)
21472149 case _ =>
21482150 val name = UniqueName .fresh()
21492151 (Bind (name, pat), Ident (name))
2150- }
21512152
21522153 /** Make a pattern filter:
21532154 * rhs.withFilter { case pat => true case _ => false }
0 commit comments