2015-05-28 17 views
6

ich eine Top-Level-Eigenschaft haben, die eine Anzahl von Klassen und Eigenschaften wie enthält:Scaladoc versagt Links für innere Klassen in Verfahren und Klassensignaturen zu erzeugen

trait Trees { self: Types => 
    trait Tree 
    trait IdentifiedTree extends Tree 
    trait Empty extends Tree 

    /** The factory for [[TypeUse]] instances */ 
    trait TypeUse extends Tree 
    /** AST tree to represent erroneous trees */ 
    object BadTree extends IdentifiedTree 
    /** AST tree for empty statements and trees */ 
    val Empty: Empty = new Empty {} 
} 

trait Types 

Wenn ich die Dokumentation für sie erzeugen, scaladoc ich mit kann mit [[CLASS_NAME]] eine Verknüpfung zu den inneren Klassen herstellen, aber scaladoc erstellt keine Links für Bäume in Signaturen und Erweiterungen.

Ich benutze sbt die scaladoc zu erzeugen, und ich verwende die folgenden Flags:

scalacOptions in (Compile, doc) ++= Seq("-groups", "-implicits", 
    "-diagrams", "-no-prefixes", "-author", "-explaintypes", 
    "-language:implicitConversions,higherKinds") 

Um Ihnen eine bessere Idee, die api für die obige Definition lautet wie folgt (bitte die fehlenden Links beachten):

enter image description here

können Sie mir sagen, was ich falsch mache, bitte?

+0

Nicht sicher, ob das hilft, aber meine sbt Konfiguration ist ein Multi-Projekt eines –

+0

Ich habe gerade versuchte es mit einem einzigen Projekt sbt Setup und die gleiche Sache ist immer noch da. –

Antwort

3

Ich denke, das Problem mit den verschachtelten Merkmalen ist, dass die inneren Merkmale nicht einmal außerhalb einer Instanziierung des Merkmals der obersten Ebene existieren. Diese post könnte eine Hilfe sein.

Das Ändern der obersten Ebene Bäume zu einem Objekt löste das Problem für mich. Ich bin mir jedoch nicht sicher, ob dies für Ihren Anwendungsfall sinnvoll ist.

object Trees { 
    trait Tree 
    trait IdentifiedTree extends Tree 
    trait Empty extends Tree 
    ... 
} 
+0

Leider ist das nicht viel Option, ich brauche pfadabhängige Typen (daher Kuchenmuster in den Tags). Aber wenn Sie sich die Scala-Compiler-API ansehen, haben sie dieselben pfadabhängigen Typen wie ich und immer noch aktive Links: https://www.dropbox.com/s/svpseqa37nn1px3/Screenshot_2015-05-31-05-47-51 ~ 2.jpg? Dl = 0 –

+0

Ich sehe was du meinst. Ich habe mich gefragt, ob Sie wirklich die verschachtelten Typen brauchen. Sie können die Eigenschaft "Bäume" so beibehalten, wie sie ist (und damit das Kuchenmuster unterstützen, das Sie brauchen) und die anderen Merkmale (Baum, Identifizierter Baum usw.) nach außen ziehen. – marios

+0

Ich wünschte, das wäre möglich, aber die Art des Frameworks, mit dem ich es zu tun habe, macht dieses Refactoring schwierig. Wie auch immer, Scala-Typen sind alle inneren Typen und noch anklickbar, daher sollte es möglich sein, getan zu werden, aber ich weiß einfach nicht, wie –