Ao estender uma característica dentro de uma característica, a que se refere 'super'?

Eu quero estender uma característica dentro de uma característica, assim:

  trait NodeTypes {
    trait Node {
      def allNodesHaveThis: Int
    }
  }

  trait ScrumptiousTypes extends NodeTypes {
    trait Node extends super.Node {
      def scrumptiousness: Int
    }
  }

  trait YummyTypes extends NodeTypes {
    trait Node extends super.Node {
      def yumminess: Int
    }
  }

  object Graph extends NodeTypes with ScrumptiousTypes with YummyTypes {
    case class Node() extends super.Node {
      override def allNodesHaveThis = 1
      override def scrumptiousness = 2  // error: ScrumptiousTypes.Node has been disinherited
      override def yumminess = 3
    }
  }

Se isso funcionar, seria uma boa maneira de dizer "Quando seuGraph herda de<Whatever>Types, EstáNode A classe deve fornecer os métodos exigidos pelo<Whatever>. ”

Mas o compilador Scala 2.11.2 diz:

error: method scrumptiousness overrides nothing
      override def scrumptiousness = 2
                   ^

Parece queYummyTypes.Node sombrasScrumptiousTypes.Node, seguindo a maneira usual em que Scala resolve a herança de "diamantes" para métodos: por linearização de tipos. Como eu entendo as coisas, quedevemos ficar bem, porqueYummyTypes.Node estende explicitamentesuper.Node, que, pelo mesmo tipo de linearização, deve se referir aScrumptiousTypes.

O que eu entendi errado? Ou, o que fazsuper.Node consulte - e por quê?

Se você está se perguntando por que estou fazendo isso, é possível misturar alterações em várias características ao mesmo tempo, para que as características herdadas interoperem, conforme explicado emessa questão. Na classe final do Node (e em outras classes com as quais ele trabalha), não quero estender explicitamente cada característica do Node: quero misturar de uma "coisa" (qualquer que seja) e obter todas as alterações consistentes entre si. feito para o Node e as outras características, tudo em um pacote. Ou, se uma característica define um monte de extensões para o Nó, a extensão de ScrumptiousTypes deve fazer com que todas as extensões do nó contenham umscrumptiousness membro, sem precisar listar todas as extensões de nó:trait Hypernode extends ScrumptiousTypes.Node, trait ZealousNode extends ScrumptiousTypes.Nodeetc.

questionAnswers(3)

yourAnswerToTheQuestion