From 5a4715349dd334110f6a8a2e3a5ee94d743eb9ab Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Wed, 16 Apr 2014 23:50:39 +0200 Subject: [PATCH] major cleanup of paradise builds --- job/macro-paradise-2102-virt/run | 40 -- job/macro-paradise-2102-virt/test_fixup.patch | 218 ------- job/macro-paradise-2110-M7/run | 44 -- job/macro-paradise-2110-M7/test_fixup.patch | 567 ------------------ job/macro-paradise-2110-RC1/run | 44 -- job/macro-paradise-2110-RC1/test_fixup.patch | 254 -------- job/macro-paradise-2110-RC3/run | 44 -- job/macro-paradise-2110-RC3/test_fixup.patch | 254 -------- job/macro-paradise-2110-RC4/run | 44 -- job/macro-paradise-2110-RC4/test_fixup.patch | 254 -------- .../run | 6 +- .../test_fixup.patch | 0 12 files changed, 3 insertions(+), 1766 deletions(-) delete mode 100755 job/macro-paradise-2102-virt/run delete mode 100644 job/macro-paradise-2102-virt/test_fixup.patch delete mode 100755 job/macro-paradise-2110-M7/run delete mode 100644 job/macro-paradise-2110-M7/test_fixup.patch delete mode 100755 job/macro-paradise-2110-RC1/run delete mode 100644 job/macro-paradise-2110-RC1/test_fixup.patch delete mode 100755 job/macro-paradise-2110-RC3/run delete mode 100644 job/macro-paradise-2110-RC3/test_fixup.patch delete mode 100755 job/macro-paradise-2110-RC4/run delete mode 100644 job/macro-paradise-2110-RC4/test_fixup.patch rename job/{macro-paradise-2110-M8 => macro-paradise-2110}/run (91%) rename job/{macro-paradise-2110-M8 => macro-paradise-2110}/test_fixup.patch (100%) diff --git a/job/macro-paradise-2102-virt/run b/job/macro-paradise-2102-virt/run deleted file mode 100755 index 6a18824..0000000 --- a/job/macro-paradise-2102-virt/run +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -ex - -# STEP 1: INITIALIZE -script_dir="$( cd "$( dirname "$0" )" && pwd )" -scriptsDir="$( cd "$( dirname "$0" )/../.." && pwd )" -. $scriptsDir/common -runSbt () { - sbt -Dmaven.settings.file="$maven_settings_file" -no-colors -no-share -sbt-launch-dir "$script_dir/project/launcher" "$@" -} -git clean -dfx -if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.10.2-virt paradise -if [[ -d scala ]]; then rm -rf scala; fi -git clone git@github.com:namin/scala.git -b topic-virt-2.10.2-release scala - -# STEP 2: RUN THE TESTS -cd "$script_dir/paradise" -runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.10/paradisevirt_*.jar ) -[[ ! -f "$plugin" ]] && exit 1 - -# STEP 3: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN -cd "$script_dir/scala" -git checkout topic-virt-2.10.2-release -./pull-binary-libs.sh -ant locker.done # we might be binary incompatible with starr, so no plugin when building locker -# TODO: don't know what's going on, but with the plugin enabled Universe.reify stops being recognized as a macro -# well, I actually I have a suspicion that hijacking fastTrack might lead to Universe.reify not being marked as MACRO -# but I've disabled the hijack when compiling scala-reflect.jar, and the problem still persists -# ant "-Dscalac.args=\"-Xplugin:$plugin\"" build-opt test.bc -ant build -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -git apply ../test_fixup.patch -cd "$script_dir/scala/test" -SCALAC_OPTS="-Xplugin:$plugin" ./partest --all - -# STEP 4: PUBLISH TO SONATYPE -cd "$script_dir/paradise" -runSbt "project paradisevirt" publish "project quasiquotes" publish diff --git a/job/macro-paradise-2102-virt/test_fixup.patch b/job/macro-paradise-2102-virt/test_fixup.patch deleted file mode 100644 index 5dd62ed..0000000 --- a/job/macro-paradise-2102-virt/test_fixup.patch +++ /dev/null @@ -1,218 +0,0 @@ -From 90aa744c7eb874f0735f1ef12ec336fa6bfe4aba Mon Sep 17 00:00:00 2001 -From: Eugene Burmako -Date: Wed, 5 Mar 2014 13:18:53 +0100 -Subject: [PATCH] test that currently fail for macro paradise - ---- - test/files/neg/divergent-implicit.check | 10 ++++--- - test/files/neg/t5578.check | 5 +++- - test/files/neg/t5845.check | 7 ----- - test/files/neg/t5845.scala | 16 ---------- - test/files/neg/t800.check | 3 +- - test/files/pos/t5845.scala | 16 ++++++++++ - test/files/pos/z1730.scala | 13 --------- - test/files/run/t5923a/Macros_1.scala | 42 +++++++++++++++++++++++++-- - test/files/scalap/typeAnnotations/result.test | 2 +- - 9 files changed, 68 insertions(+), 46 deletions(-) - delete mode 100644 test/files/neg/t5845.check - delete mode 100644 test/files/neg/t5845.scala - create mode 100644 test/files/pos/t5845.scala - delete mode 100644 test/files/pos/z1730.scala - -diff --git a/test/files/neg/divergent-implicit.check b/test/files/neg/divergent-implicit.check -index 5f20df1b91..759823d6a9 100644 ---- a/test/files/neg/divergent-implicit.check -+++ b/test/files/neg/divergent-implicit.check -@@ -7,12 +7,14 @@ divergent-implicit.scala:5: error: diverging implicit expansion for type Int => - starting with method cast in object Test1 - val x2: String = cast[Int, String](1) - ^ --divergent-implicit.scala:14: error: diverging implicit expansion for type Test2.Baz => Test2.Bar --starting with method baz2bar in object Test2 -+divergent-implicit.scala:14: error: type mismatch; -+ found : Test2.Foo -+ required: Test2.Bar - val x: Bar = new Foo - ^ --divergent-implicit.scala:15: error: diverging implicit expansion for type Test2.Foo => Test2.Bar --starting with method foo2bar in object Test2 -+divergent-implicit.scala:15: error: type mismatch; -+ found : Test2.Baz -+ required: Test2.Bar - val y: Bar = new Baz - ^ - four errors found -diff --git a/test/files/neg/t5578.check b/test/files/neg/t5578.check -index d803adb223..56123d2e0f 100644 ---- a/test/files/neg/t5578.check -+++ b/test/files/neg/t5578.check -@@ -1,4 +1,7 @@ --t5578.scala:33: error: No Manifest available for T. -+t5578.scala:33: error: type mismatch; -+ found : NumericOpsExp.this.Plus[T] -+ required: NumericOpsExp.this.Rep[T] -+ (which expands to) NumericOpsExp.this.Exp[T] - def plus[T: Numeric](x: Rep[T], y: Rep[T]): Rep[T] = Plus[T](x,y) - ^ - one error found -diff --git a/test/files/neg/t5845.check b/test/files/neg/t5845.check -deleted file mode 100644 -index 8c6100d6de..0000000000 ---- a/test/files/neg/t5845.check -+++ /dev/null -@@ -1,7 +0,0 @@ --t5845.scala:9: error: value +++ is not a member of Int -- println(5 +++ 5) -- ^ --t5845.scala:15: error: value +++ is not a member of Int -- println(5 +++ 5) -- ^ --two errors found -diff --git a/test/files/neg/t5845.scala b/test/files/neg/t5845.scala -deleted file mode 100644 -index 823c722c14..0000000000 ---- a/test/files/neg/t5845.scala -+++ /dev/null -@@ -1,16 +0,0 @@ --class Num[T] { -- def mkOps = new Ops -- class Ops { def +++(rhs: T) = () } --} -- --class A { -- implicit def infixOps[T, CC[X] <: Num[X]](lhs: T)(implicit num: CC[T]) = num.mkOps -- implicit val n1 = new Num[Int] { } -- println(5 +++ 5) --} -- --class B { -- implicit def infixOps[T, CC[X] <: Num[X]](lhs: T)(implicit num: CC[T]) : CC[T]#Ops = num.mkOps -- implicit val n1 = new Num[Int] {} -- println(5 +++ 5) --} -diff --git a/test/files/neg/t800.check b/test/files/neg/t800.check -index 8ba95fddde..37a0c6f324 100644 ---- a/test/files/neg/t800.check -+++ b/test/files/neg/t800.check -@@ -5,8 +5,7 @@ t800.scala:8: error: method qualification is defined twice - conflicting symbols both originated in file 't800.scala' - val qualification = false; - ^ --t800.scala:12: error: value qualification is defined twice -- conflicting symbols both originated in file 't800.scala' -+t800.scala:12: error: qualification is already defined as value qualification - var qualification = false; - ^ - t800.scala:16: error: method qualification is defined twice -diff --git a/test/files/pos/t5845.scala b/test/files/pos/t5845.scala -new file mode 100644 -index 0000000000..823c722c14 ---- /dev/null -+++ b/test/files/pos/t5845.scala -@@ -0,0 +1,16 @@ -+class Num[T] { -+ def mkOps = new Ops -+ class Ops { def +++(rhs: T) = () } -+} -+ -+class A { -+ implicit def infixOps[T, CC[X] <: Num[X]](lhs: T)(implicit num: CC[T]) = num.mkOps -+ implicit val n1 = new Num[Int] { } -+ println(5 +++ 5) -+} -+ -+class B { -+ implicit def infixOps[T, CC[X] <: Num[X]](lhs: T)(implicit num: CC[T]) : CC[T]#Ops = num.mkOps -+ implicit val n1 = new Num[Int] {} -+ println(5 +++ 5) -+} -diff --git a/test/files/pos/z1730.scala b/test/files/pos/z1730.scala -deleted file mode 100644 -index 0c5875a818..0000000000 ---- a/test/files/pos/z1730.scala -+++ /dev/null -@@ -1,13 +0,0 @@ --// /scala/trac/z1730/a.scala --// Wed May 23 07:41:25 PDT 2012 -- --class X[R] { -- def xx(value: => R, addTweak: Boolean = true) = 0 --} -- --class Boo { -- implicit def toX[R](v: R) : X[R] = null -- def goo2 { -- 3.xx(34) -- } --} -diff --git a/test/files/run/t5923a/Macros_1.scala b/test/files/run/t5923a/Macros_1.scala -index 6d21362c4d..97076eb102 100644 ---- a/test/files/run/t5923a/Macros_1.scala -+++ b/test/files/run/t5923a/Macros_1.scala -@@ -7,8 +7,46 @@ object C { - } - - object Macros { -- def impl[T: c.WeakTypeTag](c: Context) = { -+ def impl[T](c: Context)(ttag: c.WeakTypeTag[T]) = { - import c.universe._ -- reify(C[T](c.literal(weakTypeOf[T].toString).splice)) -+ val ttag0 = ttag; -+ { -+ // When we're expanding implicitly[C[Nothing]], the type inferencer will see -+ // that foo[T] returns C[T] and that we request an implicit of type C[Nothing]. -+ // -+ // Then the type inferencer will try to match C[T] against C[Nothing] and infer everything it can infer -+ // from that match, but not more (e.g. if we were returning Iso[T, U] and the type we were looking at was Iso[Foo, L], -+ // we wouldn't want U to be auto-inferred to Nothing, as it usually happens with normal methods, -+ // but would rather want it to remain unknown, so that our macro could take a stab at inferring it: -+ // see the comments in this commit for more information). -+ // -+ // Equipped with common sense, in our case of C[T] and C[Nothing] we would expect T to be inferred as Nothing, and then we -+ // would expect T in the corresponding macro invocation to be Nothing. Unfortunately it is not that simple. -+ // -+ // Internally the type inferencer uses Nothing as a dummy value, which stands for "don't know how to -+ // infer this type parameter". In the Iso example, matching Iso[T, U] against Iso[Foo, L] would result in -+ // T being inferred as Foo and U being inferred as Nothing (!!). Then the type inferencer will think: -+ // "Aha! U ended up being Nothing. This means that I failed to infer it, -+ // therefore the result of my work is: T -> Foo, U -> still unknown". -+ // -+ // That's all very good and works very well until Nothing is a genuine result of type inference, -+ // as in our original example of inferring T in C[T] from C[Nothing]. In that case, the inferencer becomes confused -+ // and here in the macro implementation we get weakTypeOf[T] equal to some dummy type carrying a type parameter -+ // instead of Nothing. -+ // -+ // This eccentric behavior of the type inferencer is a long-standing problem in scalac, -+ // so the best one can do for now until it's fixed is to work around, manually converting -+ // suspicious T's into Nothings. Of course, this means that we would have to approximate, -+ // because there's no way to know whether having T here stands for a failed attempt to infer Nothing -+ // or for a failed attempt to infer anything, but at least we're in full control of making the best -+ // of this sad situation. -+ implicit def ttag: WeakTypeTag[T] = { -+ val tpe = ttag0.tpe -+ val sym = tpe.typeSymbol.asType -+ if (sym.isParameter && !sym.isSkolem) TypeTag.Nothing.asInstanceOf[TypeTag[T]] -+ else ttag0 -+ } -+ reify(C[T](c.literal(weakTypeOf[T].toString).splice)) -+ } - } - } -\ No newline at end of file -diff --git a/test/files/scalap/typeAnnotations/result.test b/test/files/scalap/typeAnnotations/result.test -index 407b0235c6..69129d6d26 100644 ---- a/test/files/scalap/typeAnnotations/result.test -+++ b/test/files/scalap/typeAnnotations/result.test -@@ -1,8 +1,8 @@ - abstract class TypeAnnotations[@scala.specialized R] extends scala.AnyRef { - def this() = { /* compiled code */ } - @scala.specialized -- val x : scala.Int = { /* compiled code */ } - @scala.specialized - type T - def compose[@scala.specialized A](x : A, y : R) : A = { /* compiled code */ } -+ val x : scala.Int = { /* compiled code */ } - } --- -1.8.5.4 - diff --git a/job/macro-paradise-2110-M7/run b/job/macro-paradise-2110-M7/run deleted file mode 100755 index bdc6252..0000000 --- a/job/macro-paradise-2110-M7/run +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -ex - -# STEP 1: INITIALIZE -script_dir="$( cd "$( dirname "$0" )" && pwd )" -scriptsDir="$( cd "$( dirname "$0" )/../.." && pwd )" -. $scriptsDir/common -runSbt () { - sbt -Dmaven.settings.file="$maven_settings_file" -no-colors -no-share -sbt-launch-dir "$script_dir/project/launcher" "$@" -} -git clean -dfx -if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.11.0-M7 paradise -if [[ -d scala ]]; then rm -rf scala; fi -git clone git@github.com:scala/scala.git -b master scala - -# STEP 2: RUN THE TESTS -cd "$script_dir/paradise" -runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.11.0-M7/paradise_*.jar ) -[[ ! -f "$plugin" ]] && exit 1 - -# STEP 3: SELECT SCALAC BRANCH AND APPLY OUR PATCHES -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -cd "$script_dir/scala" -git checkout v2.11.0-M7 -git apply "$script_dir/test_fixup.patch" - -# STEP 4: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN -cd "$script_dir/scala" -./pull-binary-libs.sh -ant locker.done # we might be binary incompatible with starr, so no plugin when building locker -# TODO: don't know what's going on, but with the plugin enabled Universe.reify stops being recognized as a macro -# well, I actually I have a suspicion that hijacking fastTrack might lead to Universe.reify not being marked as MACRO -# but I've disabled the hijack when compiling scala-reflect.jar, and the problem still persists -# ant "-Dscalac.args=\"-Xplugin:$plugin\"" build-opt test.bc -ant build partest.task -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -ant "-Dscalac.args.optimise=\"-Xplugin:$plugin\"" test.suite - -# STEP 4: PUBLISH TO SONATYPE -cd "$script_dir/paradise" -runSbt "project paradise" publish diff --git a/job/macro-paradise-2110-M7/test_fixup.patch b/job/macro-paradise-2110-M7/test_fixup.patch deleted file mode 100644 index 1d56235..0000000 --- a/job/macro-paradise-2110-M7/test_fixup.patch +++ /dev/null @@ -1,567 +0,0 @@ -From 7bbb04d73dd314112fcd94edf58fac7ac785b3f3 Mon Sep 17 00:00:00 2001 -From: Eugene Burmako -Date: Sat, 9 Nov 2013 20:40:41 +0100 -Subject: [PATCH] tests that currently fail for macro paradise - ---- - test/files/jvm/t7006.check | 1 + - test/files/neg/t6446-additional.check | 62 +++++++--------- - test/files/neg/t6446-list.check | 1 + - test/files/neg/t6446-missing.check | 59 +++++++--------- - test/files/neg/t6446-show-phases.check | 59 +++++++--------- - test/files/neg/t6666.scala | 121 -------------------------------- - test/files/neg/t7494-no-options.check | 62 +++++++--------- - test/files/neg/t800.check | 3 +- - test/files/pos/t7426.scala | 3 - - test/files/run/t6102.check | 7 +- - test/files/run/t6259.scala | 56 --------------- - test/files/scalap/typeAnnotations.check | 2 +- - 12 files changed, 107 insertions(+), 329 deletions(-) - delete mode 100644 test/files/neg/t6666.scala - delete mode 100644 test/files/pos/t7426.scala - delete mode 100644 test/files/run/t6259.scala - -diff --git a/test/files/jvm/t7006.check b/test/files/jvm/t7006.check -index 6294b14d62..881d431a9c 100644 ---- a/test/files/jvm/t7006.check -+++ b/test/files/jvm/t7006.check -@@ -1,4 +1,5 @@ - [running phase parser on Foo_1.scala] -+[running phase macroparadise on Foo_1.scala] - [running phase namer on Foo_1.scala] - [running phase packageobjects on Foo_1.scala] - [running phase typer on Foo_1.scala] -diff --git a/test/files/neg/t6446-additional.check b/test/files/neg/t6446-additional.check -index a87af2f1e5..fe5c2627ef 100755 ---- a/test/files/neg/t6446-additional.check -+++ b/test/files/neg/t6446-additional.check -@@ -1,39 +1,29 @@ - phase name id description - ---------- -- ----------- - parser 1 parse source into ASTs, perform simple desugaring -- namer 2 resolve names, attach symbols to named trees --packageobjects 3 load package objects -- typer 4 the meat and potatoes: type the trees -- patmat 5 translate match expressions --superaccessors 6 add super accessors in traits and nested classes -- extmethods 7 add extension methods for inline classes -- pickler 8 serialize symbol tables -- refchecks 9 reference/override checking, translate nested objects -- uncurry 10 uncurry, translate function values to anonymous classes -- tailcalls 11 replace tail calls by jumps -- specialize 12 @specialized-driven class and method specialization -- explicitouter 13 this refs to outer pointers -- erasure 14 erase types, add interfaces for traits -- posterasure 15 clean up erased inline classes -- lazyvals 16 allocate bitmaps, translate lazy vals into lazified defs -- lambdalift 17 move nested functions to top level -- constructors 18 move field definitions into constructors -- flatten 19 eliminate inner classes -- mixin 20 mixin composition -- cleanup 21 platform-specific cleanups, generate reflective calls -- delambdafy 22 remove lambdas -- icode 23 generate portable intermediate code --#partest -optimise -- inliner 24 optimization: do inlining --inlinehandlers 25 optimization: inline exception handlers -- closelim 26 optimization: eliminate uncalled closures -- constopt 27 optimization: optimize null and other constants -- dce 28 optimization: eliminate dead code -- jvm 29 generate JVM bytecode -- ploogin 30 A sample phase that does so many things it's kind of hard... -- terminal 31 the last phase during a compilation run --#partest !-optimise -- jvm 24 generate JVM bytecode -- ploogin 25 A sample phase that does so many things it's kind of hard... -- terminal 26 the last phase during a compilation run --#partest -+ macroparadise 2 let our powers combine -+ namer 3 resolve names, attach symbols to named trees in paradise -+packageobjects 4 load package objects in paradise -+ typer 5 the meat and potatoes: type the trees in paradise -+ patmat 6 translate match expressions -+superaccessors 7 add super accessors in traits and nested classes -+ extmethods 8 add extension methods for inline classes -+ pickler 9 serialize symbol tables -+ refchecks 10 reference/override checking, translate nested objects -+ uncurry 11 uncurry, translate function values to anonymous classes -+ tailcalls 12 replace tail calls by jumps -+ specialize 13 @specialized-driven class and method specialization -+ explicitouter 14 this refs to outer pointers -+ erasure 15 erase types, add interfaces for traits -+ posterasure 16 clean up erased inline classes -+ lazyvals 17 allocate bitmaps, translate lazy vals into lazified defs -+ lambdalift 18 move nested functions to top level -+ constructors 19 move field definitions into constructors -+ flatten 20 eliminate inner classes -+ mixin 21 mixin composition -+ cleanup 22 platform-specific cleanups, generate reflective calls -+ delambdafy 23 remove lambdas -+ icode 24 generate portable intermediate code -+ jvm 25 generate JVM bytecode -+ ploogin 26 A sample phase that does so many things it's kind of hard... -+ terminal 27 the last phase during a compilation run -diff --git a/test/files/neg/t6446-list.check b/test/files/neg/t6446-list.check -index fa5c581941..3b08e6480a 100755 ---- a/test/files/neg/t6446-list.check -+++ b/test/files/neg/t6446-list.check -@@ -1 +1,2 @@ -+macroparadise - Empowers production Scala compiler with latest macro developments - ploogin - A sample plugin for testing. -diff --git a/test/files/neg/t6446-missing.check b/test/files/neg/t6446-missing.check -index cd867289c3..a1d7afedaf 100755 ---- a/test/files/neg/t6446-missing.check -+++ b/test/files/neg/t6446-missing.check -@@ -2,37 +2,28 @@ Warning: class not found: t6446.Ploogin - phase name id description - ---------- -- ----------- - parser 1 parse source into ASTs, perform simple desugaring -- namer 2 resolve names, attach symbols to named trees --packageobjects 3 load package objects -- typer 4 the meat and potatoes: type the trees -- patmat 5 translate match expressions --superaccessors 6 add super accessors in traits and nested classes -- extmethods 7 add extension methods for inline classes -- pickler 8 serialize symbol tables -- refchecks 9 reference/override checking, translate nested objects -- uncurry 10 uncurry, translate function values to anonymous classes -- tailcalls 11 replace tail calls by jumps -- specialize 12 @specialized-driven class and method specialization -- explicitouter 13 this refs to outer pointers -- erasure 14 erase types, add interfaces for traits -- posterasure 15 clean up erased inline classes -- lazyvals 16 allocate bitmaps, translate lazy vals into lazified defs -- lambdalift 17 move nested functions to top level -- constructors 18 move field definitions into constructors -- flatten 19 eliminate inner classes -- mixin 20 mixin composition -- cleanup 21 platform-specific cleanups, generate reflective calls -- delambdafy 22 remove lambdas -- icode 23 generate portable intermediate code --#partest !-optimise -- jvm 24 generate JVM bytecode -- terminal 25 the last phase during a compilation run --#partest -optimise -- inliner 24 optimization: do inlining --inlinehandlers 25 optimization: inline exception handlers -- closelim 26 optimization: eliminate uncalled closures -- constopt 27 optimization: optimize null and other constants -- dce 28 optimization: eliminate dead code -- jvm 29 generate JVM bytecode -- terminal 30 the last phase during a compilation run --#partest -+ macroparadise 2 let our powers combine -+ namer 3 resolve names, attach symbols to named trees in paradise -+packageobjects 4 load package objects in paradise -+ typer 5 the meat and potatoes: type the trees in paradise -+ patmat 6 translate match expressions -+superaccessors 7 add super accessors in traits and nested classes -+ extmethods 8 add extension methods for inline classes -+ pickler 9 serialize symbol tables -+ refchecks 10 reference/override checking, translate nested objects -+ uncurry 11 uncurry, translate function values to anonymous classes -+ tailcalls 12 replace tail calls by jumps -+ specialize 13 @specialized-driven class and method specialization -+ explicitouter 14 this refs to outer pointers -+ erasure 15 erase types, add interfaces for traits -+ posterasure 16 clean up erased inline classes -+ lazyvals 17 allocate bitmaps, translate lazy vals into lazified defs -+ lambdalift 18 move nested functions to top level -+ constructors 19 move field definitions into constructors -+ flatten 20 eliminate inner classes -+ mixin 21 mixin composition -+ cleanup 22 platform-specific cleanups, generate reflective calls -+ delambdafy 23 remove lambdas -+ icode 24 generate portable intermediate code -+ jvm 25 generate JVM bytecode -+ terminal 26 the last phase during a compilation run -diff --git a/test/files/neg/t6446-show-phases.check b/test/files/neg/t6446-show-phases.check -index 3ae3f96ef2..f817aeee74 100644 ---- a/test/files/neg/t6446-show-phases.check -+++ b/test/files/neg/t6446-show-phases.check -@@ -1,37 +1,28 @@ - phase name id description - ---------- -- ----------- - parser 1 parse source into ASTs, perform simple desugaring -- namer 2 resolve names, attach symbols to named trees --packageobjects 3 load package objects -- typer 4 the meat and potatoes: type the trees -- patmat 5 translate match expressions --superaccessors 6 add super accessors in traits and nested classes -- extmethods 7 add extension methods for inline classes -- pickler 8 serialize symbol tables -- refchecks 9 reference/override checking, translate nested objects -- uncurry 10 uncurry, translate function values to anonymous classes -- tailcalls 11 replace tail calls by jumps -- specialize 12 @specialized-driven class and method specialization -- explicitouter 13 this refs to outer pointers -- erasure 14 erase types, add interfaces for traits -- posterasure 15 clean up erased inline classes -- lazyvals 16 allocate bitmaps, translate lazy vals into lazified defs -- lambdalift 17 move nested functions to top level -- constructors 18 move field definitions into constructors -- flatten 19 eliminate inner classes -- mixin 20 mixin composition -- cleanup 21 platform-specific cleanups, generate reflective calls -- delambdafy 22 remove lambdas -- icode 23 generate portable intermediate code --#partest !-optimise -- jvm 24 generate JVM bytecode -- terminal 25 the last phase during a compilation run --#partest -optimise -- inliner 24 optimization: do inlining --inlinehandlers 25 optimization: inline exception handlers -- closelim 26 optimization: eliminate uncalled closures -- constopt 27 optimization: optimize null and other constants -- dce 28 optimization: eliminate dead code -- jvm 29 generate JVM bytecode -- terminal 30 the last phase during a compilation run --#partest -+ macroparadise 2 let our powers combine -+ namer 3 resolve names, attach symbols to named trees in paradise -+packageobjects 4 load package objects in paradise -+ typer 5 the meat and potatoes: type the trees in paradise -+ patmat 6 translate match expressions -+superaccessors 7 add super accessors in traits and nested classes -+ extmethods 8 add extension methods for inline classes -+ pickler 9 serialize symbol tables -+ refchecks 10 reference/override checking, translate nested objects -+ uncurry 11 uncurry, translate function values to anonymous classes -+ tailcalls 12 replace tail calls by jumps -+ specialize 13 @specialized-driven class and method specialization -+ explicitouter 14 this refs to outer pointers -+ erasure 15 erase types, add interfaces for traits -+ posterasure 16 clean up erased inline classes -+ lazyvals 17 allocate bitmaps, translate lazy vals into lazified defs -+ lambdalift 18 move nested functions to top level -+ constructors 19 move field definitions into constructors -+ flatten 20 eliminate inner classes -+ mixin 21 mixin composition -+ cleanup 22 platform-specific cleanups, generate reflective calls -+ delambdafy 23 remove lambdas -+ icode 24 generate portable intermediate code -+ jvm 25 generate JVM bytecode -+ terminal 26 the last phase during a compilation run -diff --git a/test/files/neg/t6666.scala b/test/files/neg/t6666.scala -deleted file mode 100644 -index 58c5be5405..0000000000 ---- a/test/files/neg/t6666.scala -+++ /dev/null -@@ -1,121 +0,0 @@ --class C(a: Any) --object F { -- def byname(a: => Any) = println(a) -- def hof(a: () => Any) = println(a()) --} -- --class COkay extends C(0) { -- def this(a: Any) { -- this() -- def x = "".toString -- F.byname(x) -- } --} -- --// --// The thunk's apply method accesses the MODULE$ --// field before it is set. --// --// 0: getstatic #23; //Field O1$.MODULE$:LO1$; --// 3: invokevirtual #26; //Method O1$.O1$$x$1:()Ljava/lang/String; --object O1 extends C({ -- def x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O2$$anonfun$$init$$1.apply(:11) --object O2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O3$$anonfun$$init$$1.apply(:11) --object O3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) -- --// Okay, the nested classes don't get an outer pointer passed, --// just an extra param for `x: String`. --object O6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- -- --class C1 extends C({ -- def x = "".toString -- F.byname(x) --}) --class C2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) --class C3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) --class C4 extends C({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx --}) -- --// okay, for same reason as O6 --class C6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- --class C11(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.byname(x) -- }) -- } --} -- --// Crashes earlier in lazyVals. --// class C12(a: Any) { --// def this() = { --// this({ --// lazy val x = "".toString --// F.byname(x) --// }) --// } --// } -- --class C13(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.hof(() => x) -- }) -- } --} -- --class C14(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- }) -- } --} -- --class COuter extends C({ -- def foo = 0 -- class CInner extends C({foo}) --}) -- -- --class CEarly(a: Any) extends { -- val early = {def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- } --} with AnyRef -\ No newline at end of file -diff --git a/test/files/neg/t7494-no-options.check b/test/files/neg/t7494-no-options.check -index e3316f590a..04f1257515 100644 ---- a/test/files/neg/t7494-no-options.check -+++ b/test/files/neg/t7494-no-options.check -@@ -2,39 +2,29 @@ error: Error: ploogin takes no options - phase name id description - ---------- -- ----------- - parser 1 parse source into ASTs, perform simple desugaring -- namer 2 resolve names, attach symbols to named trees --packageobjects 3 load package objects -- typer 4 the meat and potatoes: type the trees -- patmat 5 translate match expressions --superaccessors 6 add super accessors in traits and nested classes -- extmethods 7 add extension methods for inline classes -- pickler 8 serialize symbol tables -- refchecks 9 reference/override checking, translate nested objects -- uncurry 10 uncurry, translate function values to anonymous classes -- tailcalls 11 replace tail calls by jumps -- specialize 12 @specialized-driven class and method specialization -- explicitouter 13 this refs to outer pointers -- erasure 14 erase types, add interfaces for traits -- posterasure 15 clean up erased inline classes -- lazyvals 16 allocate bitmaps, translate lazy vals into lazified defs -- lambdalift 17 move nested functions to top level -- constructors 18 move field definitions into constructors -- flatten 19 eliminate inner classes -- mixin 20 mixin composition -- cleanup 21 platform-specific cleanups, generate reflective calls -- delambdafy 22 remove lambdas -- icode 23 generate portable intermediate code --#partest !-optimise -- jvm 24 generate JVM bytecode -- ploogin 25 A sample phase that does so many things it's kind of hard... -- terminal 26 the last phase during a compilation run --#partest -optimise -- inliner 24 optimization: do inlining --inlinehandlers 25 optimization: inline exception handlers -- closelim 26 optimization: eliminate uncalled closures -- constopt 27 optimization: optimize null and other constants -- dce 28 optimization: eliminate dead code -- jvm 29 generate JVM bytecode -- ploogin 30 A sample phase that does so many things it's kind of hard... -- terminal 31 the last phase during a compilation run --#partest -+ macroparadise 2 let our powers combine -+ namer 3 resolve names, attach symbols to named trees in paradise -+packageobjects 4 load package objects in paradise -+ typer 5 the meat and potatoes: type the trees in paradise -+ patmat 6 translate match expressions -+superaccessors 7 add super accessors in traits and nested classes -+ extmethods 8 add extension methods for inline classes -+ pickler 9 serialize symbol tables -+ refchecks 10 reference/override checking, translate nested objects -+ uncurry 11 uncurry, translate function values to anonymous classes -+ tailcalls 12 replace tail calls by jumps -+ specialize 13 @specialized-driven class and method specialization -+ explicitouter 14 this refs to outer pointers -+ erasure 15 erase types, add interfaces for traits -+ posterasure 16 clean up erased inline classes -+ lazyvals 17 allocate bitmaps, translate lazy vals into lazified defs -+ lambdalift 18 move nested functions to top level -+ constructors 19 move field definitions into constructors -+ flatten 20 eliminate inner classes -+ mixin 21 mixin composition -+ cleanup 22 platform-specific cleanups, generate reflective calls -+ delambdafy 23 remove lambdas -+ icode 24 generate portable intermediate code -+ jvm 25 generate JVM bytecode -+ ploogin 26 A sample phase that does so many things it's kind of hard... -+ terminal 27 the last phase during a compilation run -diff --git a/test/files/neg/t800.check b/test/files/neg/t800.check -index 8ba95fddde..37a0c6f324 100644 ---- a/test/files/neg/t800.check -+++ b/test/files/neg/t800.check -@@ -5,8 +5,7 @@ t800.scala:8: error: method qualification is defined twice - conflicting symbols both originated in file 't800.scala' - val qualification = false; - ^ --t800.scala:12: error: value qualification is defined twice -- conflicting symbols both originated in file 't800.scala' -+t800.scala:12: error: qualification is already defined as value qualification - var qualification = false; - ^ - t800.scala:16: error: method qualification is defined twice -diff --git a/test/files/pos/t7426.scala b/test/files/pos/t7426.scala -deleted file mode 100644 -index 8e42ad1812..0000000000 ---- a/test/files/pos/t7426.scala -+++ /dev/null -@@ -1,3 +0,0 @@ --class foo(x: Any) extends annotation.StaticAnnotation -- --@foo(new AnyRef { }) trait A -diff --git a/test/files/run/t6102.check b/test/files/run/t6102.check -index aa3e6cc9e2..677cbaf939 100644 ---- a/test/files/run/t6102.check -+++ b/test/files/run/t6102.check -@@ -1,4 +1,5 @@ - [running phase parser on t6102.scala] -+[running phase macroparadise on t6102.scala] - [running phase namer on t6102.scala] - [running phase packageobjects on t6102.scala] - [running phase typer on t6102.scala] -@@ -21,12 +22,6 @@ - [running phase cleanup on t6102.scala] - [running phase delambdafy on t6102.scala] - [running phase icode on t6102.scala] --#partest -optimise --[running phase inliner on t6102.scala] --[running phase inlinehandlers on t6102.scala] --[running phase closelim on t6102.scala] --[running phase constopt on t6102.scala] --#partest - [running phase dce on t6102.scala] - [running phase jvm on icode] - hello -diff --git a/test/files/run/t6259.scala b/test/files/run/t6259.scala -deleted file mode 100644 -index b2c27df51f..0000000000 ---- a/test/files/run/t6259.scala -+++ /dev/null -@@ -1,56 +0,0 @@ --import scala.reflect.runtime.universe._ -- --class A[X](implicit val tt: TypeTag[X]) {} --object B extends A[String] -- --object C { -- object D extends A[String] --} -- --trait E { -- object F extends A[String] --} -- --class G { -- object H extends A[String] --} -- --object HasX { -- val x = { -- object InVal extends A[String] -- InVal -- 5 -- } -- --} -- --trait NeedsEarly { -- val x: AnyRef --} -- --object Early extends { -- // Drops to this.getClass and is not ok... -- val x = { object EarlyOk extends A[String]; EarlyOk } --} with NeedsEarly -- -- --class DoubleTrouble[X](x: AnyRef)(implicit override val tt: TypeTag[X]) extends A[X] -- --object DoubleOk extends DoubleTrouble[String]({ -- // Drops to this.getClass and is an issue -- object InnerTrouble extends A[String]; -- InnerTrouble --}) -- --object Test extends App { -- B -- C.D -- val e = new E {}; e.F -- val g = new G; g.H -- -- locally(HasX.x) -- // locally(Early.x) TODO sort out VerifyError in Early$. -- // DoubleOk TODO sort out VerifyError in DoubleOk$. --} -- -- -diff --git a/test/files/scalap/typeAnnotations.check b/test/files/scalap/typeAnnotations.check -index cba69f8e41..d72817a725 100644 ---- a/test/files/scalap/typeAnnotations.check -+++ b/test/files/scalap/typeAnnotations.check -@@ -1,8 +1,8 @@ - abstract class TypeAnnotations[@scala.specialized R] extends scala.AnyRef { - def this() = { /* compiled code */ } - @scala.specialized -- val x: scala.Int = { /* compiled code */ } - @scala.specialized - type T - def compose[@scala.specialized A](x: A, y: R): A = { /* compiled code */ } -+ val x: scala.Int = { /* compiled code */ } - } --- -1.8.4.1 - diff --git a/job/macro-paradise-2110-RC1/run b/job/macro-paradise-2110-RC1/run deleted file mode 100755 index 27a2f88..0000000 --- a/job/macro-paradise-2110-RC1/run +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -ex - -# STEP 1: INITIALIZE -script_dir="$( cd "$( dirname "$0" )" && pwd )" -scriptsDir="$( cd "$( dirname "$0" )/../.." && pwd )" -. $scriptsDir/common -runSbt () { - sbt -Dmaven.settings.file="$maven_settings_file" -no-colors -no-share -sbt-launch-dir "$script_dir/project/launcher" "$@" -} -git clean -dfx -if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.11.0-RC1 paradise -if [[ -d scala ]]; then rm -rf scala; fi -git clone git@github.com:scala/scala.git -b master scala - -# STEP 2: RUN THE TESTS -cd "$script_dir/paradise" -runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.11.0-RC1/paradise_*.jar ) -[[ ! -f "$plugin" ]] && exit 1 - -# STEP 3: SELECT SCALAC BRANCH AND APPLY OUR PATCHES -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -cd "$script_dir/scala" -git checkout v2.11.0-RC1 -git apply "$script_dir/test_fixup.patch" - -# STEP 4: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN -cd "$script_dir/scala" -./pull-binary-libs.sh -ant locker.done # we might be binary incompatible with starr, so no plugin when building locker -# TODO: don't know what's going on, but with the plugin enabled Universe.reify stops being recognized as a macro -# well, I actually I have a suspicion that hijacking fastTrack might lead to Universe.reify not being marked as MACRO -# but I've disabled the hijack when compiling scala-reflect.jar, and the problem still persists -# ant "-Dscalac.args=\"-Xplugin:$plugin\"" build-opt test.bc -ant build partest.task -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -ant "-Dscalac.args.optimise=\"-Xplugin:$plugin\"" test.suite - -# STEP 4: PUBLISH TO SONATYPE -cd "$script_dir/paradise" -runSbt "project paradise" publish diff --git a/job/macro-paradise-2110-RC1/test_fixup.patch b/job/macro-paradise-2110-RC1/test_fixup.patch deleted file mode 100644 index e760d55..0000000 --- a/job/macro-paradise-2110-RC1/test_fixup.patch +++ /dev/null @@ -1,254 +0,0 @@ -From fd17dfeaec6f665715c2db21736c62d188ded540 Mon Sep 17 00:00:00 2001 -From: Eugene Burmako -Date: Sat, 11 Jan 2014 00:05:25 +0100 -Subject: [PATCH] tests that currently fail for macro paradise - ---- - test/files/neg/t6446-list.check | 1 + - test/files/neg/t6666.scala | 121 -------------------------------- - test/files/neg/t800.check | 3 +- - test/files/pos/t7426.scala | 3 - - test/files/run/t6259.scala | 56 --------------- - test/files/scalap/typeAnnotations.check | 2 +- - 6 files changed, 3 insertions(+), 183 deletions(-) - delete mode 100644 test/files/neg/t6666.scala - delete mode 100644 test/files/pos/t7426.scala - delete mode 100644 test/files/run/t6259.scala - -diff --git a/test/files/neg/t6446-list.check b/test/files/neg/t6446-list.check -index fa5c581941..3b08e6480a 100755 ---- a/test/files/neg/t6446-list.check -+++ b/test/files/neg/t6446-list.check -@@ -1 +1,2 @@ -+macroparadise - Empowers production Scala compiler with latest macro developments - ploogin - A sample plugin for testing. -diff --git a/test/files/neg/t6666.scala b/test/files/neg/t6666.scala -deleted file mode 100644 -index 58c5be5405..0000000000 ---- a/test/files/neg/t6666.scala -+++ /dev/null -@@ -1,121 +0,0 @@ --class C(a: Any) --object F { -- def byname(a: => Any) = println(a) -- def hof(a: () => Any) = println(a()) --} -- --class COkay extends C(0) { -- def this(a: Any) { -- this() -- def x = "".toString -- F.byname(x) -- } --} -- --// --// The thunk's apply method accesses the MODULE$ --// field before it is set. --// --// 0: getstatic #23; //Field O1$.MODULE$:LO1$; --// 3: invokevirtual #26; //Method O1$.O1$$x$1:()Ljava/lang/String; --object O1 extends C({ -- def x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O2$$anonfun$$init$$1.apply(:11) --object O2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O3$$anonfun$$init$$1.apply(:11) --object O3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) -- --// Okay, the nested classes don't get an outer pointer passed, --// just an extra param for `x: String`. --object O6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- -- --class C1 extends C({ -- def x = "".toString -- F.byname(x) --}) --class C2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) --class C3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) --class C4 extends C({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx --}) -- --// okay, for same reason as O6 --class C6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- --class C11(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.byname(x) -- }) -- } --} -- --// Crashes earlier in lazyVals. --// class C12(a: Any) { --// def this() = { --// this({ --// lazy val x = "".toString --// F.byname(x) --// }) --// } --// } -- --class C13(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.hof(() => x) -- }) -- } --} -- --class C14(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- }) -- } --} -- --class COuter extends C({ -- def foo = 0 -- class CInner extends C({foo}) --}) -- -- --class CEarly(a: Any) extends { -- val early = {def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- } --} with AnyRef -\ No newline at end of file -diff --git a/test/files/neg/t800.check b/test/files/neg/t800.check -index 8ba95fddde..37a0c6f324 100644 ---- a/test/files/neg/t800.check -+++ b/test/files/neg/t800.check -@@ -5,8 +5,7 @@ t800.scala:8: error: method qualification is defined twice - conflicting symbols both originated in file 't800.scala' - val qualification = false; - ^ --t800.scala:12: error: value qualification is defined twice -- conflicting symbols both originated in file 't800.scala' -+t800.scala:12: error: qualification is already defined as value qualification - var qualification = false; - ^ - t800.scala:16: error: method qualification is defined twice -diff --git a/test/files/pos/t7426.scala b/test/files/pos/t7426.scala -deleted file mode 100644 -index 8e42ad1812..0000000000 ---- a/test/files/pos/t7426.scala -+++ /dev/null -@@ -1,3 +0,0 @@ --class foo(x: Any) extends annotation.StaticAnnotation -- --@foo(new AnyRef { }) trait A -diff --git a/test/files/run/t6259.scala b/test/files/run/t6259.scala -deleted file mode 100644 -index b2c27df51f..0000000000 ---- a/test/files/run/t6259.scala -+++ /dev/null -@@ -1,56 +0,0 @@ --import scala.reflect.runtime.universe._ -- --class A[X](implicit val tt: TypeTag[X]) {} --object B extends A[String] -- --object C { -- object D extends A[String] --} -- --trait E { -- object F extends A[String] --} -- --class G { -- object H extends A[String] --} -- --object HasX { -- val x = { -- object InVal extends A[String] -- InVal -- 5 -- } -- --} -- --trait NeedsEarly { -- val x: AnyRef --} -- --object Early extends { -- // Drops to this.getClass and is not ok... -- val x = { object EarlyOk extends A[String]; EarlyOk } --} with NeedsEarly -- -- --class DoubleTrouble[X](x: AnyRef)(implicit override val tt: TypeTag[X]) extends A[X] -- --object DoubleOk extends DoubleTrouble[String]({ -- // Drops to this.getClass and is an issue -- object InnerTrouble extends A[String]; -- InnerTrouble --}) -- --object Test extends App { -- B -- C.D -- val e = new E {}; e.F -- val g = new G; g.H -- -- locally(HasX.x) -- // locally(Early.x) TODO sort out VerifyError in Early$. -- // DoubleOk TODO sort out VerifyError in DoubleOk$. --} -- -- -diff --git a/test/files/scalap/typeAnnotations.check b/test/files/scalap/typeAnnotations.check -index cba69f8e41..d72817a725 100644 ---- a/test/files/scalap/typeAnnotations.check -+++ b/test/files/scalap/typeAnnotations.check -@@ -1,8 +1,8 @@ - abstract class TypeAnnotations[@scala.specialized R] extends scala.AnyRef { - def this() = { /* compiled code */ } - @scala.specialized -- val x: scala.Int = { /* compiled code */ } - @scala.specialized - type T - def compose[@scala.specialized A](x: A, y: R): A = { /* compiled code */ } -+ val x: scala.Int = { /* compiled code */ } - } --- -1.8.5.2 - diff --git a/job/macro-paradise-2110-RC3/run b/job/macro-paradise-2110-RC3/run deleted file mode 100755 index 068cf98..0000000 --- a/job/macro-paradise-2110-RC3/run +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -ex - -# STEP 1: INITIALIZE -script_dir="$( cd "$( dirname "$0" )" && pwd )" -scriptsDir="$( cd "$( dirname "$0" )/../.." && pwd )" -. $scriptsDir/common -runSbt () { - sbt -Dmaven.settings.file="$maven_settings_file" -no-colors -no-share -sbt-launch-dir "$script_dir/project/launcher" "$@" -} -git clean -dfx -if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.11.0-RC3 paradise -if [[ -d scala ]]; then rm -rf scala; fi -git clone git@github.com:scala/scala.git -b master scala - -# STEP 2: RUN THE TESTS -cd "$script_dir/paradise" -runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.11.0-RC3/paradise_*.jar ) -[[ ! -f "$plugin" ]] && exit 1 - -# STEP 3: SELECT SCALAC BRANCH AND APPLY OUR PATCHES -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -cd "$script_dir/scala" -git checkout v2.11.0-RC3 -git apply "$script_dir/test_fixup.patch" - -# STEP 4: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN -cd "$script_dir/scala" -./pull-binary-libs.sh -ant locker.done # we might be binary incompatible with starr, so no plugin when building locker -# TODO: don't know what's going on, but with the plugin enabled Universe.reify stops being recognized as a macro -# well, I actually I have a suspicion that hijacking fastTrack might lead to Universe.reify not being marked as MACRO -# but I've disabled the hijack when compiling scala-reflect.jar, and the problem still persists -# ant "-Dscalac.args=\"-Xplugin:$plugin\"" build-opt test.bc -ant build partest.task -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -ant "-Dscalac.args.optimise=\"-Xplugin:$plugin\"" test.suite - -# STEP 4: PUBLISH TO SONATYPE -cd "$script_dir/paradise" -runSbt "project paradise" publish diff --git a/job/macro-paradise-2110-RC3/test_fixup.patch b/job/macro-paradise-2110-RC3/test_fixup.patch deleted file mode 100644 index e760d55..0000000 --- a/job/macro-paradise-2110-RC3/test_fixup.patch +++ /dev/null @@ -1,254 +0,0 @@ -From fd17dfeaec6f665715c2db21736c62d188ded540 Mon Sep 17 00:00:00 2001 -From: Eugene Burmako -Date: Sat, 11 Jan 2014 00:05:25 +0100 -Subject: [PATCH] tests that currently fail for macro paradise - ---- - test/files/neg/t6446-list.check | 1 + - test/files/neg/t6666.scala | 121 -------------------------------- - test/files/neg/t800.check | 3 +- - test/files/pos/t7426.scala | 3 - - test/files/run/t6259.scala | 56 --------------- - test/files/scalap/typeAnnotations.check | 2 +- - 6 files changed, 3 insertions(+), 183 deletions(-) - delete mode 100644 test/files/neg/t6666.scala - delete mode 100644 test/files/pos/t7426.scala - delete mode 100644 test/files/run/t6259.scala - -diff --git a/test/files/neg/t6446-list.check b/test/files/neg/t6446-list.check -index fa5c581941..3b08e6480a 100755 ---- a/test/files/neg/t6446-list.check -+++ b/test/files/neg/t6446-list.check -@@ -1 +1,2 @@ -+macroparadise - Empowers production Scala compiler with latest macro developments - ploogin - A sample plugin for testing. -diff --git a/test/files/neg/t6666.scala b/test/files/neg/t6666.scala -deleted file mode 100644 -index 58c5be5405..0000000000 ---- a/test/files/neg/t6666.scala -+++ /dev/null -@@ -1,121 +0,0 @@ --class C(a: Any) --object F { -- def byname(a: => Any) = println(a) -- def hof(a: () => Any) = println(a()) --} -- --class COkay extends C(0) { -- def this(a: Any) { -- this() -- def x = "".toString -- F.byname(x) -- } --} -- --// --// The thunk's apply method accesses the MODULE$ --// field before it is set. --// --// 0: getstatic #23; //Field O1$.MODULE$:LO1$; --// 3: invokevirtual #26; //Method O1$.O1$$x$1:()Ljava/lang/String; --object O1 extends C({ -- def x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O2$$anonfun$$init$$1.apply(:11) --object O2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O3$$anonfun$$init$$1.apply(:11) --object O3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) -- --// Okay, the nested classes don't get an outer pointer passed, --// just an extra param for `x: String`. --object O6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- -- --class C1 extends C({ -- def x = "".toString -- F.byname(x) --}) --class C2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) --class C3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) --class C4 extends C({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx --}) -- --// okay, for same reason as O6 --class C6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- --class C11(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.byname(x) -- }) -- } --} -- --// Crashes earlier in lazyVals. --// class C12(a: Any) { --// def this() = { --// this({ --// lazy val x = "".toString --// F.byname(x) --// }) --// } --// } -- --class C13(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.hof(() => x) -- }) -- } --} -- --class C14(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- }) -- } --} -- --class COuter extends C({ -- def foo = 0 -- class CInner extends C({foo}) --}) -- -- --class CEarly(a: Any) extends { -- val early = {def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- } --} with AnyRef -\ No newline at end of file -diff --git a/test/files/neg/t800.check b/test/files/neg/t800.check -index 8ba95fddde..37a0c6f324 100644 ---- a/test/files/neg/t800.check -+++ b/test/files/neg/t800.check -@@ -5,8 +5,7 @@ t800.scala:8: error: method qualification is defined twice - conflicting symbols both originated in file 't800.scala' - val qualification = false; - ^ --t800.scala:12: error: value qualification is defined twice -- conflicting symbols both originated in file 't800.scala' -+t800.scala:12: error: qualification is already defined as value qualification - var qualification = false; - ^ - t800.scala:16: error: method qualification is defined twice -diff --git a/test/files/pos/t7426.scala b/test/files/pos/t7426.scala -deleted file mode 100644 -index 8e42ad1812..0000000000 ---- a/test/files/pos/t7426.scala -+++ /dev/null -@@ -1,3 +0,0 @@ --class foo(x: Any) extends annotation.StaticAnnotation -- --@foo(new AnyRef { }) trait A -diff --git a/test/files/run/t6259.scala b/test/files/run/t6259.scala -deleted file mode 100644 -index b2c27df51f..0000000000 ---- a/test/files/run/t6259.scala -+++ /dev/null -@@ -1,56 +0,0 @@ --import scala.reflect.runtime.universe._ -- --class A[X](implicit val tt: TypeTag[X]) {} --object B extends A[String] -- --object C { -- object D extends A[String] --} -- --trait E { -- object F extends A[String] --} -- --class G { -- object H extends A[String] --} -- --object HasX { -- val x = { -- object InVal extends A[String] -- InVal -- 5 -- } -- --} -- --trait NeedsEarly { -- val x: AnyRef --} -- --object Early extends { -- // Drops to this.getClass and is not ok... -- val x = { object EarlyOk extends A[String]; EarlyOk } --} with NeedsEarly -- -- --class DoubleTrouble[X](x: AnyRef)(implicit override val tt: TypeTag[X]) extends A[X] -- --object DoubleOk extends DoubleTrouble[String]({ -- // Drops to this.getClass and is an issue -- object InnerTrouble extends A[String]; -- InnerTrouble --}) -- --object Test extends App { -- B -- C.D -- val e = new E {}; e.F -- val g = new G; g.H -- -- locally(HasX.x) -- // locally(Early.x) TODO sort out VerifyError in Early$. -- // DoubleOk TODO sort out VerifyError in DoubleOk$. --} -- -- -diff --git a/test/files/scalap/typeAnnotations.check b/test/files/scalap/typeAnnotations.check -index cba69f8e41..d72817a725 100644 ---- a/test/files/scalap/typeAnnotations.check -+++ b/test/files/scalap/typeAnnotations.check -@@ -1,8 +1,8 @@ - abstract class TypeAnnotations[@scala.specialized R] extends scala.AnyRef { - def this() = { /* compiled code */ } - @scala.specialized -- val x: scala.Int = { /* compiled code */ } - @scala.specialized - type T - def compose[@scala.specialized A](x: A, y: R): A = { /* compiled code */ } -+ val x: scala.Int = { /* compiled code */ } - } --- -1.8.5.2 - diff --git a/job/macro-paradise-2110-RC4/run b/job/macro-paradise-2110-RC4/run deleted file mode 100755 index ce408c3..0000000 --- a/job/macro-paradise-2110-RC4/run +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -ex - -# STEP 1: INITIALIZE -script_dir="$( cd "$( dirname "$0" )" && pwd )" -scriptsDir="$( cd "$( dirname "$0" )/../.." && pwd )" -. $scriptsDir/common -runSbt () { - sbt -Dmaven.settings.file="$maven_settings_file" -no-colors -no-share -sbt-launch-dir "$script_dir/project/launcher" "$@" -} -git clean -dfx -if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.11.0-RC4 paradise -if [[ -d scala ]]; then rm -rf scala; fi -git clone git@github.com:scala/scala.git -b master scala - -# STEP 2: RUN THE TESTS -cd "$script_dir/paradise" -runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.11.0-RC4/paradise_*.jar ) -[[ ! -f "$plugin" ]] && exit 1 - -# STEP 3: SELECT SCALAC BRANCH AND APPLY OUR PATCHES -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -cd "$script_dir/scala" -git checkout v2.11.0-RC4 -git apply "$script_dir/test_fixup.patch" - -# STEP 4: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN -cd "$script_dir/scala" -./pull-binary-libs.sh -ant locker.done # we might be binary incompatible with starr, so no plugin when building locker -# TODO: don't know what's going on, but with the plugin enabled Universe.reify stops being recognized as a macro -# well, I actually I have a suspicion that hijacking fastTrack might lead to Universe.reify not being marked as MACRO -# but I've disabled the hijack when compiling scala-reflect.jar, and the problem still persists -# ant "-Dscalac.args=\"-Xplugin:$plugin\"" build-opt test.bc -ant build partest.task -# TODO: make all the tests pass -# current failures are quite minor, but it's still annoying -ant "-Dscalac.args.optimise=\"-Xplugin:$plugin\"" test.suite - -# STEP 4: PUBLISH TO SONATYPE -cd "$script_dir/paradise" -runSbt "project paradise" publish diff --git a/job/macro-paradise-2110-RC4/test_fixup.patch b/job/macro-paradise-2110-RC4/test_fixup.patch deleted file mode 100644 index e760d55..0000000 --- a/job/macro-paradise-2110-RC4/test_fixup.patch +++ /dev/null @@ -1,254 +0,0 @@ -From fd17dfeaec6f665715c2db21736c62d188ded540 Mon Sep 17 00:00:00 2001 -From: Eugene Burmako -Date: Sat, 11 Jan 2014 00:05:25 +0100 -Subject: [PATCH] tests that currently fail for macro paradise - ---- - test/files/neg/t6446-list.check | 1 + - test/files/neg/t6666.scala | 121 -------------------------------- - test/files/neg/t800.check | 3 +- - test/files/pos/t7426.scala | 3 - - test/files/run/t6259.scala | 56 --------------- - test/files/scalap/typeAnnotations.check | 2 +- - 6 files changed, 3 insertions(+), 183 deletions(-) - delete mode 100644 test/files/neg/t6666.scala - delete mode 100644 test/files/pos/t7426.scala - delete mode 100644 test/files/run/t6259.scala - -diff --git a/test/files/neg/t6446-list.check b/test/files/neg/t6446-list.check -index fa5c581941..3b08e6480a 100755 ---- a/test/files/neg/t6446-list.check -+++ b/test/files/neg/t6446-list.check -@@ -1 +1,2 @@ -+macroparadise - Empowers production Scala compiler with latest macro developments - ploogin - A sample plugin for testing. -diff --git a/test/files/neg/t6666.scala b/test/files/neg/t6666.scala -deleted file mode 100644 -index 58c5be5405..0000000000 ---- a/test/files/neg/t6666.scala -+++ /dev/null -@@ -1,121 +0,0 @@ --class C(a: Any) --object F { -- def byname(a: => Any) = println(a) -- def hof(a: () => Any) = println(a()) --} -- --class COkay extends C(0) { -- def this(a: Any) { -- this() -- def x = "".toString -- F.byname(x) -- } --} -- --// --// The thunk's apply method accesses the MODULE$ --// field before it is set. --// --// 0: getstatic #23; //Field O1$.MODULE$:LO1$; --// 3: invokevirtual #26; //Method O1$.O1$$x$1:()Ljava/lang/String; --object O1 extends C({ -- def x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O2$$anonfun$$init$$1.apply(:11) --object O2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) -- --// java.lang.NullPointerException --// at O3$$anonfun$$init$$1.apply(:11) --object O3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) -- --// Okay, the nested classes don't get an outer pointer passed, --// just an extra param for `x: String`. --object O6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- -- --class C1 extends C({ -- def x = "".toString -- F.byname(x) --}) --class C2 extends C({ -- lazy val x = "".toString -- F.byname(x) --}) --class C3 extends C({ -- def x = "".toString -- F.hof(() => x) --}) --class C4 extends C({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx --}) -- --// okay, for same reason as O6 --class C6 extends C({ -- val x = "".toString -- F.byname(x); F.hof(() => x); (new { val xx = x }.xx) --}) -- --class C11(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.byname(x) -- }) -- } --} -- --// Crashes earlier in lazyVals. --// class C12(a: Any) { --// def this() = { --// this({ --// lazy val x = "".toString --// F.byname(x) --// }) --// } --// } -- --class C13(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- F.hof(() => x) -- }) -- } --} -- --class C14(a: Any) { -- def this() = { -- this({ -- def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- }) -- } --} -- --class COuter extends C({ -- def foo = 0 -- class CInner extends C({foo}) --}) -- -- --class CEarly(a: Any) extends { -- val early = {def x = "".toString -- object Nested { def xx = x} -- Nested.xx -- } --} with AnyRef -\ No newline at end of file -diff --git a/test/files/neg/t800.check b/test/files/neg/t800.check -index 8ba95fddde..37a0c6f324 100644 ---- a/test/files/neg/t800.check -+++ b/test/files/neg/t800.check -@@ -5,8 +5,7 @@ t800.scala:8: error: method qualification is defined twice - conflicting symbols both originated in file 't800.scala' - val qualification = false; - ^ --t800.scala:12: error: value qualification is defined twice -- conflicting symbols both originated in file 't800.scala' -+t800.scala:12: error: qualification is already defined as value qualification - var qualification = false; - ^ - t800.scala:16: error: method qualification is defined twice -diff --git a/test/files/pos/t7426.scala b/test/files/pos/t7426.scala -deleted file mode 100644 -index 8e42ad1812..0000000000 ---- a/test/files/pos/t7426.scala -+++ /dev/null -@@ -1,3 +0,0 @@ --class foo(x: Any) extends annotation.StaticAnnotation -- --@foo(new AnyRef { }) trait A -diff --git a/test/files/run/t6259.scala b/test/files/run/t6259.scala -deleted file mode 100644 -index b2c27df51f..0000000000 ---- a/test/files/run/t6259.scala -+++ /dev/null -@@ -1,56 +0,0 @@ --import scala.reflect.runtime.universe._ -- --class A[X](implicit val tt: TypeTag[X]) {} --object B extends A[String] -- --object C { -- object D extends A[String] --} -- --trait E { -- object F extends A[String] --} -- --class G { -- object H extends A[String] --} -- --object HasX { -- val x = { -- object InVal extends A[String] -- InVal -- 5 -- } -- --} -- --trait NeedsEarly { -- val x: AnyRef --} -- --object Early extends { -- // Drops to this.getClass and is not ok... -- val x = { object EarlyOk extends A[String]; EarlyOk } --} with NeedsEarly -- -- --class DoubleTrouble[X](x: AnyRef)(implicit override val tt: TypeTag[X]) extends A[X] -- --object DoubleOk extends DoubleTrouble[String]({ -- // Drops to this.getClass and is an issue -- object InnerTrouble extends A[String]; -- InnerTrouble --}) -- --object Test extends App { -- B -- C.D -- val e = new E {}; e.F -- val g = new G; g.H -- -- locally(HasX.x) -- // locally(Early.x) TODO sort out VerifyError in Early$. -- // DoubleOk TODO sort out VerifyError in DoubleOk$. --} -- -- -diff --git a/test/files/scalap/typeAnnotations.check b/test/files/scalap/typeAnnotations.check -index cba69f8e41..d72817a725 100644 ---- a/test/files/scalap/typeAnnotations.check -+++ b/test/files/scalap/typeAnnotations.check -@@ -1,8 +1,8 @@ - abstract class TypeAnnotations[@scala.specialized R] extends scala.AnyRef { - def this() = { /* compiled code */ } - @scala.specialized -- val x: scala.Int = { /* compiled code */ } - @scala.specialized - type T - def compose[@scala.specialized A](x: A, y: R): A = { /* compiled code */ } -+ val x: scala.Int = { /* compiled code */ } - } --- -1.8.5.2 - diff --git a/job/macro-paradise-2110-M8/run b/job/macro-paradise-2110/run similarity index 91% rename from job/macro-paradise-2110-M8/run rename to job/macro-paradise-2110/run index 5211c9a..6c6b010 100755 --- a/job/macro-paradise-2110-M8/run +++ b/job/macro-paradise-2110/run @@ -9,21 +9,21 @@ runSbt () { } git clean -dfx if [[ -d paradise ]]; then rm -rf paradise; fi -git clone git@github.com:scalamacros/paradise.git -b 2.11.0-M8 paradise +git clone git@github.com:scalamacros/paradise.git -b 2.11.0 paradise if [[ -d scala ]]; then rm -rf scala; fi git clone git@github.com:scala/scala.git -b master scala # STEP 2: RUN THE TESTS cd "$script_dir/paradise" runSbt "project tests" test -plugin=( $(pwd)/plugin/target/scala-2.11.0-M8/paradise_*.jar ) +plugin=( $(pwd)/plugin/target/scala-2.11.0/paradise_*.jar ) [[ ! -f "$plugin" ]] && exit 1 # STEP 3: SELECT SCALAC BRANCH AND APPLY OUR PATCHES # TODO: make all the tests pass # current failures are quite minor, but it's still annoying cd "$script_dir/scala" -git checkout v2.11.0-M8 +git checkout v2.11.0 git apply "$script_dir/test_fixup.patch" # STEP 4: BOOTSTRAP SCALAC USING THE PARADISE PLUGIN diff --git a/job/macro-paradise-2110-M8/test_fixup.patch b/job/macro-paradise-2110/test_fixup.patch similarity index 100% rename from job/macro-paradise-2110-M8/test_fixup.patch rename to job/macro-paradise-2110/test_fixup.patch