Синтетическая ценность при компиляции скалы
Когда генерируется синтетическое значение? Для чего они используются? На каком этапе компиляции они стираются? Я продолжаю сталкиваться с ошибками о синтетических значениях при создании плагина компилятора scala. Вот ошибка:
ошибка: scala.reflect.internal.FatalError: значение символа x$3#33790 не существует в scala.collection.immutable.Stream.scala$collection$immutable$Stream$$advance$1, который содержит локальное значение newvalue#39255, значение newvalue#39254, значение остатка #33601, значение stub1#33600, значение stub0#33599.
Method code: def advance(stub0: List[A], stub1: List[A], rest: Stream[A]): Stream[A] = if (rest.isEmpty())
Stream.empty()
else
{
if (stub0.isEmpty())
{
val newvalue: scala#27.collection#2835.immutable#5932.Stream#8383 = Stream.this.scala$collection$immutable$Stream$$advance$1(stub1.reverse(), Nil, rest);
newvalue
}
else
{
val newvalue: collection#2835.immutable#5932.Stream$Cons#11078 = scala.collection.immutable.Stream$cons.apply(stub0.head(), {
((new <$anon: Function0#2069>(Stream.this, stub0, stub1, rest, x$3)): Function0#2069)
});
newvalue
}
}