From 5975fc33a936b4da7a6946db9a3ec3cd5f020e73 Mon Sep 17 00:00:00 2001 From: Liu Fengyun Date: Thu, 19 Jul 2018 10:42:41 +0200 Subject: [PATCH] add doc for Override flag hack in ShortcutImplicits --- .../src/dotty/tools/dotc/transform/ShortcutImplicits.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala b/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala index fa66401dbf1d..dfd7ae8335e8 100644 --- a/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala +++ b/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala @@ -171,7 +171,7 @@ object ShortcutImplicits { (specializeMonoTargets || !sym.isEffectivelyFinal || sym.allOverriddenSymbols.nonEmpty) /** @pre The type's final result type is an implicit function type `implicit Ts => R`. - * @return The type of the `apply` member of `implicit Ts => R`. + * @return The type of the `apply` member of `implicit Ts => R`. */ private def directInfo(info: Type)(implicit ctx: Context): Type = info match { case info: PolyType => info.derivedLambdaType(resType = directInfo(info.resultType)) @@ -186,6 +186,7 @@ object ShortcutImplicits { name = DirectMethodName(sym.name.asTermName).asInstanceOf[sym.ThisName], flags = sym.flags | Synthetic, info = directInfo(sym.info)) + // make flags conformant to RefChecks. Override is meaningless after RefChecks. if (direct.allOverriddenSymbols.isEmpty) direct.resetFlag(Override) direct }