From 7dc1bbce75f83bb30398d76079bc93da11298d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zyba=C5=82a?= Date: Mon, 25 Apr 2022 08:53:38 +0200 Subject: [PATCH] Fix signatures of implicitly added methods. Fix implicit members resolution --- .../src/tests/implicitMembers.scala | 19 +++++++------------ .../ImplicitMembersExtensionTransformer.scala | 6 +++--- .../TranslatableSignaturesTestCases.scala | 6 ++++++ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/scaladoc-testcases/src/tests/implicitMembers.scala b/scaladoc-testcases/src/tests/implicitMembers.scala index 4400d83efeac..17185ec273d2 100644 --- a/scaladoc-testcases/src/tests/implicitMembers.scala +++ b/scaladoc-testcases/src/tests/implicitMembers.scala @@ -3,18 +3,13 @@ package tests package implicitMembers class OuterClass: - class ImplicitMemberTarget + class ImplicitMemberTarget object ImplicitMemberTarget: - extension (a: ImplicitMemberTarget) - def extensionFromCompanion: String = - "ImplicitMemberTarget" - - // does not work - extension (a: ImplicitMemberTarget) - def extensionFromOuterClass: String = - "ImplicitMemberTarget" + extension (a: ImplicitMemberTarget) def extensionFromCompanion(i: Int): String//expected: def extensionFromCompanion(i: Int): String + = "ImplicitMemberTarget" + extension (a: ImplicitMemberTarget) def extensionFromOuterClass(i: Int): String//expected: def extensionFromOuterClass(i: Int): String + = "ImplicitMemberTarget" -extension (a: OuterClass#ImplicitMemberTarget) - def extensionFromPackage: String = - "ImplicitMemberTarget" \ No newline at end of file +extension (a: OuterClass#ImplicitMemberTarget) def extensionFromPackage(i: Int): String//expected: def extensionFromPackage(i: Int): String + = "ImplicitMemberTarget" diff --git a/scaladoc/src/dotty/tools/scaladoc/transformers/ImplicitMembersExtensionTransformer.scala b/scaladoc/src/dotty/tools/scaladoc/transformers/ImplicitMembersExtensionTransformer.scala index 0fa6b9c5d3cf..22762cd77683 100644 --- a/scaladoc/src/dotty/tools/scaladoc/transformers/ImplicitMembersExtensionTransformer.scala +++ b/scaladoc/src/dotty/tools/scaladoc/transformers/ImplicitMembersExtensionTransformer.scala @@ -28,7 +28,7 @@ class ImplicitMembersExtensionTransformer(using DocContext) extends(Module => Mo def collectApplicableMembers(source: Member): Seq[Member] = source.members.flatMap { case m @ Member(_, _, _, Kind.Extension(ExtensionTarget(_, _, _, _, MyDri, _), _), Origin.RegularlyDefined) => val kind = m.kind match - case d: Kind.Def => d + case Kind.Extension(_, d) => d case _ => Kind.Def(Nil, Nil) Seq(m.withOrigin(Origin.ExtensionFrom(source.name, source.dri)).withKind(kind)) @@ -44,12 +44,12 @@ class ImplicitMembersExtensionTransformer(using DocContext) extends(Module => Mo } case _ => Nil - case _ => + case other => None } val newImplicitMembers = implictSources.flatMap(collectApplicableMembers).distinct - val expandedMembers = c.members.map(expandMember(newImplicitMembers ++ Seq(c))) + val expandedMembers = c.members.map(expandMember(outerMembers ++ Seq(c))) c.withMembers(newImplicitMembers ++ expandedMembers) original.updatePackages(_.map(expandMember(Nil)(_))) diff --git a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala index f1f02496da11..7da1bb9b7e03 100644 --- a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala +++ b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala @@ -98,3 +98,9 @@ class ContextFunctions extends SignatureTest("contextfunctions", SignatureTest.a class MarkdownCode extends SignatureTest("markdowncode", SignatureTest.all) class FunctionTypeSignatures extends SignatureTest("functionTypeSignatures", SignatureTest.all) + +class ImplicitMembers extends SignatureTest( + "implicitMembers", + Seq("def"), + filterFunc = _.toString.endsWith("OuterClass$ImplicitMemberTarget.html") +)