2012-06-19 13 views
6

Trong mã sau bằng cách sử dụng 2.10.0M3 trong plugin Eclipse 2.1.0 cho 2.10M3. Tôi đang sử dụng các thiết lập mặc định được nhắm mục tiêu JVM 1,5Loại trả về phụ thuộc vào đường dẫn Scala từ tham số

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

Thông báo lỗi:

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 

Tại sao biên dịch nghĩ rằng phương pháp này sẽ trả về chiếu loại GridBase # HexG khi nó phải được ví dụ cụ thể này của GridBase?

Chỉnh sửa được chuyển sang lớp mã đơn giản hơn để phản hồi nhận xét hiện nhận được thông báo lỗi khác.

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 

Cập nhật tôi đã chuyển sang 2.10.0M4 và cập nhật các plug-in cho phiên bản M4 trên một phiên bản mới của Eclipse và chuyển sang JVM 1.6 (và 1.7) nhưng vấn đề là không thay đổi.

+0

bạn có thể vui lòng thêm ví dụ về mã hoạt động tạo thông báo lỗi không? – sschaef

+0

Bạn nên dán dòng mã nguồn có lỗi và mũi tên trỏ đến vị trí chính xác của lỗi cũng được hiển thị. –

+0

@Antoras đã chỉnh sửa –

Trả lời

4

ghi lại như SI-5958 - thay thế này trong phương pháp phụ thuộc loại

2

này hiện đang làm việc như của 2.10.0M7. Lỗi đã được sửa.

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