Skip to content

Commit ded71bb

Browse files
committed
Print given clauses.
These were printed as old-style implicit parameters before. This is in preparation for merging it with `Implied`. We already compensate for it when printing modifiers by eliding it when it appear with `Param`.
1 parent b626dc9 commit ded71bb

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

compiler/src/dotty/tools/dotc/core/Flags.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ object Flags {
462462

463463
/** Flags representing source modifiers */
464464
private val CommonSourceModifierFlags: FlagSet =
465-
commonFlags(Private, Protected, Final, Case, Implicit, Implied, Override, JavaStatic)
465+
commonFlags(Private, Protected, Final, Case, Implicit, Implied, Given, Override, JavaStatic)
466466

467467
final val TypeSourceModifierFlags: FlagSet =
468468
CommonSourceModifierFlags.toTypeFlags | Abstract | Sealed | Opaque

compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,10 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
705705
val (leading, paramss) =
706706
if (isExtension && vparamss.nonEmpty) (paramsText(vparamss.head) ~ " " ~ txt, vparamss.tail)
707707
else (txt, vparamss)
708-
(txt /: paramss)((txt, params) => txt ~ paramsText(params))
708+
(txt /: paramss)((txt, params) =>
709+
txt ~
710+
(Str(" given ") provided params.nonEmpty && params.head.mods.is(Given)) ~
711+
paramsText(params))
709712
}
710713
protected def valDefToText[T >: Untyped](tree: ValDef[T]): Text = {
711714
import untpd.{modsDeco => _}
@@ -797,7 +800,9 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
797800
else if (suppressKw) PrintableFlags(isType) &~ Private
798801
else PrintableFlags(isType)
799802
if (homogenizedView && mods.flags.isTypeFlags) flagMask &~= ImplicitOrImplied // drop implicit/implied from classes
800-
val flags = (if (sym.exists) sym.flags else (mods.flags)) & flagMask
803+
val rawFlags = if (sym.exists) sym.flags else mods.flags
804+
if (rawFlags.is(Param)) flagMask = flagMask &~ Given
805+
val flags = rawFlags & flagMask
801806
val flagsText = if (flags.isEmpty) "" else keywordStr(flags.toString)
802807
val annotations =
803808
if (sym.exists) sym.annotations.filterNot(ann => dropAnnotForModText(ann.symbol)).map(_.tree)

0 commit comments

Comments
 (0)