Можно ли интегрировать Cake-Pattern и макросы?

Я должен интегрировать некоторые макросы в проект, использующий шаблон торта. Эта модель позволила нам избежать огромного количества импорта, помимо других преимуществ, поэтому мы хотели бы сохранить ее. Теперь у нас возникла проблема с некоторыми экспериментальными макросами, которые мы тестировали вне магистрали. Во-первых, давайте покажем фиктивную систему с именем Cake:

trait APiece {
  class A
}

trait BPiece { this: APiece => 
  def aMacro(a: A): Unit = () /* macro ??? */
}

trait CPiece { this: APiece with BPiece =>
  def aMacroInvoker = aMacro(new A)
}

class Cake { this: APiece with BPiece with CPiece => }

APieceопределяет класс, BPieceдолжен быть макросом, использующим класс, определенный APiece, и, наконец, CPiece. ] вызывает макрос. Я сказал, что BPiece должен был быть макросом, поскольку я не смог написать для него реализацию. Я пробовал несколько способов, но всегда вылетает со следующей ошибкой:

"macro implementation must be in statically accessible object"

Читая код макроса, можно догадаться, что макрос необходимо заключать в статический модуль. Есть ли способ развернуть макрос, использующий системные структуры?

5
задан jeslg 28 June 2012 в 15:19
поделиться