Tôi có một trình biên dịch Scala 2.9 plugin (mã nguồn) và hoạt động tốt trong 2.9 nhưng thậm chí không biên dịch với 2.10. Có hàng chục (có thể 100) lỗi tất cả cùng loại như:Bất kỳ thông tin nào trên đó khi di chuyển plugin trình biên dịch Scala 2.9 lên 2.10?
[scalac] C:\***.scala:31: error: illegal cyclic reference involving class Global
[scalac] val fileSeparator = System.getProperty("file.separator");
[scalac] ^
... mà cuối cùng chấm dứt với:
[scalac] scala.reflect.internal.Types$TypeError: illegal cyclic reference involving class Global
[scalac] at scala.reflect.internal.Types$class.defineBaseClassesOfCompoundType(Types.scala:1731)
[scalac] at scala.reflect.internal.SymbolTable.defineBaseClassesOfCompoundType(SymbolTable.scala:12)
[scalac] at scala.reflect.internal.Types$CompoundType.baseClasses(Types.scala:1581)
[scalac] at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2369)
[scalac] at scala.reflect.internal.Types$SimpleTypeProxy$class.baseClasses(Types.scala:248)
[scalac] at scala.reflect.internal.Types$SingletonType.baseClasses(Types.scala:1292)
[scalac] at scala.reflect.internal.Types$Type.findMembers(Types.scala:1058)
[scalac] at scala.reflect.internal.Types$Type.membersBasedOnFlags(Types.scala:683)
[scalac] at scala.reflect.internal.Types$Type.implicitMembers(Types.scala:637)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.collect$1(Contexts.scala:630)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.collectImplicitImports(Contexts.scala:642)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:670)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Contexts$Context.implicitss(Contexts.scala:675)
[scalac] at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1378)
[scalac] at scala.tools.nsc.typechecker.Implicits$class.inferImplicit(Implicits.scala:82)
[scalac] at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:490)
[scalac] at scala.tools.nsc.typechecker.Implicits$class.inferImplicit(Implicits.scala:37)
[scalac] at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:490)
[scalac] at scala.tools.nsc.typechecker.Typers$Typer.hasImport$1(Typers.scala:764)
[scalac] at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$action$1(Typers.scala:766)
[scalac] at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$checkFeature$1.apply$mcV$sp(Typers.scala:788)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$apply$1.apply(Analyzer.scala:100)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$apply$1.apply(Analyzer.scala:100)
[scalac] at scala.collection.immutable.List.foreach(List.scala:309)
[scalac] at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
[scalac] at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:100)
[scalac] at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:90)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:90)
[scalac] at scala.collection.Iterator$class.foreach(Iterator.scala:727)
[scalac] at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
[scalac] at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:90)
[scalac] at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
[scalac] at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
[scalac] at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
[scalac] at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
[scalac] at scala.tools.ant.Scalac.executeInternal(Scalac.scala:699)
[scalac] at scala.tools.ant.Scalac.execute(Scalac.scala:647)
...
Tôi cần một số thông tin hoặc giúp đỡ như những gì có thay đổi trong 2,10 hoặc làm thế nào để đối phó với điều này ... Tôi đã thử Googling xung quanh và tìm kiếm trong diễn đàn nhưng tìm thấy rất ít thông tin về chủ đề này.
Sẽ biết ơn vì bất kỳ trợ giúp nào!
EDIT: Thông tin bổ sung. Điều này rõ ràng là sử dụng nhiệm vụ kiến (xem dấu vết ngăn xếp). nhiệm vụ đó đã được xác định:
<taskdef resource="scala/tools/ant/antlib.xml">
<classpath>
<pathelement location=".../scala-library.jar" />
<pathelement location=".../scala-reflect.jar" />
<pathelement location=".../scala-compiler.jar" />
</classpath>
</taskdef>
EDIT 2: Thông tin thêm thêm: Tôi quản lý để có được plugin này để biên dịch (không chạy nó chưa như những thứ khác không) sử dụng dòng lệnh 2.10 trình biên dịch (nhớ - tất cả đều tốt trong thế giới 2.9) - xây dựng dựa trên kiến tiếp tục không theo cùng một cách (lỗi?). Tôi phải thực hiện hai thay đổi. Giao dịch đầu tiên với varargs. Có một phương pháp như:
def foo(arg: String*) { ... }
Có một phương pháp đó là một cách hiệu quả một từ đồng nghĩa với nó quảng cáo được viết bằng 2,9 Scala như:
def bar = foo _;
tôi đã phải thay đổi này như sau để làm cho nó hoạt động:
def bar(arg: String*) = foo(arg: *);
Một thỏa thuận khác với 'hasAssignedAnnotations' không còn tồn tại trong ValOrDefDef.symbol nữa (Tôi vừa nhận xét rằng để có được nó để biên dịch, không phải là bản sửa lỗi thực).
Một lần nữa, bất kỳ ai biết trang web hoặc tài liệu có thể giúp tôi di chuyển - tức là thay đổi từ 2,9 đến 2,10 theo thứ tự tôi cần, bao gồm cả trình biên dịch trình biên dịch.
Cảm ơn!
Chỉ cần đoán, có thể có một bóng mới của biểu tượng 'Hệ thống' trong 2.10 trình biên dịch. Trong 2,10, bạn cũng có thể sử dụng 'sys.props (" file.separator ")', có thể sửa lỗi đó. –
Lỗi xuất hiện trên nhiều dòng rất khác nhau và dường như không liên quan gì cả. Cái tôi đưa vào đây chỉ là một ví dụ. – Learner
Bạn có liên kết đến các nguồn của mình không? –