@@ -443,35 +443,35 @@ object Parsers {
443443
444444 /** Convert tree to formal parameter list
445445 */
446- def convertToParams (tree : Tree ): List [ValDef ] = tree match {
446+ def convertToParams (tree : Tree , mods : Modifiers ): List [ValDef ] = tree match {
447447 case Parens (t) =>
448- convertToParam(t) :: Nil
448+ convertToParam(t, mods ) :: Nil
449449 case Tuple (ts) =>
450- ts.map(convertToParam(_))
450+ ts.map(convertToParam(_, mods ))
451451 case t : Typed =>
452452 report.errorOrMigrationWarning(
453453 em " parentheses are required around the parameter of a lambda ${rewriteNotice()}" ,
454454 in.sourcePos())
455455 if migrateTo3 then
456456 patch(source, t.span.startPos, " (" )
457457 patch(source, t.span.endPos, " )" )
458- convertToParam(t) :: Nil
458+ convertToParam(t, mods ) :: Nil
459459 case t =>
460- convertToParam(t) :: Nil
460+ convertToParam(t, mods ) :: Nil
461461 }
462462
463463 /** Convert tree to formal parameter
464464 */
465- def convertToParam (tree : Tree , expected : String = " formal parameter" ): ValDef = tree match {
465+ def convertToParam (tree : Tree , mods : Modifiers , expected : String = " formal parameter" ): ValDef = tree match {
466466 case id @ Ident (name) =>
467- makeParameter(name.asTermName, TypeTree (), EmptyModifiers , isBackquoted = isBackquoted(id)).withSpan(tree.span)
467+ makeParameter(name.asTermName, TypeTree (), mods , isBackquoted = isBackquoted(id)).withSpan(tree.span)
468468 case Typed (id @ Ident (name), tpt) =>
469- makeParameter(name.asTermName, tpt, EmptyModifiers , isBackquoted = isBackquoted(id)).withSpan(tree.span)
469+ makeParameter(name.asTermName, tpt, mods , isBackquoted = isBackquoted(id)).withSpan(tree.span)
470470 case Typed (Splice (Ident (name)), tpt) =>
471- makeParameter((" $" + name).toTermName, tpt, EmptyModifiers ).withSpan(tree.span)
471+ makeParameter((" $" + name).toTermName, tpt, mods ).withSpan(tree.span)
472472 case _ =>
473473 syntaxError(s " not a legal $expected" , tree.span)
474- makeParameter(nme.ERROR , tree, EmptyModifiers )
474+ makeParameter(nme.ERROR , tree, mods )
475475 }
476476
477477 /** Convert (qual)ident to type identifier
@@ -1920,9 +1920,10 @@ object Parsers {
19201920 finally placeholderParams = saved
19211921
19221922 val t = expr1(location)
1923- if (in.token == ARROW ) {
1923+ if (in.token == ARROW || in.token == CTXARROW ) {
19241924 placeholderParams = Nil // don't interpret `_' to the left of `=>` as placeholder
1925- wrapPlaceholders(closureRest(start, location, convertToParams(t)))
1925+ val paramMods = if in.token == CTXARROW then Modifiers (Given ) else EmptyModifiers
1926+ wrapPlaceholders(closureRest(start, location, convertToParams(t, paramMods)))
19261927 }
19271928 else if (isWildcard(t)) {
19281929 placeholderParams = placeholderParams ::: saved
@@ -2124,7 +2125,7 @@ object Parsers {
21242125 /** FunParams ::= Bindings
21252126 * | id
21262127 * | `_'
2127- * Bindings ::= `(' [[‘using’] [‘ erased’] Binding {`,' Binding}] `)'
2128+ * Bindings ::= `(' [[‘erased’] Binding {`,' Binding}] `)'
21282129 */
21292130 def funParams (mods : Modifiers , location : Location ): List [Tree ] =
21302131 if in.token == LPAREN then
0 commit comments