2012-06-19 24 views
6

的Scala路径相关返回类型在下面的代码中,使用Eclipse插件2.1.0中的2.10.0M3作为2.10M3。我使用的是默认设置它的目标是JVM 1.5从参数

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

错误消息:

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 

为什么编译器认为该方法返回类型投影GridBase#HexG时,它应该是这个特定实例GridBase的?

编辑转移到一个更简单的代码类,以回应现在得到不同错误信息的评论。

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 

更新我切换到2.10.0M4和更新插件的版本M4基于Eclipse的最新版本,并切换到JVM 1.6(1.7),但问题是不变的。

+0

请问您可以添加一个可生成错误消息的工作代码示例吗? – sschaef

+0

您应粘贴源代码行,并附上错误信息和指向同时显示的错误确切位置的箭头。 –

+0

@Antoras编辑 –

回答

4

记录为SI-5958 - 依赖性方法类型

2

这现在作为2.10.0M7的替代这一点。该错误已得到修复。

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