2012-06-19 18 views
6

W poniższym kodzie przy użyciu 2.10.0M3 w Eclipse plugin 2.1.0 dla 2.10M3. Używam domyślne ustawienie, które jest kierowana JVM 1.5Scala zależna od ścieżki zwrotnej od parametru

class GeomBase[T <: DTypes] {   
    abstract class NewObjs { 
    def newHex(gridR: GridBase, coodI: Cood): gridR.HexRT   
    } 

    class GridBase { 
    selfGrid => 
     type HexRT = HexG with T#HexTr 

    def uniformRect (init: NewObjs) { 
     val hexCood = Cood(2 ,2) 
     val hex: HexRT = init.newHex(selfGrid, hexCood)// won't compile 
    } 
    } 
} 

Komunikat o błędzie:

Description Resource Path Location Type type mismatch; 
    found: GeomBase.this.GridBase#HexG with T#HexTr 
    required: GridBase.this.HexRT (which expands to) GridBase.this.HexG with T#HexTr GeomBase.scala 

Dlaczego kompilator myśleć metoda zwraca rzutowanie typu GridBase # HexG kiedy powinien być tym konkretnym przypadku GridBase?

Edytuj przeniesione do prostszej klasy kodu w odpowiedzi na komentarze otrzymujące teraz inny komunikat o błędzie.

package rStrat 
class TestClass { 
    abstract class NewObjs { 
    def newHex(gridR: GridBase): gridR.HexG 
    }  
    class GridBase { 
    selfGrid =>   

    def uniformRect (init: NewObjs) { 
     val hex: HexG = init.newHex(this) //error here       
    }  

    class HexG { 
     val test12 = 5     
    } 
    } 
} 

.

Error line 11:Description Resource Path Location Type 
type mismatch; found : gridR.HexG required: GridBase.this.HexG 
possible cause: missing arguments for method or constructor TestClass.scala /SStrat/src/rStrat line 11 Scala Problem 

Aktualizacja mam włączony do 2.10.0M4 i aktualizowane wtyczkę do wersji M4 na świeżej wersji Eclipse i włączony do JVM (1,6 i 1,7), ale problemy pozostają niezmienione.

+0

Czy możesz dodać działający przykład kodu, który generuje komunikat o błędzie? – sschaef

+0

Powinieneś wkleić kod źródłowy z błędem i strzałką wskazującą dokładną lokalizację błędu, która również jest wyświetlana. –

+0

@Antoras edytowane –

Odpowiedz

4

zalogowany jako SI-5958 - zastąpić ten w zależności od metody typu

2

To teraz pracuje jako z 2.10.0M7. Błąd został naprawiony.

val hex: HexRT = init.newHex(selfGrid, hexCood) //now compiles and runs correctly 
Powiązane problemy