From e6d4075f864fe97f7e12d2eac30d7a4189bdf42b Mon Sep 17 00:00:00 2001 From: Krzysztof Romanowski Date: Wed, 25 Nov 2020 22:30:16 +0100 Subject: [PATCH] Fix edge case in ReadTasty.scala It can happen that a module named `className` exists and no class with same exists, yet the module class name is still suffixed with `$` (see testcase). --- .../src/dotty/tools/dotc/fromtasty/ReadTasty.scala | 7 ++++++- .../src/example/typeAndObjects/package.scala | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 scala3doc-testcases/src/example/typeAndObjects/package.scala diff --git a/compiler/src/dotty/tools/dotc/fromtasty/ReadTasty.scala b/compiler/src/dotty/tools/dotc/fromtasty/ReadTasty.scala index ce17e167bcae..864f5277bff3 100644 --- a/compiler/src/dotty/tools/dotc/fromtasty/ReadTasty.scala +++ b/compiler/src/dotty/tools/dotc/fromtasty/ReadTasty.scala @@ -69,7 +69,12 @@ class ReadTasty extends Phase { def moduleClass = clsd.owner.info.member(className.moduleClassName).symbol compilationUnit(clsd.classSymbol).orElse(compilationUnit(moduleClass)) case _ => - cannotUnpickle(s"no class file was found") + staticRef(className.moduleClassName) match { + case clsd: ClassDenotation => + compilationUnit(clsd.classSymbol) + case denot => + cannotUnpickle(s"no class file was found for denot: $denot") + } } case unit => Some(unit) diff --git a/scala3doc-testcases/src/example/typeAndObjects/package.scala b/scala3doc-testcases/src/example/typeAndObjects/package.scala new file mode 100644 index 000000000000..7a1bd29b5b19 --- /dev/null +++ b/scala3doc-testcases/src/example/typeAndObjects/package.scala @@ -0,0 +1,12 @@ +package example + +// Ala fails Ola does not +package object typeAndObjects: + type Ala + +package typeAndObjects { + object Ala +} + +type Ola +object Ola