Mam wtyczkę kompilatora Scala 2.9 (kod źródłowy) i działa dobrze w wersji 2.9, ale nawet nie kompiluje się z wersją 2.10. Istnieją dziesiątki (może 100+) błędów wszystkie tego samego rodzaju, takie jak:Jakieś informacje na temat migracji wtyczki kompilatora Scala 2.9 do wersji 2.10?
[scalac] C:\***.scala:31: error: illegal cyclic reference involving class Global
[scalac] val fileSeparator = System.getProperty("file.separator");
[scalac] ^
... które ostatecznie kończą się:
[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)
...
Potrzebuję informacji lub pomocy, co ma zmieniono w 2.10 lub jak inaczej sobie z tym poradzić ... Próbowałem Googlować i przeglądać fora, ale znalazłem bardzo mało informacji na ten temat.
Będziemy wdzięczni za każdą pomoc!
EDYCJA: Dodatkowe informacje. Jest to oczywiście użycie zadania ant (zobacz śledzenie stosu). Że zadanie zostało zdefiniowane:
<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: więcej dodatkowych informacji: udało mi się ten plugin do skompilować (nie uruchomić go jeszcze inne rzeczy, nie powiodło się) przy użyciu wiersza polecenia 2,10 kompilatora (pamiętaj - wszystko jest w porządku w świecie 2.9) - konstrukcja oparta na mrówce nadal nie działa w ten sam sposób (błąd?). Musiałem wprowadzić dwie zmiany. Najpierw zajmuje się varargs. Jest to metoda, takie jak:
def foo(arg: String*) { ... }
Jest jeszcze inna metoda, która jest praktycznie synonimem to ogłoszenie został napisany w 2,9 Scala jako:
def bar = foo _;
musiałem zmienić na następujące aby zmusić go do pracy:
def bar(arg: String*) = foo(arg: *);
Innym przedmiotem „hasAssignedAnnotations” nie występuje w ValOrDefDef.symbol nic więcej (ja po prostu powiedział, że się je zdobyć do kompilacji, a nie prawdziwej poprawki).
Jeszcze raz, czy ktoś wie o stronie internetowej lub dokumencie, który może mi pomóc w migracji - tj. Co zmieniło się z 2,9 do 2,10 w zakresie, który jest mi potrzebny, łącznie z wtyczkami kompilatora.
Dzięki!
Po prostu zgaduję, może jest nowy cień symbolu "System" w 2.10 kompilatorów. W 2.10 można również użyć 'sys.props (" file.separator ")', może naprawić ten błąd. –
Błąd pojawia się w wielu wierszach, które są bardzo różne i nie wydają się być w ogóle powiązane. Ta, którą tu zamieściłem, jest tylko przykładem. – Learner
Czy masz link do swoich źródeł? –