From 8f34b07157ba857f36f5330ad6c1a03321a75405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Zyba=C5=82a?= Date: Tue, 14 Jun 2022 11:43:26 +0200 Subject: [PATCH] Fix rendering ThisType --- scaladoc-testcases/src/tests/typesSignatures.scala | 7 ++++++- .../tools/scaladoc/tasty/ClassLikeSupport.scala | 2 +- .../dotty/tools/scaladoc/tasty/TypesSupport.scala | 12 +++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/scaladoc-testcases/src/tests/typesSignatures.scala b/scaladoc-testcases/src/tests/typesSignatures.scala index 4d8d99f6ce73..e7a29ad8c8e1 100644 --- a/scaladoc-testcases/src/tests/typesSignatures.scala +++ b/scaladoc-testcases/src/tests/typesSignatures.scala @@ -52,4 +52,9 @@ class Operators import scala.compiletime.ops.boolean.* type Unary = ![true] -} \ No newline at end of file +} + +trait ThisTypeTest +{ + def foo: this.type //expected: def foo: ThisTypeTest.this.type +} diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala index 3432b2caeea1..43dd224eaba0 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala @@ -368,7 +368,7 @@ trait ClassLikeSupport: val overriddenSyms = methodSymbol.allOverriddenSymbols.map(_.owner) Origin.Overrides(overriddenSyms.map(s => Overridden(s.name, s.dri)).toSeq) - mkMember(methodSymbol, methodKind, memberInfo.res.asSignature)(origin = origin, deprecated = methodSymbol.isDeprecated()) + mkMember(methodSymbol, methodKind, method.returnTpt.tpe.asSignature)(origin = origin, deprecated = methodSymbol.isDeprecated()) def mkParameter( argument: ValDef, diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala index 5bafe9027fd4..72bc62f95b7e 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala @@ -42,12 +42,12 @@ trait TypesSupport: import reflect._ tpeTree match case TypeBoundsTree(low, high) => typeBoundsTreeOfHigherKindedType(low.tpe, high.tpe) - case tpeTree: TypeTree => inner(tpeTree.tpe) - case term: Term => inner(term.tpe) + case tpeTree: TypeTree => topLevelProcess(tpeTree.tpe) + case term: Term => topLevelProcess(term.tpe) given TypeSyntax: AnyRef with extension (using Quotes)(tpe: reflect.TypeRepr) - def asSignature: SSignature = inner(tpe) + def asSignature: SSignature = topLevelProcess(tpe) private def plain(str: String): SignaturePart = Plain(str) @@ -86,6 +86,12 @@ trait TypesSupport: case _ => false case _ => false + private def topLevelProcess(using Quotes)(tp: reflect.TypeRepr): SSignature = + import reflect._ + tp match + case ThisType(tpe) => inner(tpe) :+ plain(".this.type") + case tpe => inner(tpe) + // TODO #23 add support for all types signatures that makes sense private def inner(using Quotes)(tp: reflect.TypeRepr)(using indent: Int = 0): SSignature = import reflect._