Ошибка правильная. Компилятор разрешает имена A
и B
в полные имена, поэтому средство проверки типов видит:
package object cyclictest extends cyclictest.A with cyclictest.B
Чтобы проверить правильность определения объекта пакета, компилятору необходимо знать все члены A
и B
, но для того, чтобы узнать это, он должен знать члены cyclictest
( поскольку A
и B
являются членами cyclictest
). Однако это происходит при определении циклического теста , поэтому у вас есть цикл, который не может быть разрешен.
Первый случай проходит, потому что пакет cyclictest
ничего не наследует, это пакет по умолчанию для каталога.