From 18e5a2461e47d28731326002ae5e5d7cfc89d8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Mickevi=C4=8Dius?= Date: Thu, 5 Jun 2025 19:46:12 +0300 Subject: [PATCH 1/3] Add FlexibleType support for scaladoc --- project/Build.scala | 3 ++- scaladoc-testcases/src/tests/typesTest.scala | 10 ++++++++++ .../dotty/tools/scaladoc/tasty/InkuireSupport.scala | 2 ++ .../src/dotty/tools/scaladoc/tasty/TypesSupport.scala | 2 ++ .../signatures/TranslatableSignaturesTestCases.scala | 2 ++ 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 scaladoc-testcases/src/tests/typesTest.scala diff --git a/project/Build.scala b/project/Build.scala index cf6c10a53192..5b2bfd7e3a31 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1848,7 +1848,8 @@ object Build { lazy val `scaladoc-testcases` = project.in(file("scaladoc-testcases")). dependsOn(`scala3-compiler-bootstrapped`). - settings(commonBootstrappedSettings) + settings(commonBootstrappedSettings). + settings(Compile / scalacOptions ++= Seq("-Yexplicit-nulls")) /** diff --git a/scaladoc-testcases/src/tests/typesTest.scala b/scaladoc-testcases/src/tests/typesTest.scala new file mode 100644 index 000000000000..addd3bc80670 --- /dev/null +++ b/scaladoc-testcases/src/tests/typesTest.scala @@ -0,0 +1,10 @@ +package tests +package typesTest + +import java.io.File + +object TypesTest +{ + val classpathSeparator + = File.pathSeparator +} diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala index d5eebd1ab798..dc1e967c619f 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala @@ -315,6 +315,8 @@ trait InkuireSupport(using DocContext) extends Resources: inner(tpe, vars) //TODO [Inkuire] Repeated types case AnnotatedType(tpe, _) => inner(tpe, vars) + case FlexibleType(tpe) => + inner(tpe, vars) case tl @ TypeLambda(paramNames, _, resType) => Inkuire.TypeLambda(paramNames.map(Inkuire.TypeLambda.argument), inner(resType, vars)) //TODO [Inkuire] Type bounds case pt @ PolyType(paramNames, _, resType) => diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala index 110ee498a3ac..95b806148f91 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala @@ -114,6 +114,8 @@ trait TypesSupport: inner(tpe) :+ plain("*") case AnnotatedType(tpe, _) => inner(tpe) + case FlexibleType(tpe) => + inner(tpe) case tl @ TypeLambda(params, paramBounds, AppliedType(tpe, args)) if paramBounds.map(inner).forall(_.isEmpty) && params.zip(args.map(inner).flatten.map(_.name)).forall(_ == _) => inner(tpe) diff --git a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala index adb9397f1bcd..603a92ff4b91 100644 --- a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala +++ b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala @@ -128,3 +128,5 @@ class RefinedFunctionTypes extends SignatureTest("refinedFunctionTypes", Signatu class RightAssocExtension extends SignatureTest("rightAssocExtension", SignatureTest.all) class NamedTuples extends SignatureTest("namedTuples", SignatureTest.all) + +class TypesTest extends SignatureTest("typesTest", SignatureTest.all) From 7214a85f2717fb1a9b655e7e51075ab892430a7c Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Tue, 29 Jul 2025 10:54:43 +0200 Subject: [PATCH 2/3] Remove previous attempt at adding tests for FexibleTypes support in scaladoc AFAIK FlexibleTypes will only be visible under -Yexplicit-nulls as inferred types. This doesn't fit with the current infrastructure of scaladoc tests (that require explicit type annotations for tested members). For such a simple fix, it isn't worth the effort to modify the testing infrastructure. --- project/Build.scala | 3 +-- scaladoc-testcases/src/tests/typesTest.scala | 10 ---------- .../signatures/TranslatableSignaturesTestCases.scala | 1 - 3 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 scaladoc-testcases/src/tests/typesTest.scala diff --git a/project/Build.scala b/project/Build.scala index 5b2bfd7e3a31..cf6c10a53192 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1848,8 +1848,7 @@ object Build { lazy val `scaladoc-testcases` = project.in(file("scaladoc-testcases")). dependsOn(`scala3-compiler-bootstrapped`). - settings(commonBootstrappedSettings). - settings(Compile / scalacOptions ++= Seq("-Yexplicit-nulls")) + settings(commonBootstrappedSettings) /** diff --git a/scaladoc-testcases/src/tests/typesTest.scala b/scaladoc-testcases/src/tests/typesTest.scala deleted file mode 100644 index addd3bc80670..000000000000 --- a/scaladoc-testcases/src/tests/typesTest.scala +++ /dev/null @@ -1,10 +0,0 @@ -package tests -package typesTest - -import java.io.File - -object TypesTest -{ - val classpathSeparator - = File.pathSeparator -} diff --git a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala index 603a92ff4b91..747cbae8ad90 100644 --- a/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala +++ b/scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala @@ -129,4 +129,3 @@ class RightAssocExtension extends SignatureTest("rightAssocExtension", Signature class NamedTuples extends SignatureTest("namedTuples", SignatureTest.all) -class TypesTest extends SignatureTest("typesTest", SignatureTest.all) From ff41caa17408d4e75798b3d075e1f7b72c90ae0c Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Tue, 29 Jul 2025 13:48:57 +0200 Subject: [PATCH 3/3] Fix merge conflict --- scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala index ca044b01f623..22fce8d6923c 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/TypesSupport.scala @@ -119,7 +119,7 @@ trait TypesSupport: case AnnotatedType(tpe, _) => inner(tpe, skipThisTypePrefix) case FlexibleType(tpe) => - inner(tpe) + inner(tpe, skipThisTypePrefix) case tl @ TypeLambda(params, paramBounds, AppliedType(tpe, args)) if paramBounds.forall { case TypeBounds(low, hi) => low.typeSymbol == defn.NothingClass && hi.typeSymbol == defn.AnyClass } && params.length == args.length