2012-06-19 19 views
6

En el siguiente código se usa 2.10.0M3 en el plugin de Eclipse 2.1.0 para 2.10M3. Estoy usando la configuración predeterminada, que se dirige a JVM 1,5Tipo de retorno dependiente de la ruta de Scala del parámetro

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 
    } 
    } 
} 

mensaje de error:

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 

¿Por qué el compilador piensan que el método devuelve la proyección del tipo de GridBase # HexG cuando debería ser este caso concreto de GridBase?

Editar transferido a una clase de código más simple en respuesta a los comentarios que ahora reciben un mensaje de error diferente.

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 

Actualización he cambiado a 2.10.0M4 y actualiza el plug-in para la versión M4 en una nueva versión de Eclipse y cambió a JVM 1.6 (y 1.7), pero los problemas no se han modificado.

+0

¿podría agregar un código de trabajo que muestre el mensaje de error? – sschaef

+0

Debe pegar la línea de código fuente con el error y la flecha que apunta a la ubicación exacta del error que también se muestran. –

+0

@Antoras editado –

Respuesta

4

registra como SI-5958 - sustituir este método depende en el tipo

2

Esto ahora trabaja como de 2.10.0M7. El error ha sido reparado.

val hex: HexRT = init.newHex(selfGrid, hexCood) //now compiles and runs correctly 
Cuestiones relacionadas