summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Prokopec <aleksandar.prokopec@gmail.com>2011-12-07 14:53:37 +0100
committerAleksandar Prokopec <aleksandar.prokopec@gmail.com>2011-12-07 14:53:37 +0100
commit014a13d2be634bb3ab3468d0c071a9a870a9a9b0 (patch)
tree491ad18ca796a70b34be1d4732b80c371bfd650d
parenta36175feb5bfce59909fa4f3d9d5df6753b6ee3a (diff)
parent332fec96e31840878bed41dd7b5314b97d8da7c2 (diff)
downloadscala-014a13d2be634bb3ab3468d0c071a9a870a9a9b0.tar.gz
scala-014a13d2be634bb3ab3468d0c071a9a870a9a9b0.tar.bz2
scala-014a13d2be634bb3ab3468d0c071a9a870a9a9b0.zip
Merge branch 'master' of https://github.com/scala/scala into execution-context
-rw-r--r--docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala2
-rw-r--r--project/build/ScalaSBTBuilder.scala2
-rw-r--r--src/compiler/scala/reflect/internal/pickling/UnPickler.scala2
-rw-r--r--src/compiler/scala/tools/ant/templates/tool-unix.tmpl22
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala2
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala2
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala20
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala23
-rw-r--r--src/compiler/scala/tools/nsc/doc/html/page/Template.scala7
-rw-r--r--src/compiler/scala/tools/nsc/doc/model/Entity.scala2
-rw-r--r--src/compiler/scala/tools/nsc/interactive/CompilerControl.scala2
-rw-r--r--src/compiler/scala/tools/nsc/io/Lexer.scala2
-rw-r--r--src/compiler/scala/tools/nsc/settings/ScalaSettings.scala1
-rw-r--r--src/compiler/scala/tools/nsc/transform/LiftCode.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala2
-rw-r--r--src/library/scala/Array.scala4
-rw-r--r--src/library/scala/Option.scala5
-rw-r--r--src/library/scala/collection/SeqLike.scala2
-rw-r--r--src/library/scala/collection/immutable/BitSet.scala3
-rw-r--r--src/library/scala/collection/immutable/HashMap.scala2
-rw-r--r--src/library/scala/collection/immutable/List.scala5
-rw-r--r--src/library/scala/collection/immutable/ListMap.scala3
-rw-r--r--src/library/scala/collection/immutable/Queue.scala3
-rw-r--r--src/library/scala/collection/immutable/Range.scala3
-rw-r--r--src/library/scala/collection/immutable/Stack.scala3
-rw-r--r--src/library/scala/collection/immutable/Stream.scala3
-rw-r--r--src/library/scala/collection/immutable/TreeMap.scala3
-rw-r--r--src/library/scala/collection/immutable/TreeSet.scala3
-rw-r--r--src/library/scala/collection/immutable/Vector.scala3
-rw-r--r--src/library/scala/collection/mutable/ArrayBuffer.scala3
-rw-r--r--src/library/scala/collection/mutable/ArraySeq.scala2
-rw-r--r--src/library/scala/collection/mutable/ArrayStack.scala2
-rw-r--r--src/library/scala/collection/mutable/BitSet.scala3
-rw-r--r--src/library/scala/collection/mutable/ConcurrentMap.scala2
-rw-r--r--src/library/scala/collection/mutable/DoubleLinkedList.scala3
-rw-r--r--src/library/scala/collection/mutable/HashMap.scala2
-rw-r--r--src/library/scala/collection/mutable/HashSet.scala2
-rw-r--r--src/library/scala/collection/mutable/LinearSeq.scala2
-rw-r--r--src/library/scala/collection/mutable/LinkedList.scala2
-rw-r--r--src/library/scala/collection/mutable/ListBuffer.scala2
-rw-r--r--src/library/scala/collection/mutable/MutableList.scala2
-rw-r--r--src/library/scala/collection/mutable/Queue.scala2
-rw-r--r--src/library/scala/collection/mutable/Stack.scala2
-rw-r--r--src/library/scala/collection/mutable/StringBuilder.scala2
-rw-r--r--src/library/scala/collection/mutable/WeakHashMap.scala3
-rw-r--r--src/library/scala/sys/process/ProcessBuilder.scala2
-rw-r--r--src/library/scala/util/parsing/combinator/RegexParsers.scala2
-rw-r--r--src/library/scala/util/parsing/json/JSON.scala2
-rw-r--r--src/msil/ch/epfl/lamp/compiler/msil/emit/OpCode.scala4
-rw-r--r--src/msil/ch/epfl/lamp/compiler/msil/emit/OpCodes.scala4
-rw-r--r--test/disabled/presentation/akka.check (renamed from test/files/presentation/akka.check)0
-rw-r--r--test/disabled/presentation/akka.flags (renamed from test/files/presentation/akka.flags)0
-rw-r--r--test/disabled/presentation/akka/Runner.scala (renamed from test/files/presentation/akka/Runner.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/AkkaException.scala (renamed from test/files/presentation/akka/src/akka/AkkaException.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Actor.scala (renamed from test/files/presentation/akka/src/akka/actor/Actor.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/ActorRef.scala (renamed from test/files/presentation/akka/src/akka/actor/ActorRef.scala)2
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala (renamed from test/files/presentation/akka/src/akka/actor/ActorRegistry.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Actors.java (renamed from test/files/presentation/akka/src/akka/actor/Actors.java)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala (renamed from test/files/presentation/akka/src/akka/actor/BootableActorLoaderService.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/FSM.scala (renamed from test/files/presentation/akka/src/akka/actor/FSM.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Scheduler.scala (renamed from test/files/presentation/akka/src/akka/actor/Scheduler.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/Supervisor.scala (renamed from test/files/presentation/akka/src/akka/actor/Supervisor.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala (renamed from test/files/presentation/akka/src/akka/actor/UntypedActor.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/actor/package.scala (renamed from test/files/presentation/akka/src/akka/actor/package.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Config.scala (renamed from test/files/presentation/akka/src/akka/config/Config.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/ConfigParser.scala (renamed from test/files/presentation/akka/src/akka/config/ConfigParser.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Configuration.scala (renamed from test/files/presentation/akka/src/akka/config/Configuration.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Configurator.scala (renamed from test/files/presentation/akka/src/akka/config/Configurator.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/Importer.scala (renamed from test/files/presentation/akka/src/akka/config/Importer.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala (renamed from test/files/presentation/akka/src/akka/config/SupervisionConfig.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala (renamed from test/files/presentation/akka/src/akka/dataflow/DataFlow.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala (renamed from test/files/presentation/akka/src/akka/dispatch/Dispatchers.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala (renamed from test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala (renamed from test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/Future.scala (renamed from test/files/presentation/akka/src/akka/dispatch/Future.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala (renamed from test/files/presentation/akka/src/akka/dispatch/MailboxHandling.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala (renamed from test/files/presentation/akka/src/akka/dispatch/MessageHandling.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala (renamed from test/files/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala (renamed from test/files/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/event/EventHandler.scala (renamed from test/files/presentation/akka/src/akka/event/EventHandler.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java (renamed from test/files/presentation/akka/src/akka/event/JavaEventHandler.java)0
-rw-r--r--test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala (renamed from test/files/presentation/akka/src/akka/japi/JavaAPI.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala (renamed from test/files/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala (renamed from test/files/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Iterators.scala (renamed from test/files/presentation/akka/src/akka/routing/Iterators.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Listeners.scala (renamed from test/files/presentation/akka/src/akka/routing/Listeners.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Pool.scala (renamed from test/files/presentation/akka/src/akka/routing/Pool.scala)2
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Routers.scala (renamed from test/files/presentation/akka/src/akka/routing/Routers.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/routing/Routing.scala (renamed from test/files/presentation/akka/src/akka/routing/Routing.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Address.scala (renamed from test/files/presentation/akka/src/akka/util/Address.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala (renamed from test/files/presentation/akka/src/akka/util/AkkaLoader.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Bootable.scala (renamed from test/files/presentation/akka/src/akka/util/Bootable.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala (renamed from test/files/presentation/akka/src/akka/util/BoundedBlockingQueue.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Crypt.scala (renamed from test/files/presentation/akka/src/akka/util/Crypt.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Duration.scala (renamed from test/files/presentation/akka/src/akka/util/Duration.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/HashCode.scala (renamed from test/files/presentation/akka/src/akka/util/HashCode.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/Helpers.scala (renamed from test/files/presentation/akka/src/akka/util/Helpers.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala (renamed from test/files/presentation/akka/src/akka/util/ListenerManagement.scala)4
-rw-r--r--test/disabled/presentation/akka/src/akka/util/LockUtil.scala (renamed from test/files/presentation/akka/src/akka/util/LockUtil.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala (renamed from test/files/presentation/akka/src/akka/util/ReflectiveAccess.scala)0
-rw-r--r--test/disabled/presentation/akka/src/akka/util/package.scala (renamed from test/files/presentation/akka/src/akka/util/package.scala)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java (renamed from test/files/presentation/akka/src/com/eaio/util/lang/Hex.java)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java (renamed from test/files/presentation/akka/src/com/eaio/uuid/MACAddressParser.java)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java (renamed from test/files/presentation/akka/src/com/eaio/uuid/UUID.java)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java (renamed from test/files/presentation/akka/src/com/eaio/uuid/UUIDGen.java)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java (renamed from test/files/presentation/akka/src/com/eaio/uuid/UUIDHelper.java)0
-rw-r--r--test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java (renamed from test/files/presentation/akka/src/com/eaio/uuid/UUIDHolder.java)0
-rw-r--r--test/disabled/presentation/akka/src/pi.scala (renamed from test/files/presentation/akka/src/pi.scala)0
-rw-r--r--test/disabled/presentation/timeofday.check (renamed from test/files/presentation/timeofday.check)0
-rw-r--r--test/disabled/presentation/timeofday/Runner.scala (renamed from test/files/presentation/timeofday/Runner.scala)0
-rw-r--r--test/disabled/presentation/timeofday/src/timeofday.scala (renamed from test/files/presentation/timeofday/src/timeofday.scala)0
-rw-r--r--test/files/run/adding-growing-set.scala2
-rw-r--r--test/files/run/json.scala2
-rw-r--r--test/files/run/reify_for1.check0
-rw-r--r--test/files/run/reify_for1.scala16
-rw-r--r--test/files/run/reify_varargs.check1
-rw-r--r--test/files/run/reify_varargs.scala17
-rw-r--r--test/pending/run/reify_addressbook.check30
-rw-r--r--test/pending/run/reify_addressbook.scala71
-rw-r--r--test/pending/run/reify_brainf_ck.check4
-rw-r--r--test/pending/run/reify_brainf_ck.scala85
-rw-r--r--test/pending/run/reify_callccinterpreter.check3
-rw-r--r--test/pending/run/reify_callccinterpreter.scala94
-rw-r--r--test/pending/run/reify_complex.check1
-rw-r--r--test/pending/run/reify_complex.scala31
-rw-r--r--test/pending/run/reify_extendbuiltins.check1
-rw-r--r--test/pending/run/reify_extendbuiltins.scala21
-rw-r--r--test/pending/run/reify_fors.check5
-rw-r--r--test/pending/run/reify_fors.scala107
-rw-r--r--test/pending/run/reify_gadts.check1
-rw-r--r--test/pending/run/reify_gadts.scala45
-rw-r--r--test/pending/run/reify_implicits.check1
-rw-r--r--test/pending/run/reify_implicits.scala21
-rw-r--r--test/pending/run/reify_lazyevaluation.check8
-rw-r--r--test/pending/run/reify_lazyevaluation.scala65
-rw-r--r--test/pending/run/reify_maps.check4
-rw-r--r--test/pending/run/reify_maps.scala26
-rw-r--r--test/pending/run/reify_properties.check2
-rw-r--r--test/pending/run/reify_properties.scala63
-rw-r--r--test/pending/run/reify_simpleinterpreter.check2
-rw-r--r--test/pending/run/reify_simpleinterpreter.scala82
-rw-r--r--test/pending/run/reify_sort.check2
-rw-r--r--test/pending/run/reify_sort.scala57
-rw-r--r--test/pending/run/reify_sort1.check2
-rw-r--r--test/pending/run/reify_sort1.scala27
-rw-r--r--test/pending/run/reify_timeofday.check1
-rw-r--r--test/pending/run/reify_timeofday.scala48
-rw-r--r--test/pending/run/t5229_1_nolift.scala1
-rw-r--r--test/pending/run/t5271_1.check0
-rw-r--r--test/pending/run/t5271_1.scala14
-rw-r--r--test/pending/run/t5271_2.check1
-rw-r--r--test/pending/run/t5271_2.scala16
-rw-r--r--test/pending/run/t5272.check1
-rw-r--r--test/pending/run/t5272.scala17
-rw-r--r--test/pending/run/t5273_1.check1
-rw-r--r--test/pending/run/t5273_1.scala16
-rw-r--r--test/pending/run/t5273_2.check1
-rw-r--r--test/pending/run/t5273_2.scala17
-rw-r--r--test/pending/run/t5274_1.check3
-rw-r--r--test/pending/run/t5274_1.scala20
-rw-r--r--test/pending/run/t5274_2.check2
-rw-r--r--test/pending/run/t5274_2.scala57
-rw-r--r--test/pending/run/t5275.check1
-rw-r--r--test/pending/run/t5275.scala15
-rw-r--r--test/pending/run/t5276.check1
-rw-r--r--test/pending/run/t5276.scala15
-rw-r--r--test/pending/run/t5277_1.check1
-rw-r--r--test/pending/run/t5277_1.scala21
-rw-r--r--test/pending/run/t5277_2.check2
-rw-r--r--test/pending/run/t5277_2.scala18
-rw-r--r--test/pending/run/t5279.check1
-rw-r--r--test/pending/run/t5279.scala14
-rw-r--r--test/scaladoc/scala/html/HtmlFactoryTest.scala14
-rwxr-xr-xtools/get-scala-revision11
-rw-r--r--tools/get-scala-revision.bat3
176 files changed, 1375 insertions, 55 deletions
diff --git a/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala b/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala
index 19d2613649..0bfcbf53c7 100644
--- a/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala
+++ b/docs/examples/plugintemplate/src/plugintemplate/standalone/Main.scala
@@ -16,7 +16,7 @@ object Main {
val settings = new Settings
val command = new CompilerCommand(args.toList, settings) {
- /** The command name that will be printed in in the usage message.
+ /** The command name that will be printed in the usage message.
* This is automatically set to the value of 'plugin.commandname' in the
* file build.properties.
*/
diff --git a/project/build/ScalaSBTBuilder.scala b/project/build/ScalaSBTBuilder.scala
index 81c7860020..881e8c8452 100644
--- a/project/build/ScalaSBTBuilder.scala
+++ b/project/build/ScalaSBTBuilder.scala
@@ -351,7 +351,7 @@ object ScalaSBTBuilder {
val stabilityTestTaskDescription = "run stability testing. It is required to use a clean build (for example, execute the clean-all action) in order to ensure correctness of the result."
val paloTaskDescription = "create palo"
val pastaTaskDescription = "create all the jar needed to make a new starr from quick (pasta = packed starr). It does not replace the current library and compiler jars in the libs folder, but the products of the task are instead located in target/pasta"
- val newStarrTaskDescription = "create a new starr and replace the library and compiler jars in the libs folder. It will keep locker locker locked, meaning that if you want to update locker after updating starr, you must run the 'new-locker' command. It will not automatically run partest and stability testing before replacing."
+ val newStarrTaskDescription = "create a new starr and replace the library and compiler jars in the libs folder. It will keep locker locked, meaning that if you want to update locker after updating starr, you must run the 'new-locker' command. It will not automatically run partest and stability testing before replacing."
val newLockerTaskDescription = "replace locker. It will build a new locker. It does not automatically rebuild quick."
val buildForkjoinTaskDescription = "create all the jar needed to make a new forkjoin. It does not replace the current library and compiler jars in the libs folder, but the products of the task are instead located in target/libs."
val newForkjoinTaskDescription = "create a new forkjoin and replace the corresponding jar in the libs folder."
diff --git a/src/compiler/scala/reflect/internal/pickling/UnPickler.scala b/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
index 00dc04de80..9aa3d8a2c3 100644
--- a/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
@@ -509,7 +509,7 @@ abstract class UnPickler /*extends reflect.generic.UnPickler*/ {
val tpe = if (tag == EMPTYtree) NoType else readTypeRef()
// Set by the three functions to follow. If symbol is non-null
- // after the the new tree 't' has been created, t has its Symbol
+ // after the new tree 't' has been created, t has its Symbol
// set to symbol; and it always has its Type set to tpe.
var symbol: Symbol = null
var mods: Modifiers = null
diff --git a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
index 4275ef7ba1..7e51930fa4 100644
--- a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
+++ b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
@@ -58,12 +58,17 @@ if uname | grep -q ^CYGWIN; then
cygwin="$(uname)"
fi
+unset mingw
+if uname | grep -q ^MINGW; then
+ mingw="$(uname)"
+fi
+
# Finding the root folder for this Scala distribution
SCALA_HOME="$(findScalaHome)"
SEP=":"
# Possible additional command line options
-CYGWIN_OPT=""
+WINDOWS_OPT=""
EMACS_OPT=""
[[ -n "$EMACS" ]] && EMACS_OPT="-Denv.emacs=$EMACS"
@@ -94,10 +99,16 @@ if [[ -n "$cygwin" ]]; then
fi
SCALA_HOME="$(cygpath --$format "$SCALA_HOME")"
TOOL_CLASSPATH="$(cygpath --path --$format "$TOOL_CLASSPATH")"
+elif [[ -n "$mingw" ]]; then
+ SCALA_HOME="$(cmd //c echo "$SCALA_HOME")"
+ TOOL_CLASSPATH="$(cmd //c echo "$TOOL_CLASSPATH")"
+fi
+
+if [[ -n "$cygwin$mingw" ]]; then
case "$TERM" in
rxvt* | xterm*)
stty -icanon min 1 -echo
- CYGWIN_OPT="-Djline.terminal=scala.tools.jline.UnixTerminal"
+ WINDOWS_OPT="-Djline.terminal=scala.tools.jline.UnixTerminal"
;;
esac
fi
@@ -110,9 +121,10 @@ fi
declare -a java_args
declare -a scala_args
-# default to the boot classpath for speed, except on cygwin/mingw.
+# default to the boot classpath for speed, except on cygwin/mingw because
+# JLine on Windows requires a custom DLL to be loaded.
unset usebootcp
-if [[ -z $cygwin ]]; then
+if [[ -z "$cygwin$mingw" ]]; then
usebootcp="true"
fi
@@ -181,7 +193,7 @@ execCommand \
-Dscala.home="$SCALA_HOME" \
-Dscala.usejavacp=true \
$EMACS_OPT \
- $CYGWIN_OPT \
+ $WINDOWS_OPT \
@properties@ @class@ @toolflags@ "$@@"
# record the exit status lest it be overwritten:
diff --git a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
index f65481e29a..13f608ed4e 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
@@ -310,7 +310,7 @@ abstract class TreeBuilder {
* for (P <- G) E ==> G.foreach (P => E)
*
* Here and in the following (P => E) is interpreted as the function (P => E)
- * if P is a a variable pattern and as the partial function { case P => E } otherwise.
+ * if P is a variable pattern and as the partial function { case P => E } otherwise.
*
* 2.
*
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala b/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala
index 8130c99978..1978a23d90 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala
@@ -284,7 +284,7 @@ trait Linearizers {
handler.startBlock +=: lb
}
- // The first block emitted after a try-catch must be the the one that the try / catch
+ // The first block emitted after a try-catch must be the one that the try / catch
// blocks jump to (because in msil, these jumps cannot be emitted manually)
var firstAfter: Option[BasicBlock] = None
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala b/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
index 70aa8ff54e..865bacffaa 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
@@ -7,7 +7,7 @@ package scala.tools.nsc
package backend.jvm
import ch.epfl.lamp.fjbg._
-import java.io.{ DataOutputStream, OutputStream, File => JFile }
+import java.io.{ DataOutputStream, FileOutputStream, OutputStream, File => JFile }
import scala.tools.nsc.io._
import scala.tools.nsc.util.ScalaClassLoader
import scala.tools.util.JavapClass
@@ -85,7 +85,7 @@ trait BytecodeWriters {
emitJavap(bytes, javapFile)
}
}
-
+
trait ClassBytecodeWriter extends BytecodeWriter {
def writeClass(label: String, jclass: JClass, sym: Symbol) {
val outfile = getFile(sym, jclass, ".class")
@@ -96,4 +96,20 @@ trait BytecodeWriters {
informProgress("wrote '" + label + "' to " + outfile)
}
}
+
+ trait DumpBytecodeWriter extends BytecodeWriter {
+ val baseDir = Directory(settings.Ydumpclasses.value).createDirectory()
+
+ abstract override def writeClass(label: String, jclass: JClass, sym: Symbol) {
+ super.writeClass(label, jclass, sym)
+
+ val pathName = jclass.getName()
+ var dumpFile = pathName.split("[./]").foldLeft(baseDir: Path) (_ / _) changeExtension "class" toFile;
+ dumpFile.parent.createDirectory()
+ val outstream = new DataOutputStream(new FileOutputStream(dumpFile.path))
+
+ try jclass writeTo outstream
+ finally outstream.close()
+ }
+ }
}
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
index 3fe5b83515..e80927f620 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
@@ -129,7 +129,12 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with
new DirectToJarfileWriter(f.file)
case _ =>
- if (settings.Ygenjavap.isDefault) new ClassBytecodeWriter { }
+ if (settings.Ygenjavap.isDefault) {
+ if(settings.Ydumpclasses.isDefault)
+ new ClassBytecodeWriter { }
+ else
+ new ClassBytecodeWriter with DumpBytecodeWriter { }
+ }
else new ClassBytecodeWriter with JavapBytecodeWriter { }
}
@@ -308,6 +313,18 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with
private var innerClassBuffer = mutable.LinkedHashSet[Symbol]()
+ /** Drop redundant interfaces (ones which are implemented by some
+ * other parent) from the immediate parents. This is important on
+ * android because there is otherwise an interface explosion.
+ */
+ private def minimizeInterfaces(interfaces: List[Symbol]): List[Symbol] = (
+ interfaces filterNot (int1 =>
+ interfaces exists (int2 =>
+ (int1 ne int2) && (int2 isSubClass int1)
+ )
+ )
+ )
+
def genClass(c: IClass) {
clasz = c
innerClassBuffer.clear()
@@ -322,7 +339,7 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with
}
val ifaces = superInterfaces match {
case Nil => JClass.NO_INTERFACES
- case _ => mkArray(superInterfaces map (x => javaName(x.typeSymbol)))
+ case _ => mkArray(minimizeInterfaces(superInterfaces map (_.typeSymbol)) map javaName)
}
jclass = fjbgContext.JClass(javaFlags(c.symbol),
@@ -469,7 +486,7 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with
// push the class
jcode emitPUSH javaType(c.symbol).asInstanceOf[JReferenceType]
- // push the the string array of field information
+ // push the string array of field information
jcode emitPUSH fieldList.length
jcode emitANEWARRAY strKind
push(fieldList)
diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
index 813958af85..5e5320ca9a 100644
--- a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
+++ b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala
@@ -563,8 +563,7 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
if (!nameLink.isEmpty)
<a href={nameLink}>{nameHtml}</a>
else nameHtml
- }
- {
+ }{
def tparamsToHtml(mbr: Entity): NodeSeq = mbr match {
case hk: HigherKinded =>
val tpss = hk.typeParams
@@ -580,8 +579,8 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
case _ => NodeSeq.Empty
}
tparamsToHtml(mbr)
- }
- { if (isReduced) NodeSeq.Empty else {
+ }{
+ if (isReduced) NodeSeq.Empty else {
def paramsToHtml(vlsss: List[List[ValueParam]]): NodeSeq = {
def param0(vl: ValueParam): NodeSeq =
// notice the }{ in the next lines, they are necessary to avoid a undesired withspace in output
diff --git a/src/compiler/scala/tools/nsc/doc/model/Entity.scala b/src/compiler/scala/tools/nsc/doc/model/Entity.scala
index 266b9294dd..6eb14a4907 100644
--- a/src/compiler/scala/tools/nsc/doc/model/Entity.scala
+++ b/src/compiler/scala/tools/nsc/doc/model/Entity.scala
@@ -376,7 +376,7 @@ trait ParameterEntity extends Entity {
/** A type parameter to a class, trait, or method. */
trait TypeParam extends ParameterEntity with HigherKinded {
- /** The variance of this type type parameter. Valid values are "+", "-", and the empty string. */
+ /** The variance of this type parameter. Valid values are "+", "-", and the empty string. */
def variance: String
/** The lower bound for this type parameter, if it has been defined. */
diff --git a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
index c2e27cd205..f2d59206e0 100644
--- a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
+++ b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
@@ -128,7 +128,7 @@ trait CompilerControl { self: Global =>
}
/** Sets sync var `response` to the smallest fully attributed tree that encloses position `pos`.
- * Note: Unlike for most other ask... operations, the source file belonging to `pos` needs not be be loaded.
+ * Note: Unlike for most other ask... operations, the source file belonging to `pos` needs not be loaded.
*/
def askTypeAt(pos: Position, response: Response[Tree]) =
postWorkItem(new AskTypeAtItem(pos, response))
diff --git a/src/compiler/scala/tools/nsc/io/Lexer.scala b/src/compiler/scala/tools/nsc/io/Lexer.scala
index 8f103f9b98..5ffb5b4d4f 100644
--- a/src/compiler/scala/tools/nsc/io/Lexer.scala
+++ b/src/compiler/scala/tools/nsc/io/Lexer.scala
@@ -281,7 +281,7 @@ class Lexer(rd: Reader) {
/** The current token is a delimiter consisting of given character, reads next token,
* otherwise raises an error.
* @param c the given delimiter character to compare current token with
- * @throws MalformedInput if the the current token `token` is not a delimiter, or
+ * @throws MalformedInput if the current token `token` is not a delimiter, or
* consists of a character different from `c`.
*/
def accept(ch: Char) {
diff --git a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
index 6be15e4e98..7fcfb6fc6d 100644
--- a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
@@ -139,6 +139,7 @@ trait ScalaSettings extends AbsScalaSettings
val Yshowsyms = BooleanSetting ("-Yshow-syms", "Print the AST symbol hierarchy after each phase.")
val skip = PhasesSetting ("-Yskip", "Skip")
val Ygenjavap = StringSetting ("-Ygen-javap", "dir", "Generate a parallel output directory of .javap files.", "")
+ val Ydumpclasses = StringSetting ("-Ydump-classes", "dir", "Dump the generated bytecode to .class files (useful for reflective compilation that utilizes in-memory classloaders).", "")
val Ynosqueeze = BooleanSetting ("-Yno-squeeze", "Disable creation of compact code in matching.")
val Ystatistics = BooleanSetting ("-Ystatistics", "Print compiler statistics.") .
withPostSetHook(set => util.Statistics.enabled = set.value)
diff --git a/src/compiler/scala/tools/nsc/transform/LiftCode.scala b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
index 68a53e57a1..f3f823d197 100644
--- a/src/compiler/scala/tools/nsc/transform/LiftCode.scala
+++ b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
@@ -95,7 +95,7 @@ abstract class LiftCode extends Transform with TypingTransformers {
buf.append(", " + "List(" + annotations + ")")
var s = buf.toString
- if (s.endsWith(", Map()")) s = s.substring(0, s.length - ", Map()".length)
+ if (s.endsWith(", List()")) s = s.substring(0, s.length - ", List()".length)
if (s.endsWith(", newTypeName(\"\")")) s = s.substring(0, s.length - ", newTypeName(\"\")".length)
if (s.endsWith("Set()")) s = s.substring(0, s.length - "Set()".length)
"Modifiers(" + s + ")"
diff --git a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
index cc88f471ab..e4ebe13217 100644
--- a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
@@ -227,7 +227,7 @@ trait NamesDefaults { self: Analyzer =>
// super constructor calls
case Select(sp @ Super(_, _), _) if isConstr =>
// 'moduleQual' fixes #3207. selection of the companion module of the
- // superclass needs to have the same prefix as the the superclass.
+ // superclass needs to have the same prefix as the superclass.
blockWithoutQualifier(moduleQual(baseFun.pos, sp.symbol.tpe.parents.head))
// self constructor calls (in secondary constructors)
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index 3c72dc8413..c9991614e4 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -284,7 +284,7 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
}
/** Add a protected accessor, if needed, and return a tree that calls
- * the accessor and returns the the same member. The result is already
+ * the accessor and returns the same member. The result is already
* typed.
*/
private def makeAccessor(tree: Select, targs: List[Tree]): Tree = {
diff --git a/src/library/scala/Array.scala b/src/library/scala/Array.scala
index ae0dd68dfd..99c54ce58c 100644
--- a/src/library/scala/Array.scala
+++ b/src/library/scala/Array.scala
@@ -24,7 +24,7 @@ class FallbackArrayBuilding {
* Called instead of `Array.newBuilder` if the element type of an array
* does not have a class manifest. Note that fallbackBuilder factory
* needs an implicit parameter (otherwise it would not be dominated in
- * implicit search by `Array.canBuildFrom`). We make sure that that
+ * implicit search by `Array.canBuildFrom`). We make sure that
* implicit search is always successful.
*/
implicit def fallbackCanBuildFrom[T](implicit m: DummyImplicit): CanBuildFrom[Array[_], T, ArraySeq[T]] =
@@ -465,7 +465,7 @@ object Array extends FallbackArrayBuilding {
*
* @author Martin Odersky
* @version 1.0
- * @see [[http://www.scala-lang.org/docu/files/collections-api/collections_38.html "The Scala 2.8 Collections API"]]
+ * @see [[http://www.scala-lang.org/docu/files/collections-api/collections_38.html#anchor "The Scala 2.8 Collections' API"]]
* section on `Array` by Martin Odersky for more information.
*/
final class Array[T](_length: Int) extends java.io.Serializable with java.lang.Cloneable {
diff --git a/src/library/scala/Option.scala b/src/library/scala/Option.scala
index c1b64808b0..bd498de847 100644
--- a/src/library/scala/Option.scala
+++ b/src/library/scala/Option.scala
@@ -162,6 +162,11 @@ sealed abstract class Option[+A] extends Product with Serializable {
@inline final def filterNot(p: A => Boolean): Option[A] =
if (isEmpty || !p(this.get)) this else None
+ /** Returns false if the option is $none, true otherwise.
+ * @note Implemented here to avoid the implicit conversion to Iterable.
+ */
+ final def nonEmpty = isDefined
+
/** Necessary to keep $option from being implicitly converted to
* [[scala.collection.Iterable]] in `for` comprehensions.
*/
diff --git a/src/library/scala/collection/SeqLike.scala b/src/library/scala/collection/SeqLike.scala
index 8a4f2ff31a..b6b4bfb96d 100644
--- a/src/library/scala/collection/SeqLike.scala
+++ b/src/library/scala/collection/SeqLike.scala
@@ -21,7 +21,7 @@ import scala.math.Ordering
* @define seqInfo
* Sequences are special cases of iterable collections of class `Iterable`.
* Unlike iterables, sequences always have a defined order of elements.
- * Sequences provide a method `apply` for indexing. Indices range from `0` up the the `length` of
+ * Sequences provide a method `apply` for indexing. Indices range from `0` up to the `length` of
* a sequence. Sequences support a number to find occurrences of elements or subsequences, including
* `segmentLength`, `prefixLength`, `indexWhere`, `indexOf`, `lastIndexWhere`, `lastIndexOf`,
* `startsWith`, `endsWith`, `indexOfSlice`.
diff --git a/src/library/scala/collection/immutable/BitSet.scala b/src/library/scala/collection/immutable/BitSet.scala
index ce4d688707..abccd91f9c 100644
--- a/src/library/scala/collection/immutable/BitSet.scala
+++ b/src/library/scala/collection/immutable/BitSet.scala
@@ -17,6 +17,9 @@ import mutable.{ Builder, SetBuilder }
/** A class for immutable bitsets.
* $bitsetinfo
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#immutable_bitsets "Scala's Collection Library overview"]]
+ * section on `Immutable BitSets` for more information.
+ *
* @define Coll immutable.BitSet
* @define coll immutable bitset
*/
diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala
index 79ee067d63..55ce8fa822 100644
--- a/src/library/scala/collection/immutable/HashMap.scala
+++ b/src/library/scala/collection/immutable/HashMap.scala
@@ -25,6 +25,8 @@ import parallel.immutable.ParHashMap
* @author Tiark Rompf
* @version 2.8
* @since 2.3
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#hash_tries "Scala's Collection Library overview"]]
+ * section on `Hash Tries` for more information.
* @define Coll immutable.HashMap
* @define coll immutable hash map
* @define mayNotTerminateInf
diff --git a/src/library/scala/collection/immutable/List.scala b/src/library/scala/collection/immutable/List.scala
index d5e5f2aee0..531eac6c01 100644
--- a/src/library/scala/collection/immutable/List.scala
+++ b/src/library/scala/collection/immutable/List.scala
@@ -57,10 +57,9 @@ import annotation.tailrec
* @author Martin Odersky and others
* @version 2.8
* @since 1.0
+ * @see [["http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#lists" "Scala's Collection Library overview"]]
+ * section on `Lists` for more information.
*
- * @tparam A the type of the list's elements
- *
- * @define Coll List
* @define coll list
* @define thatinfo the class of the returned collection. In the standard library configuration,
* `That` is always `List[B]` because an implicit of type `CanBuildFrom[List, B, That]`
diff --git a/src/library/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala
index b2b933c51a..e008fb86e3 100644
--- a/src/library/scala/collection/immutable/ListMap.scala
+++ b/src/library/scala/collection/immutable/ListMap.scala
@@ -16,6 +16,9 @@ import annotation.{tailrec, bridge}
/** $factoryInfo
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#list_maps "Scala's Collection Library overview"]]
+ * section on `List Maps` for more information.
+ *
* @define Coll immutable.ListMap
* @define coll immutable list map
*/
diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala
index 6e73eef101..da04446281 100644
--- a/src/library/scala/collection/immutable/Queue.scala
+++ b/src/library/scala/collection/immutable/Queue.scala
@@ -27,6 +27,9 @@ import annotation.tailrec
* @author Erik Stenman
* @version 1.0, 08/07/2003
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#immutable_queues "Scala's Collection Library overview"]]
+ * section on `Immutable Queues` for more information.
+ *
* @define Coll immutable.Queue
* @define coll immutable queue
* @define mayNotTerminateInf
diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala
index 3736096f36..e891f8bec8 100644
--- a/src/library/scala/collection/immutable/Range.scala
+++ b/src/library/scala/collection/immutable/Range.scala
@@ -31,6 +31,9 @@ import annotation.bridge
* @author Paul Phillips
* @version 2.8
* @since 2.5
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#ranges "Scala's Collection Library overview"]]
+ * section on `Ranges` for more information.
+ *
* @define Coll Range
* @define coll range
* @define mayNotTerminateInf
diff --git a/src/library/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala
index d65300ecb7..50fc2795c0 100644
--- a/src/library/scala/collection/immutable/Stack.scala
+++ b/src/library/scala/collection/immutable/Stack.scala
@@ -34,6 +34,9 @@ object Stack extends SeqFactory[Stack] {
* @author Matthias Zenger
* @version 1.0, 10/07/2003
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#immutable_stacks "Scala's Collection Library overview"]]
+ * section on `Immutable stacks` for more information.
+ *
* @define Coll immutable.Stack
* @define coll immutable stack
* @define orderDependent
diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala
index 7bae387ad2..e6587f9615 100644
--- a/src/library/scala/collection/immutable/Stream.scala
+++ b/src/library/scala/collection/immutable/Stream.scala
@@ -172,6 +172,9 @@ import Stream.cons
* @author Martin Odersky, Matthias Zenger
* @version 1.1 08/08/03
* @since 2.8
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#streams "Scala's Collection Library overview"]]
+ * section on `Streams` for more information.
+
* @define naturalsEx def naturalsFrom(i: Int): Stream[Int] = i #:: naturalsFrom(i + 1)
* @define Coll Stream
* @define coll stream
diff --git a/src/library/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala
index a46583c541..ef0eac3701 100644
--- a/src/library/scala/collection/immutable/TreeMap.scala
+++ b/src/library/scala/collection/immutable/TreeMap.scala
@@ -36,6 +36,9 @@ object TreeMap extends ImmutableSortedMapFactory[TreeMap] {
* @author Matthias Zenger
* @version 1.1, 03/05/2004
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#redblack_trees "Scala's Collection Library overview"]]
+ * section on `Red-Black Trees` for more information.
+ *
* @define Coll immutable.TreeMap
* @define coll immutable tree map
* @define orderDependent
diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala
index 3fa1213359..8b90ece143 100644
--- a/src/library/scala/collection/immutable/TreeSet.scala
+++ b/src/library/scala/collection/immutable/TreeSet.scala
@@ -36,6 +36,9 @@ object TreeSet extends ImmutableSortedSetFactory[TreeSet] {
* @author Martin Odersky
* @version 2.0, 02/01/2007
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#redblack_trees "Scala's Collection Library overview"]]
+ * section on `Red-Black Trees` for more information.
+ *
* @define Coll immutable.TreeSet
* @define coll immutable tree set
* @define orderDependent
diff --git a/src/library/scala/collection/immutable/Vector.scala b/src/library/scala/collection/immutable/Vector.scala
index ab12300097..55c31feec2 100644
--- a/src/library/scala/collection/immutable/Vector.scala
+++ b/src/library/scala/collection/immutable/Vector.scala
@@ -35,6 +35,9 @@ object Vector extends SeqFactory[Vector] {
* endian bit-mapped vector trie with a branching factor of 32. Locality is very good, but not
* contiguous, which is good for very large sequences.
*
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html#vectors "Scala's Collection Library overview"]]
+ * section on `Vectors` for more information.
+ *
* @tparam A the element type
*
* @define Coll Vector
diff --git a/src/library/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala
index ea56eee395..bfdc08536c 100644
--- a/src/library/scala/collection/mutable/ArrayBuffer.scala
+++ b/src/library/scala/collection/mutable/ArrayBuffer.scala
@@ -23,6 +23,9 @@ import parallel.mutable.ParArray
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#array_buffers "Scala's Collection Library overview"]]
+ * section on `Array Buffers` for more information.
+
*
* @tparam A the type of this arraybuffer's elements.
*
diff --git a/src/library/scala/collection/mutable/ArraySeq.scala b/src/library/scala/collection/mutable/ArraySeq.scala
index 414d80b462..cb86c416fe 100644
--- a/src/library/scala/collection/mutable/ArraySeq.scala
+++ b/src/library/scala/collection/mutable/ArraySeq.scala
@@ -21,6 +21,8 @@ import parallel.mutable.ParArray
* @author Martin Odersky
* @version 2.8
* @since 2.8
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#array_sequences "Scala's Collection Library overview"]]
+ * section on `Array Sequences` for more information.
*
* @tparam A type of the elements contained in this array sequence.
* @param length the length of the underlying array.
diff --git a/src/library/scala/collection/mutable/ArrayStack.scala b/src/library/scala/collection/mutable/ArrayStack.scala
index c46955477b..f5287312b9 100644
--- a/src/library/scala/collection/mutable/ArrayStack.scala
+++ b/src/library/scala/collection/mutable/ArrayStack.scala
@@ -46,6 +46,8 @@ object ArrayStack extends SeqFactory[ArrayStack] {
*
* @author David MacIver
* @since 2.7
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#array_stacks "Scala's Collection Library overview"]]
+ * section on `Array Stacks` for more information.
*
* @tparam T type of the elements contained in this array stack.
*
diff --git a/src/library/scala/collection/mutable/BitSet.scala b/src/library/scala/collection/mutable/BitSet.scala
index 9dce3ff9e2..6b9673dae6 100644
--- a/src/library/scala/collection/mutable/BitSet.scala
+++ b/src/library/scala/collection/mutable/BitSet.scala
@@ -18,6 +18,9 @@ import BitSetLike.{LogWL, updateArray}
*
* $bitsetinfo
*
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#mutable_bitsets "Scala's Collection Library overview"]]
+ * section on `Mutable Bitsets` for more information.
+ *
* @define Coll BitSet
* @define coll bitset
* @define thatinfo the class of the returned collection. In the standard library configuration,
diff --git a/src/library/scala/collection/mutable/ConcurrentMap.scala b/src/library/scala/collection/mutable/ConcurrentMap.scala
index 7e526fd4ea..fbb356ffb3 100644
--- a/src/library/scala/collection/mutable/ConcurrentMap.scala
+++ b/src/library/scala/collection/mutable/ConcurrentMap.scala
@@ -14,6 +14,8 @@ package mutable
* $concurrentmapinfo
*
* @since 2.8
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#concurrent_maps "Scala's Collection Library overview"]]
+ * section on `Concurrent Maps` for more information.
*
* @tparam A the key type of the map
* @tparam B the value type of the map
diff --git a/src/library/scala/collection/mutable/DoubleLinkedList.scala b/src/library/scala/collection/mutable/DoubleLinkedList.scala
index dd111b3800..49378a4f4e 100644
--- a/src/library/scala/collection/mutable/DoubleLinkedList.scala
+++ b/src/library/scala/collection/mutable/DoubleLinkedList.scala
@@ -20,6 +20,9 @@ import generic._
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#double_linked_lists "Scala's Collection Library overview"]]
+ * section on `Double Linked Lists` for more information.
+
*
* @tparam A the type of the elements contained in this double linked list.
*
diff --git a/src/library/scala/collection/mutable/HashMap.scala b/src/library/scala/collection/mutable/HashMap.scala
index c86ee39256..65a10f4ba9 100644
--- a/src/library/scala/collection/mutable/HashMap.scala
+++ b/src/library/scala/collection/mutable/HashMap.scala
@@ -15,6 +15,8 @@ import scala.collection.parallel.mutable.ParHashMap
/** This class implements mutable maps using a hashtable.
*
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#hash_tables "Scala's Collection Library overview"]]
+ * section on `Hash Tables` for more information.
*
* @tparam A the type of the keys contained in this hash map.
* @tparam B the type of the values assigned to keys in this hash map.
diff --git a/src/library/scala/collection/mutable/HashSet.scala b/src/library/scala/collection/mutable/HashSet.scala
index 6a6964609c..8ed6b925aa 100644
--- a/src/library/scala/collection/mutable/HashSet.scala
+++ b/src/library/scala/collection/mutable/HashSet.scala
@@ -22,6 +22,8 @@ import collection.parallel.mutable.ParHashSet
* @author Martin Odersky
* @version 2.0, 31/12/2006
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#hash_tables "Scala's Collection Library overview"]]
+ * section on `Hash Tables` for more information.
*
* @define Coll mutable.HashSet
* @define coll mutable hash set
diff --git a/src/library/scala/collection/mutable/LinearSeq.scala b/src/library/scala/collection/mutable/LinearSeq.scala
index e29d6bf3e6..522ebfd277 100644
--- a/src/library/scala/collection/mutable/LinearSeq.scala
+++ b/src/library/scala/collection/mutable/LinearSeq.scala
@@ -19,6 +19,8 @@ import generic._
*
* @define Coll LinearSeq
* @define coll linear sequence
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#mutable_lists "Scala's Collection Library overview"]]
+ * section on `Mutable Lists` for more information.
*/
trait LinearSeq[A] extends Seq[A]
with scala.collection.LinearSeq[A]
diff --git a/src/library/scala/collection/mutable/LinkedList.scala b/src/library/scala/collection/mutable/LinkedList.scala
index 65391f5884..8510827697 100644
--- a/src/library/scala/collection/mutable/LinkedList.scala
+++ b/src/library/scala/collection/mutable/LinkedList.scala
@@ -33,6 +33,8 @@ import generic._
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#linked_lists "Scala's Collection Library overview"]]
+ * section on `Linked Lists` for more information.
*
* @tparam A the type of the elements contained in this linked list.
*
diff --git a/src/library/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala
index 233544c4ca..131cdd0005 100644
--- a/src/library/scala/collection/mutable/ListBuffer.scala
+++ b/src/library/scala/collection/mutable/ListBuffer.scala
@@ -21,6 +21,8 @@ import immutable.{List, Nil, ::}
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#list_buffers "Scala's Collection Library overview"]]
+ * section on `List Buffers` for more information.
*
* @tparam A the type of this list buffer's elements.
*
diff --git a/src/library/scala/collection/mutable/MutableList.scala b/src/library/scala/collection/mutable/MutableList.scala
index 20910e48f4..c9e44ac165 100644
--- a/src/library/scala/collection/mutable/MutableList.scala
+++ b/src/library/scala/collection/mutable/MutableList.scala
@@ -23,6 +23,8 @@ import immutable.{List, Nil}
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#mutable_lists "Scala's Collection Library overview"]]
+ * section on `Mutable Lists` for more information.
*/
@SerialVersionUID(5938451523372603072L)
class MutableList[A]
diff --git a/src/library/scala/collection/mutable/Queue.scala b/src/library/scala/collection/mutable/Queue.scala
index e1723241f5..77b1ae21cb 100644
--- a/src/library/scala/collection/mutable/Queue.scala
+++ b/src/library/scala/collection/mutable/Queue.scala
@@ -20,6 +20,8 @@ import generic._
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#mutable_queues "Scala's Collection Library overview"]]
+ * section on `Queues` for more information.
*
* @define Coll mutable.Queue
* @define coll mutable queue
diff --git a/src/library/scala/collection/mutable/Stack.scala b/src/library/scala/collection/mutable/Stack.scala
index c795609b67..ffac3b78b7 100644
--- a/src/library/scala/collection/mutable/Stack.scala
+++ b/src/library/scala/collection/mutable/Stack.scala
@@ -44,6 +44,8 @@ object Stack extends SeqFactory[Stack] {
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#stacks"Scala's Collection Library overview"]]
+ * section on `Stacks` for more information.
* @define Coll Stack
* @define coll stack
* @define orderDependent
diff --git a/src/library/scala/collection/mutable/StringBuilder.scala b/src/library/scala/collection/mutable/StringBuilder.scala
index 6fb4b839ef..603086d209 100644
--- a/src/library/scala/collection/mutable/StringBuilder.scala
+++ b/src/library/scala/collection/mutable/StringBuilder.scala
@@ -21,6 +21,8 @@ import immutable.StringLike
* @author Martin Odersky
* @version 2.8
* @since 2.7
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html# "Scala's Collection Library overview"]]
+ * section on `StringBuilders` for more information.
*/
@SerialVersionUID(0 - 8525408645367278351L)
final class StringBuilder(private val underlying: JavaStringBuilder)
diff --git a/src/library/scala/collection/mutable/WeakHashMap.scala b/src/library/scala/collection/mutable/WeakHashMap.scala
index be2daa05ce..89d7c7a695 100644
--- a/src/library/scala/collection/mutable/WeakHashMap.scala
+++ b/src/library/scala/collection/mutable/WeakHashMap.scala
@@ -23,6 +23,9 @@ import generic._
* @tparam B type of values associated with the keys
*
* @since 2.8
+ * @see [[http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#weak_hash_maps "Scala's Collection Library overview"]]
+ * section on `Weak Hash Maps` for more information.
+ *
* @define Coll WeakHashMap
* @define coll weak hash map
* @define thatinfo the class of the returned collection. In the standard library configuration,
diff --git a/src/library/scala/sys/process/ProcessBuilder.scala b/src/library/scala/sys/process/ProcessBuilder.scala
index 9acdc59094..214d908012 100644
--- a/src/library/scala/sys/process/ProcessBuilder.scala
+++ b/src/library/scala/sys/process/ProcessBuilder.scala
@@ -42,7 +42,7 @@ import ProcessBuilder._
* 2. `#&&` conditionally executes the second command if the previous one finished with
* exit value 0. It mirrors shell's `&&`.
* 3. `#||` conditionally executes the third command if the exit value of the previous
- * command is is different than zero. It mirrors shell's `&&`.
+ * command is different than zero. It mirrors shell's `&&`.
*
* Not shown here, the equivalent of a shell's `;` would be `###`. The reason for this name is
* that `;` is a reserved token in Scala.
diff --git a/src/library/scala/util/parsing/combinator/RegexParsers.scala b/src/library/scala/util/parsing/combinator/RegexParsers.scala
index a06b9d59ce..86eecd03c4 100644
--- a/src/library/scala/util/parsing/combinator/RegexParsers.scala
+++ b/src/library/scala/util/parsing/combinator/RegexParsers.scala
@@ -23,7 +23,7 @@ import scala.collection.immutable.PagedSeq
* - There's an implicit conversion from [[scala.util.matching.Regex]] to `Parser[String]`,
* so that regex expressions can be used as parser combinators.
* - The parsing methods call the method `skipWhitespace` (defaults to `true`) and, if true,
- * skip any whitespace before before each parser is called.
+ * skip any whitespace before each parser is called.
* - Protected val `whiteSpace` returns a regex that identifies whitespace.
*
* For example, this creates a very simple calculator receiving `String` input:
diff --git a/src/library/scala/util/parsing/json/JSON.scala b/src/library/scala/util/parsing/json/JSON.scala
index 1464f80e3f..15d43cf2af 100644
--- a/src/library/scala/util/parsing/json/JSON.scala
+++ b/src/library/scala/util/parsing/json/JSON.scala
@@ -45,7 +45,7 @@ object JSON extends Parser {
/**
* Parse the given `JSON` string and return a list of elements. If the
* string is a `JSON` object it will be a `JSONObject`. If it's a `JSON`
- * array it will be be a `JSONArray`.
+ * array it will be a `JSONArray`.
*
* @param input the given `JSON` string.
* @return an optional `JSONType` element.
diff --git a/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCode.scala b/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCode.scala
index fbcdbf893f..b0c26884af 100644
--- a/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCode.scala
+++ b/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCode.scala
@@ -887,7 +887,7 @@ opcode(Readonly, CEE_READONLY , "readonly." , 0xFFFFFE1E, POP_NONE, PUSH_NONE
opcode(Bne_Un_S, CEE_BNE_UN_S, "bne.un.s", 0xFFFFFF33, POP_1_1 , PUSH_NONE, INLINE_TARGET_S, FLOW_COND_BRANCH)
/**
- * Transfers control to a target instruction (short form) if if the the first value is greather
+ * Transfers control to a target instruction (short form) if the first value is greather
* than the second value, when comparing unsigned integer values or unordered float values.
*/
final val Bge_Un_S = new OpCode()
@@ -973,7 +973,7 @@ opcode(Readonly, CEE_READONLY , "readonly." , 0xFFFFFE1E, POP_NONE, PUSH_NONE
opcode(Bne_Un, CEE_BNE_UN , "bne.un", 0xFFFFFF40, POP_1_1 , PUSH_NONE, INLINE_TARGET, FLOW_COND_BRANCH)
/**
- * Transfers control to a target instruction if the the first value is greather than
+ * Transfers control to a target instruction if the first value is greather than
* the second value, when comparing unsigned integer values or unordered float values.
*/
final val Bge_Un = new OpCode()
diff --git a/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCodes.scala b/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCodes.scala
index d486c31af0..80e4267436 100644
--- a/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCodes.scala
+++ b/src/msil/ch/epfl/lamp/compiler/msil/emit/OpCodes.scala
@@ -307,7 +307,7 @@ object OpCodes {
final val Bne_Un_S = OpCode.Bne_Un_S
/**
- * Transfers control to a target instruction (short form) if if the the first value is greather
+ * Transfers control to a target instruction (short form) if the first value is greather
* than the second value, when comparing unsigned integer values or unordered float values.
*/
final val Bge_Un_S = OpCode.Bge_Un_S
@@ -380,7 +380,7 @@ object OpCodes {
final val Bne_Un = OpCode.Bne_Un
/**
- * Transfers control to a target instruction if the the first value is greather than
+ * Transfers control to a target instruction if the first value is greather than
* the second value, when comparing unsigned integer values or unordered float values.
*/
final val Bge_Un = OpCode.Bge_Un
diff --git a/test/files/presentation/akka.check b/test/disabled/presentation/akka.check
index 9cd20ffb1c..9cd20ffb1c 100644
--- a/test/files/presentation/akka.check
+++ b/test/disabled/presentation/akka.check
diff --git a/test/files/presentation/akka.flags b/test/disabled/presentation/akka.flags
index 56d026a62d..56d026a62d 100644
--- a/test/files/presentation/akka.flags
+++ b/test/disabled/presentation/akka.flags
diff --git a/test/files/presentation/akka/Runner.scala b/test/disabled/presentation/akka/Runner.scala
index 14a6aa8350..14a6aa8350 100644
--- a/test/files/presentation/akka/Runner.scala
+++ b/test/disabled/presentation/akka/Runner.scala
diff --git a/test/files/presentation/akka/src/akka/AkkaException.scala b/test/disabled/presentation/akka/src/akka/AkkaException.scala
index 155a7a16b5..155a7a16b5 100644
--- a/test/files/presentation/akka/src/akka/AkkaException.scala
+++ b/test/disabled/presentation/akka/src/akka/AkkaException.scala
diff --git a/test/files/presentation/akka/src/akka/actor/Actor.scala b/test/disabled/presentation/akka/src/akka/actor/Actor.scala
index b955c4c38b..b955c4c38b 100644
--- a/test/files/presentation/akka/src/akka/actor/Actor.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/Actor.scala
diff --git a/test/files/presentation/akka/src/akka/actor/ActorRef.scala b/test/disabled/presentation/akka/src/akka/actor/ActorRef.scala
index 07fa358744..ff67c9468e 100644
--- a/test/files/presentation/akka/src/akka/actor/ActorRef.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/ActorRef.scala
@@ -471,7 +471,7 @@ trait ActorRef extends ActorRefShared with java.lang.Comparable[ActorRef] { scal
* <p/>
* To be invoked from within the actor itself.
*/
- @deprecated("Will be removed after 1.1, use use Actor.remote.actorOf instead and then link on success", "1.1")
+ @deprecated("Will be removed after 1.1, use Actor.remote.actorOf instead and then link on success", "1.1")
def spawnLink(clazz: Class[_ <: Actor]): ActorRef
/**
diff --git a/test/files/presentation/akka/src/akka/actor/ActorRegistry.scala b/test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala
index df335dc8b4..df335dc8b4 100644
--- a/test/files/presentation/akka/src/akka/actor/ActorRegistry.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/ActorRegistry.scala
diff --git a/test/files/presentation/akka/src/akka/actor/Actors.java b/test/disabled/presentation/akka/src/akka/actor/Actors.java
index a5ec9f37dc..a5ec9f37dc 100644
--- a/test/files/presentation/akka/src/akka/actor/Actors.java
+++ b/test/disabled/presentation/akka/src/akka/actor/Actors.java
diff --git a/test/files/presentation/akka/src/akka/actor/BootableActorLoaderService.scala b/test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala
index a54fca9ac7..a54fca9ac7 100644
--- a/test/files/presentation/akka/src/akka/actor/BootableActorLoaderService.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/BootableActorLoaderService.scala
diff --git a/test/files/presentation/akka/src/akka/actor/FSM.scala b/test/disabled/presentation/akka/src/akka/actor/FSM.scala
index d9cd9a9ca2..d9cd9a9ca2 100644
--- a/test/files/presentation/akka/src/akka/actor/FSM.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/FSM.scala
diff --git a/test/files/presentation/akka/src/akka/actor/Scheduler.scala b/test/disabled/presentation/akka/src/akka/actor/Scheduler.scala
index 128584f3c5..128584f3c5 100644
--- a/test/files/presentation/akka/src/akka/actor/Scheduler.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/Scheduler.scala
diff --git a/test/files/presentation/akka/src/akka/actor/Supervisor.scala b/test/disabled/presentation/akka/src/akka/actor/Supervisor.scala
index 4a1309faef..4a1309faef 100644
--- a/test/files/presentation/akka/src/akka/actor/Supervisor.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/Supervisor.scala
diff --git a/test/files/presentation/akka/src/akka/actor/UntypedActor.scala b/test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala
index cbc43f22f8..cbc43f22f8 100644
--- a/test/files/presentation/akka/src/akka/actor/UntypedActor.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/UntypedActor.scala
diff --git a/test/files/presentation/akka/src/akka/actor/package.scala b/test/disabled/presentation/akka/src/akka/actor/package.scala
index fbeeed49cb..fbeeed49cb 100644
--- a/test/files/presentation/akka/src/akka/actor/package.scala
+++ b/test/disabled/presentation/akka/src/akka/actor/package.scala
diff --git a/test/files/presentation/akka/src/akka/config/Config.scala b/test/disabled/presentation/akka/src/akka/config/Config.scala
index 6578c66f77..6578c66f77 100644
--- a/test/files/presentation/akka/src/akka/config/Config.scala
+++ b/test/disabled/presentation/akka/src/akka/config/Config.scala
diff --git a/test/files/presentation/akka/src/akka/config/ConfigParser.scala b/test/disabled/presentation/akka/src/akka/config/ConfigParser.scala
index 73fac5e31b..73fac5e31b 100644
--- a/test/files/presentation/akka/src/akka/config/ConfigParser.scala
+++ b/test/disabled/presentation/akka/src/akka/config/ConfigParser.scala
diff --git a/test/files/presentation/akka/src/akka/config/Configuration.scala b/test/disabled/presentation/akka/src/akka/config/Configuration.scala
index 81c32fce90..81c32fce90 100644
--- a/test/files/presentation/akka/src/akka/config/Configuration.scala
+++ b/test/disabled/presentation/akka/src/akka/config/Configuration.scala
diff --git a/test/files/presentation/akka/src/akka/config/Configurator.scala b/test/disabled/presentation/akka/src/akka/config/Configurator.scala
index 2818339b0f..2818339b0f 100644
--- a/test/files/presentation/akka/src/akka/config/Configurator.scala
+++ b/test/disabled/presentation/akka/src/akka/config/Configurator.scala
diff --git a/test/files/presentation/akka/src/akka/config/Importer.scala b/test/disabled/presentation/akka/src/akka/config/Importer.scala
index eebda1d4fe..eebda1d4fe 100644
--- a/test/files/presentation/akka/src/akka/config/Importer.scala
+++ b/test/disabled/presentation/akka/src/akka/config/Importer.scala
diff --git a/test/files/presentation/akka/src/akka/config/SupervisionConfig.scala b/test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala
index 40f61f615f..40f61f615f 100644
--- a/test/files/presentation/akka/src/akka/config/SupervisionConfig.scala
+++ b/test/disabled/presentation/akka/src/akka/config/SupervisionConfig.scala
diff --git a/test/files/presentation/akka/src/akka/dataflow/DataFlow.scala b/test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala
index bca7936116..bca7936116 100644
--- a/test/files/presentation/akka/src/akka/dataflow/DataFlow.scala
+++ b/test/disabled/presentation/akka/src/akka/dataflow/DataFlow.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/Dispatchers.scala b/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala
index 7dd1bf6218..7dd1bf6218 100644
--- a/test/files/presentation/akka/src/akka/dispatch/Dispatchers.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala
index bc3f29ac68..bc3f29ac68 100644
--- a/test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenDispatcher.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
index 4cba8eec8b..4cba8eec8b 100644
--- a/test/files/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/Future.scala b/test/disabled/presentation/akka/src/akka/dispatch/Future.scala
index 1ad304d726..1ad304d726 100644
--- a/test/files/presentation/akka/src/akka/dispatch/Future.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/Future.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/MailboxHandling.scala b/test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala
index 4c00577157..4c00577157 100644
--- a/test/files/presentation/akka/src/akka/dispatch/MailboxHandling.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/MailboxHandling.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/MessageHandling.scala b/test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala
index 20887c3867..20887c3867 100644
--- a/test/files/presentation/akka/src/akka/dispatch/MessageHandling.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/MessageHandling.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala b/test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala
index 3169c70ef9..3169c70ef9 100644
--- a/test/files/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/ThreadBasedDispatcher.scala
diff --git a/test/files/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala b/test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala
index e847610c4c..e847610c4c 100644
--- a/test/files/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala
+++ b/test/disabled/presentation/akka/src/akka/dispatch/ThreadPoolBuilder.scala
diff --git a/test/files/presentation/akka/src/akka/event/EventHandler.scala b/test/disabled/presentation/akka/src/akka/event/EventHandler.scala
index f3176b7c21..f3176b7c21 100644
--- a/test/files/presentation/akka/src/akka/event/EventHandler.scala
+++ b/test/disabled/presentation/akka/src/akka/event/EventHandler.scala
diff --git a/test/files/presentation/akka/src/akka/event/JavaEventHandler.java b/test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java
index 7e6e2d4143..7e6e2d4143 100644
--- a/test/files/presentation/akka/src/akka/event/JavaEventHandler.java
+++ b/test/disabled/presentation/akka/src/akka/event/JavaEventHandler.java
diff --git a/test/files/presentation/akka/src/akka/japi/JavaAPI.scala b/test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala
index f5c4ccdcaa..f5c4ccdcaa 100644
--- a/test/files/presentation/akka/src/akka/japi/JavaAPI.scala
+++ b/test/disabled/presentation/akka/src/akka/japi/JavaAPI.scala
diff --git a/test/files/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala
index 1c75618301..1c75618301 100644
--- a/test/files/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala
+++ b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteEventHandler.scala
diff --git a/test/files/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala
index 0c5da82294..0c5da82294 100644
--- a/test/files/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala
+++ b/test/disabled/presentation/akka/src/akka/remoteinterface/RemoteInterface.scala
diff --git a/test/files/presentation/akka/src/akka/routing/Iterators.scala b/test/disabled/presentation/akka/src/akka/routing/Iterators.scala
index 315e7bea51..315e7bea51 100644
--- a/test/files/presentation/akka/src/akka/routing/Iterators.scala
+++ b/test/disabled/presentation/akka/src/akka/routing/Iterators.scala
diff --git a/test/files/presentation/akka/src/akka/routing/Listeners.scala b/test/disabled/presentation/akka/src/akka/routing/Listeners.scala
index 04f6c1259f..04f6c1259f 100644
--- a/test/files/presentation/akka/src/akka/routing/Listeners.scala
+++ b/test/disabled/presentation/akka/src/akka/routing/Listeners.scala
diff --git a/test/files/presentation/akka/src/akka/routing/Pool.scala b/test/disabled/presentation/akka/src/akka/routing/Pool.scala
index 0fd1bc8f49..d972bb84c8 100644
--- a/test/files/presentation/akka/src/akka/routing/Pool.scala
+++ b/test/disabled/presentation/akka/src/akka/routing/Pool.scala
@@ -220,7 +220,7 @@ trait BoundedCapacityStrategy extends CapacityStrategy with BoundedCapacitor
*/
/**
- * The basic filter trait that composes ramp-up and and back-off subfiltering.
+ * The basic filter trait that composes ramp-up and back-off subfiltering.
*/
trait Filter {
def rampup(pressure: Int, capacity: Int): Int
diff --git a/test/files/presentation/akka/src/akka/routing/Routers.scala b/test/disabled/presentation/akka/src/akka/routing/Routers.scala
index a4c34c5c67..a4c34c5c67 100644
--- a/test/files/presentation/akka/src/akka/routing/Routers.scala
+++ b/test/disabled/presentation/akka/src/akka/routing/Routers.scala
diff --git a/test/files/presentation/akka/src/akka/routing/Routing.scala b/test/disabled/presentation/akka/src/akka/routing/Routing.scala
index befc124248..befc124248 100644
--- a/test/files/presentation/akka/src/akka/routing/Routing.scala
+++ b/test/disabled/presentation/akka/src/akka/routing/Routing.scala
diff --git a/test/files/presentation/akka/src/akka/util/Address.scala b/test/disabled/presentation/akka/src/akka/util/Address.scala
index 65b5c0a834..65b5c0a834 100644
--- a/test/files/presentation/akka/src/akka/util/Address.scala
+++ b/test/disabled/presentation/akka/src/akka/util/Address.scala
diff --git a/test/files/presentation/akka/src/akka/util/AkkaLoader.scala b/test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala
index cb246f2ecf..cb246f2ecf 100644
--- a/test/files/presentation/akka/src/akka/util/AkkaLoader.scala
+++ b/test/disabled/presentation/akka/src/akka/util/AkkaLoader.scala
diff --git a/test/files/presentation/akka/src/akka/util/Bootable.scala b/test/disabled/presentation/akka/src/akka/util/Bootable.scala
index d07643e1ac..d07643e1ac 100644
--- a/test/files/presentation/akka/src/akka/util/Bootable.scala
+++ b/test/disabled/presentation/akka/src/akka/util/Bootable.scala
diff --git a/test/files/presentation/akka/src/akka/util/BoundedBlockingQueue.scala b/test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala
index f8deda746c..f8deda746c 100644
--- a/test/files/presentation/akka/src/akka/util/BoundedBlockingQueue.scala
+++ b/test/disabled/presentation/akka/src/akka/util/BoundedBlockingQueue.scala
diff --git a/test/files/presentation/akka/src/akka/util/Crypt.scala b/test/disabled/presentation/akka/src/akka/util/Crypt.scala
index 3ce2d559a2..3ce2d559a2 100644
--- a/test/files/presentation/akka/src/akka/util/Crypt.scala
+++ b/test/disabled/presentation/akka/src/akka/util/Crypt.scala
diff --git a/test/files/presentation/akka/src/akka/util/Duration.scala b/test/disabled/presentation/akka/src/akka/util/Duration.scala
index 316cb86689..316cb86689 100644
--- a/test/files/presentation/akka/src/akka/util/Duration.scala
+++ b/test/disabled/presentation/akka/src/akka/util/Duration.scala
diff --git a/test/files/presentation/akka/src/akka/util/HashCode.scala b/test/disabled/presentation/akka/src/akka/util/HashCode.scala
index d015f12f5d..d015f12f5d 100644
--- a/test/files/presentation/akka/src/akka/util/HashCode.scala
+++ b/test/disabled/presentation/akka/src/akka/util/HashCode.scala
diff --git a/test/files/presentation/akka/src/akka/util/Helpers.scala b/test/disabled/presentation/akka/src/akka/util/Helpers.scala
index 48477426c9..48477426c9 100644
--- a/test/files/presentation/akka/src/akka/util/Helpers.scala
+++ b/test/disabled/presentation/akka/src/akka/util/Helpers.scala
diff --git a/test/files/presentation/akka/src/akka/util/ListenerManagement.scala b/test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala
index 7065397a45..863e905d59 100644
--- a/test/files/presentation/akka/src/akka/util/ListenerManagement.scala
+++ b/test/disabled/presentation/akka/src/akka/util/ListenerManagement.scala
@@ -22,7 +22,7 @@ trait ListenerManagement {
protected def manageLifeCycleOfListeners: Boolean = true
/**
- * Adds the <code>listener</code> this this registry's listener list.
+ * Adds the <code>listener</code> this registry's listener list.
* The <code>listener</code> is started by this method if manageLifeCycleOfListeners yields true.
*/
def addListener(listener: ActorRef) {
@@ -31,7 +31,7 @@ trait ListenerManagement {
}
/**
- * Removes the <code>listener</code> this this registry's listener list.
+ * Removes the <code>listener</code> this registry's listener list.
* The <code>listener</code> is stopped by this method if manageLifeCycleOfListeners yields true.
*/
def removeListener(listener: ActorRef) {
diff --git a/test/files/presentation/akka/src/akka/util/LockUtil.scala b/test/disabled/presentation/akka/src/akka/util/LockUtil.scala
index 4aaefadc4a..4aaefadc4a 100644
--- a/test/files/presentation/akka/src/akka/util/LockUtil.scala
+++ b/test/disabled/presentation/akka/src/akka/util/LockUtil.scala
diff --git a/test/files/presentation/akka/src/akka/util/ReflectiveAccess.scala b/test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala
index f38d1f9b98..f38d1f9b98 100644
--- a/test/files/presentation/akka/src/akka/util/ReflectiveAccess.scala
+++ b/test/disabled/presentation/akka/src/akka/util/ReflectiveAccess.scala
diff --git a/test/files/presentation/akka/src/akka/util/package.scala b/test/disabled/presentation/akka/src/akka/util/package.scala
index 26a24929c9..26a24929c9 100644
--- a/test/files/presentation/akka/src/akka/util/package.scala
+++ b/test/disabled/presentation/akka/src/akka/util/package.scala
diff --git a/test/files/presentation/akka/src/com/eaio/util/lang/Hex.java b/test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java
index 7794059517..7794059517 100644
--- a/test/files/presentation/akka/src/com/eaio/util/lang/Hex.java
+++ b/test/disabled/presentation/akka/src/com/eaio/util/lang/Hex.java
diff --git a/test/files/presentation/akka/src/com/eaio/uuid/MACAddressParser.java b/test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java
index c077147470..c077147470 100644
--- a/test/files/presentation/akka/src/com/eaio/uuid/MACAddressParser.java
+++ b/test/disabled/presentation/akka/src/com/eaio/uuid/MACAddressParser.java
diff --git a/test/files/presentation/akka/src/com/eaio/uuid/UUID.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java
index 6c49bcd1c8..6c49bcd1c8 100644
--- a/test/files/presentation/akka/src/com/eaio/uuid/UUID.java
+++ b/test/disabled/presentation/akka/src/com/eaio/uuid/UUID.java
diff --git a/test/files/presentation/akka/src/com/eaio/uuid/UUIDGen.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java
index 7b63f65447..7b63f65447 100644
--- a/test/files/presentation/akka/src/com/eaio/uuid/UUIDGen.java
+++ b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDGen.java
diff --git a/test/files/presentation/akka/src/com/eaio/uuid/UUIDHelper.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java
index 7abbe85895..7abbe85895 100644
--- a/test/files/presentation/akka/src/com/eaio/uuid/UUIDHelper.java
+++ b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHelper.java
diff --git a/test/files/presentation/akka/src/com/eaio/uuid/UUIDHolder.java b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java
index d5531f5e00..d5531f5e00 100644
--- a/test/files/presentation/akka/src/com/eaio/uuid/UUIDHolder.java
+++ b/test/disabled/presentation/akka/src/com/eaio/uuid/UUIDHolder.java
diff --git a/test/files/presentation/akka/src/pi.scala b/test/disabled/presentation/akka/src/pi.scala
index b4c644052c..b4c644052c 100644
--- a/test/files/presentation/akka/src/pi.scala
+++ b/test/disabled/presentation/akka/src/pi.scala
diff --git a/test/files/presentation/timeofday.check b/test/disabled/presentation/timeofday.check
index 2a09d0bcfc..2a09d0bcfc 100644
--- a/test/files/presentation/timeofday.check
+++ b/test/disabled/presentation/timeofday.check
diff --git a/test/files/presentation/timeofday/Runner.scala b/test/disabled/presentation/timeofday/Runner.scala
index 1c03e3d5ba..1c03e3d5ba 100644
--- a/test/files/presentation/timeofday/Runner.scala
+++ b/test/disabled/presentation/timeofday/Runner.scala
diff --git a/test/files/presentation/timeofday/src/timeofday.scala b/test/disabled/presentation/timeofday/src/timeofday.scala
index d6355097f1..d6355097f1 100644
--- a/test/files/presentation/timeofday/src/timeofday.scala
+++ b/test/disabled/presentation/timeofday/src/timeofday.scala
diff --git a/test/files/run/adding-growing-set.scala b/test/files/run/adding-growing-set.scala
index 5903813ed1..ab94b893b2 100644
--- a/test/files/run/adding-growing-set.scala
+++ b/test/files/run/adding-growing-set.scala
@@ -1,4 +1,4 @@
-/** This will run a a loooong time if Set's builder copies a
+/** This will run a loooong time if Set's builder copies a
* complete new Set for every element.
*/
object Test {
diff --git a/test/files/run/json.scala b/test/files/run/json.scala
index 7d3b635006..a81f12564c 100644
--- a/test/files/run/json.scala
+++ b/test/files/run/json.scala
@@ -3,7 +3,7 @@ import scala.collection.immutable.TreeMap
object Test extends App {
/* This method converts parsed JSON back into real JSON notation with objects in
- * sorted-key order. Not required by the spec, but it allows us to to a stable
+ * sorted-key order. Not required by the spec, but it allows us to do a stable
* toString comparison. */
def jsonToString(in : Any) : String = in match {
case l : List[_] => "[" + l.map(jsonToString).mkString(", ") + "]"
diff --git a/test/files/run/reify_for1.check b/test/files/run/reify_for1.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/run/reify_for1.check
diff --git a/test/files/run/reify_for1.scala b/test/files/run/reify_for1.scala
new file mode 100644
index 0000000000..4b03330293
--- /dev/null
+++ b/test/files/run/reify_for1.scala
@@ -0,0 +1,16 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ val sumOfSquares1 = (for (i <- 1 to 100; if (i % 3 == 0)) yield Math.pow(i, 2)).sum
+ val sumOfSquares2 = (1 to 100).filter(_ % 3 == 0).map(Math.pow(_, 2)).sum
+ assert(sumOfSquares1 == sumOfSquares2)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/files/run/reify_varargs.check b/test/files/run/reify_varargs.check
new file mode 100644
index 0000000000..e300a570a7
--- /dev/null
+++ b/test/files/run/reify_varargs.check
@@ -0,0 +1 @@
+Message=On the fifth of August there was a disturbance in the Force on planet Hoth.
diff --git a/test/files/run/reify_varargs.scala b/test/files/run/reify_varargs.scala
new file mode 100644
index 0000000000..d38cbf2aac
--- /dev/null
+++ b/test/files/run/reify_varargs.scala
@@ -0,0 +1,17 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ val msg = java.text.MessageFormat.format(
+ "On {1} there was {2} on planet {0}.",
+ "Hoth", "the fifth of August", "a disturbance in the Force")
+ println("Message="+msg)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_addressbook.check b/test/pending/run/reify_addressbook.check
new file mode 100644
index 0000000000..4e12f87bdc
--- /dev/null
+++ b/test/pending/run/reify_addressbook.check
@@ -0,0 +1,30 @@
+<html>
+ <head>
+ <title>
+ My Address Book
+ </title>
+ <style type="text/css"> table { border-right: 1px solid #cccccc; }
+ th { background-color: #cccccc; }
+ td { border-left: 1px solid #acacac; }
+ td { border-bottom: 1px solid #acacac;
+ </style>
+ </head>
+ <body>
+ <table cellspacing="0" cellpadding="2">
+ <tr>
+ <th>Name</th>
+ <th>Age</th>
+ </tr>
+ <tr>
+ <td> Tom </td>
+ <td> 20 </td>
+ </tr><tr>
+ <td> Bob </td>
+ <td> 22 </td>
+ </tr><tr>
+ <td> James </td>
+ <td> 19 </td>
+ </tr>
+ </table>
+ </body>
+ </html>
diff --git a/test/pending/run/reify_addressbook.scala b/test/pending/run/reify_addressbook.scala
new file mode 100644
index 0000000000..225f26b75e
--- /dev/null
+++ b/test/pending/run/reify_addressbook.scala
@@ -0,0 +1,71 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ case class Person(name: String, age: Int)
+
+ /** An AddressBook takes a variable number of arguments
+ * which are accessed as a Sequence
+ */
+ class AddressBook(a: Person*) {
+ private val people: List[Person] = a.toList
+
+ /** Serialize to XHTML. Scala supports XML literals
+ * which may contain Scala expressions between braces,
+ * which are replaced by their evaluation
+ */
+ def toXHTML =
+ <table cellpadding="2" cellspacing="0">
+ <tr>
+ <th>Name</th>
+ <th>Age</th>
+ </tr>
+ { for (p <- people) yield
+ <tr>
+ <td> { p.name } </td>
+ <td> { p.age.toString() } </td>
+ </tr>
+ }
+ </table>;
+ }
+
+ /** We introduce CSS using raw strings (between triple
+ * quotes). Raw strings may contain newlines and special
+ * characters (like \) are not interpreted.
+ */
+ val header =
+ <head>
+ <title>
+ { "My Address Book" }
+ </title>
+ <style type="text/css"> {
+ """table { border-right: 1px solid #cccccc; }
+ th { background-color: #cccccc; }
+ td { border-left: 1px solid #acacac; }
+ td { border-bottom: 1px solid #acacac;"""}
+ </style>
+ </head>;
+
+ val people = new AddressBook(
+ Person("Tom", 20),
+ Person("Bob", 22),
+ Person("James", 19));
+
+ val page =
+ <html>
+ { header }
+ <body>
+ { people.toXHTML }
+ </body>
+ </html>;
+
+ println(page)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_brainf_ck.check b/test/pending/run/reify_brainf_ck.check
new file mode 100644
index 0000000000..702bb18394
--- /dev/null
+++ b/test/pending/run/reify_brainf_ck.check
@@ -0,0 +1,4 @@
+---running---
+Hello World!
+
+---done---
diff --git a/test/pending/run/reify_brainf_ck.scala b/test/pending/run/reify_brainf_ck.scala
new file mode 100644
index 0000000000..3bfb76c9ea
--- /dev/null
+++ b/test/pending/run/reify_brainf_ck.scala
@@ -0,0 +1,85 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ import scala.annotation._
+
+ trait Func[T] {
+ val zero: T
+ def inc(t: T): T
+ def dec(t: T): T
+ def in: T
+ def out(t: T): Unit
+ }
+
+ object ByteFunc extends Func[Byte] {
+ override val zero: Byte = 0
+ override def inc(t: Byte) = ((t + 1) & 0xFF).toByte
+ override def dec(t: Byte) = ((t - 1) & 0xFF).toByte
+ override def in: Byte = readByte
+ override def out(t: Byte) { print(t.toChar) }
+ }
+
+ case class Tape[T](left: List[T], cell: T, right: List[T])(implicit func: Func[T]) {
+ private def headOf(list:List[T]) = if (list.isEmpty) func.zero else list.head
+ private def tailOf(list:List[T]) = if (list.isEmpty) Nil else list.tail
+ def isZero = cell == func.zero
+ def execute(ch: Char) = (ch: @switch) match {
+ case '+' => copy(cell = func.inc(cell))
+ case '-' => copy(cell = func.dec(cell))
+ case '<' => Tape(tailOf(left), headOf(left), cell :: right)
+ case '>' => Tape(cell :: left, headOf(right), tailOf(right))
+ case '.' => func.out(cell); this
+ case ',' => copy(cell = func.in)
+ case '[' | ']' => this
+ case _ => error("Unexpected token: " + ch)
+ }
+ }
+
+ object Tape {
+ def empty[T](func: Func[T]) = Tape(Nil, func.zero, Nil)(func)
+ }
+
+ class Brainfuck[T](func:Func[T]) {
+
+ def execute(p: String) {
+ val prog = p.replaceAll("[^\\+\\-\\[\\]\\.\\,\\>\\<]", "")
+
+ @tailrec def braceMatcher(pos: Int, stack: List[Int], o2c: Map[Int, Int]): Map[Int,Int] =
+ if(pos == prog.length) o2c else (prog(pos): @switch) match {
+ case '[' => braceMatcher(pos + 1, pos :: stack, o2c)
+ case ']' => braceMatcher(pos + 1, stack.tail, o2c + (stack.head -> pos))
+ case _ => braceMatcher(pos + 1, stack, o2c)
+ }
+
+ val open2close = braceMatcher(0, Nil, Map())
+ val close2open = open2close.map(_.swap)
+
+ @tailrec def ex(pos:Int, tape:Tape[T]): Unit =
+ if(pos < prog.length) ex((prog(pos): @switch) match {
+ case '[' if tape.isZero => open2close(pos)
+ case ']' if ! tape.isZero => close2open(pos)
+ case _ => pos + 1
+ }, tape.execute(prog(pos)))
+
+ println("---running---")
+ ex(0, Tape.empty(func))
+ println("\n---done---")
+ }
+ }
+
+ val bf = new Brainfuck(ByteFunc)
+ bf.execute(""">+++++++++[<++++++++>-]<.>+++++++[<++
+ ++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]
+ <.#>+++++++++++[<+++++>-]<.>++++++++[<++
+ +>-]<.+++.------.--------.[-]>++++++++[<++++>
+ -]<+.[-]++++++++++.""")
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_callccinterpreter.check b/test/pending/run/reify_callccinterpreter.check
new file mode 100644
index 0000000000..ef8fc121df
--- /dev/null
+++ b/test/pending/run/reify_callccinterpreter.check
@@ -0,0 +1,3 @@
+42
+wrong
+5
diff --git a/test/pending/run/reify_callccinterpreter.scala b/test/pending/run/reify_callccinterpreter.scala
new file mode 100644
index 0000000000..c10f4f0b4e
--- /dev/null
+++ b/test/pending/run/reify_callccinterpreter.scala
@@ -0,0 +1,94 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ type Answer = Value;
+
+ /**
+ * A continuation monad.
+ */
+ case class M[A](in: (A => Answer) => Answer) {
+ def bind[B](k: A => M[B]) = M[B](c => in (a => k(a) in c))
+ def map[B](f: A => B): M[B] = bind(x => unitM(f(x)))
+ def flatMap[B](f: A => M[B]): M[B] = bind(f)
+ }
+
+ def unitM[A](a: A) = M[A](c => c(a))
+
+ def id[A] = (x: A) => x
+ def showM(m: M[Value]): String = (m in id).toString()
+
+ def callCC[A](h: (A => M[A]) => M[A]) =
+ M[A](c => h(a => M[A](d => c(a))) in c)
+
+ type Name = String
+
+ trait Term
+ case class Var(x: Name) extends Term
+ case class Con(n: Int) extends Term
+ case class Add(l: Term, r: Term) extends Term
+ case class Lam(x: Name, body: Term) extends Term
+ case class App(fun: Term, arg: Term) extends Term
+ case class Ccc(x: Name, t: Term) extends Term
+
+ trait Value
+ case object Wrong extends Value {
+ override def toString() = "wrong"
+ }
+ case class Num(n: Int) extends Value {
+ override def toString() = n.toString()
+ }
+ case class Fun(f: Value => M[Value]) extends Value {
+ override def toString() = "<function>"
+ }
+
+ type Environment = List[Pair[Name, Value]];
+
+ def lookup(x: Name, e: Environment): M[Value] = e match {
+ case List() => unitM(Wrong)
+ case Pair(y, b) :: e1 => if (x == y) unitM(b) else lookup(x, e1)
+ }
+
+ def add(a: Value, b: Value): M[Value] = Pair(a, b) match {
+ case Pair(Num(m), Num(n)) => unitM(Num(m + n))
+ case _ => unitM(Wrong)
+ }
+
+ def apply(a: Value, b: Value): M[Value] = a match {
+ case Fun(k) => k(b)
+ case _ => unitM(Wrong)
+ }
+
+ def interp(t: Term, e: Environment): M[Value] = t match {
+ case Var(x) => lookup(x, e)
+ case Con(n) => unitM(Num(n))
+ case Add(l, r) => for (a <- interp(l, e);
+ b <- interp(r, e);
+ c <- add(a, b))
+ yield c
+ case Lam(x, t) => unitM(Fun(a => interp(t, Pair(x, a) :: e)))
+ case App(f, t) => for (a <- interp(f, e);
+ b <- interp(t, e);
+ c <- apply(a, b))
+ yield c
+ case Ccc(x, t) => callCC(k => interp(t, Pair(x, Fun(k)) :: e))
+ }
+
+ def test(t: Term): String = showM(interp(t, List()))
+
+ val term0 = App(Lam("x", Add(Var("x"), Var("x"))), Add(Con(10), Con(11)))
+ val term1 = App(Con(1), Con(2))
+ val term2 = Add(Con(1), Ccc("k", Add(Con(2), App(Var("k"), Con(4)))))
+
+ println(test(term0))
+ println(test(term1))
+ println(test(term2))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_complex.check b/test/pending/run/reify_complex.check
new file mode 100644
index 0000000000..7df35e33a0
--- /dev/null
+++ b/test/pending/run/reify_complex.check
@@ -0,0 +1 @@
+3.0+4.0*i
diff --git a/test/pending/run/reify_complex.scala b/test/pending/run/reify_complex.scala
new file mode 100644
index 0000000000..aae4d558cf
--- /dev/null
+++ b/test/pending/run/reify_complex.scala
@@ -0,0 +1,31 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ class Complex(val re: Double, val im: Double) {
+ def + (that: Complex) =
+ new Complex(re + that.re, im + that.im)
+ def - (that: Complex) =
+ new Complex(re - that.re, im - that.im)
+ def * (that: Complex) =
+ new Complex(re * that.re - im * that.im,
+ re * that.im + im * that.re)
+ def / (that: Complex) = {
+ val denom = that.re * that.re + that.im * that.im
+ new Complex((re * that.re + im * that.im) / denom,
+ (im * that.re - re * that.im) / denom)
+ }
+ override def toString =
+ re + (if (im < 0) "-" + (-im) else "+" + im) + "*i"
+ }
+ val x = new Complex(2, 1); val y = new Complex(1, 3)
+ println(x + y)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_extendbuiltins.check b/test/pending/run/reify_extendbuiltins.check
new file mode 100644
index 0000000000..a48033a30d
--- /dev/null
+++ b/test/pending/run/reify_extendbuiltins.check
@@ -0,0 +1 @@
+10! = 3628800
diff --git a/test/pending/run/reify_extendbuiltins.scala b/test/pending/run/reify_extendbuiltins.scala
new file mode 100644
index 0000000000..57acd699ff
--- /dev/null
+++ b/test/pending/run/reify_extendbuiltins.scala
@@ -0,0 +1,21 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ def fact(n: Int): BigInt =
+ if (n == 0) 1 else fact(n-1) * n
+ class Factorizer(n: Int) {
+ def ! = fact(n)
+ }
+ implicit def int2fact(n: Int) = new Factorizer(n)
+
+ println("10! = " + (10!))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_fors.check b/test/pending/run/reify_fors.check
new file mode 100644
index 0000000000..eefddedc20
--- /dev/null
+++ b/test/pending/run/reify_fors.check
@@ -0,0 +1,5 @@
+Persons over 20: John Richard
+divisors(34) = List(1, 2, 17, 34)
+findNums(15) = (4,1) (5,2) (6,1) (7,4) (8,3) (8,5) (9,2) (9,4) (10,1) (10,3) (10,7) (11,2) (11,6) (11,8) (12,1) (12,5) (12,7) (13,4) (13,6) (13,10) (14,3) (14,5) (14,9)
+average(List(3.5, 5.0, 4.5)) = 4.333333333333333
+scalProd(List(3.5, 5.0, 4.5), List(2.0, 1.0, 3.0)) = 25.5
diff --git a/test/pending/run/reify_fors.scala b/test/pending/run/reify_fors.scala
new file mode 100644
index 0000000000..f3556514a9
--- /dev/null
+++ b/test/pending/run/reify_fors.scala
@@ -0,0 +1,107 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ object Persons {
+ /** A list of persons. To create a list, we use Predef.List
+ * which takes a variable number of arguments and constructs
+ * a list out of them.
+ */
+ val persons = List(
+ new Person("Bob", 17),
+ new Person("John", 40),
+ new Person("Richard", 68)
+ )
+
+ /** A Person class. 'val' constructor parameters become
+ * public members of the class.
+ */
+ class Person(val name: String, val age: Int)
+
+ /** Return an iterator over persons that are older than 20.
+ */
+ def olderThan20(xs: Seq[Person]): Iterator[String] =
+ olderThan20(xs.elements)
+
+ /** Return an iterator over persons older than 20, given
+ * an iterator over persons.
+ */
+ def olderThan20(xs: Iterator[Person]): Iterator[String] = {
+
+ // The first expression is called a 'generator' and makes
+ // 'p' take values from 'xs'. The second expression is
+ // called a 'filter' and it is a boolean expression which
+ // selects only persons older than 20. There can be more than
+ // one generator and filter. The 'yield' expression is evaluated
+ // for each 'p' which satisfies the filters and used to assemble
+ // the resulting iterator
+ for (p <- xs if p.age > 20) yield p.name
+ }
+ }
+
+ /** Some functions over lists of numbers which demonstrate
+ * the use of for comprehensions.
+ */
+ object Numeric {
+
+ /** Return the divisors of n. */
+ def divisors(n: Int): List[Int] =
+ for (i <- List.range(1, n+1) if n % i == 0) yield i
+
+ /** Is 'n' a prime number? */
+ def isPrime(n: Int) = divisors(n).length == 2
+
+ /** Return pairs of numbers whose sum is prime. */
+ def findNums(n: Int): Iterable[(Int, Int)] = {
+
+ // a for comprehension using two generators
+ for (i <- 1 until n;
+ j <- 1 until (i-1);
+ if isPrime(i + j)) yield (i, j)
+ }
+
+ /** Return the sum of the elements of 'xs'. */
+ def sum(xs: List[Double]): Double =
+ xs.foldLeft(0.0) { (x, y) => x + y }
+
+ /** Return the sum of pairwise product of the two lists. */
+ def scalProd(xs: List[Double], ys: List[Double]) =
+ sum(for((x, y) <- xs zip ys) yield x * y);
+
+ /** Remove duplicate elements in 'xs'. */
+ def removeDuplicates[A](xs: List[A]): List[A] =
+ if (xs.isEmpty)
+ xs
+ else
+ xs.head :: removeDuplicates(for (x <- xs.tail if x != xs.head) yield x)
+ }
+
+ // import all members of object 'persons' in the current scope
+ import Persons._
+
+ print("Persons over 20:")
+ olderThan20(persons) foreach { x => print(" " + x) }
+ println
+
+ import Numeric._
+
+ println("divisors(34) = " + divisors(34))
+
+ print("findNums(15) =")
+ findNums(15) foreach { x => print(" " + x) }
+ println
+
+ val xs = List(3.5, 5.0, 4.5)
+ println("average(" + xs + ") = " + sum(xs) / xs.length)
+
+ val ys = List(2.0, 1.0, 3.0)
+ println("scalProd(" + xs + ", " + ys +") = " + scalProd(xs, ys))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_gadts.check b/test/pending/run/reify_gadts.check
new file mode 100644
index 0000000000..d81cc0710e
--- /dev/null
+++ b/test/pending/run/reify_gadts.check
@@ -0,0 +1 @@
+42
diff --git a/test/pending/run/reify_gadts.scala b/test/pending/run/reify_gadts.scala
new file mode 100644
index 0000000000..7077de735c
--- /dev/null
+++ b/test/pending/run/reify_gadts.scala
@@ -0,0 +1,45 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ /* The syntax tree of a toy language */
+ abstract class Term[T]
+
+ /* An integer literal */
+ case class Lit(x: Int) extends Term[Int]
+
+ /* Successor of a number */
+ case class Succ(t: Term[Int]) extends Term[Int]
+
+ /* Is 't' equal to zero? */
+ case class IsZero(t: Term[Int]) extends Term[Boolean]
+
+ /* An 'if' expression. */
+ case class If[T](c: Term[Boolean],
+ t1: Term[T],
+ t2: Term[T]) extends Term[T]
+
+ /** A type-safe eval function. The right-hand sides can
+ * make use of the fact that 'T' is a more precise type,
+ * constraint by the pattern type.
+ */
+ def eval[T](t: Term[T]): T = t match {
+ case Lit(n) => n
+
+ // the right hand side makes use of the fact
+ // that T = Int and so it can use '+'
+ case Succ(u) => eval(u) + 1
+ case IsZero(u) => eval(u) == 0
+ case If(c, u1, u2) => eval(if (eval(c)) u1 else u2)
+ }
+ println(
+ eval(If(IsZero(Lit(1)), Lit(41), Succ(Lit(41)))))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_implicits.check b/test/pending/run/reify_implicits.check
new file mode 100644
index 0000000000..e3aeb20f6b
--- /dev/null
+++ b/test/pending/run/reify_implicits.check
@@ -0,0 +1 @@
+x = List(1, 2, 3, 4)
diff --git a/test/pending/run/reify_implicits.scala b/test/pending/run/reify_implicits.scala
new file mode 100644
index 0000000000..a15cef9c97
--- /dev/null
+++ b/test/pending/run/reify_implicits.scala
@@ -0,0 +1,21 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ implicit def arrayWrapper[A : ClassManifest](x: Array[A]) =
+ new {
+ def sort(p: (A, A) => Boolean) = {
+ util.Sorting.stableSort(x, p); x
+ }
+ }
+ val x = Array(2, 3, 1, 4)
+ println("x = "+ x.sort((x: Int, y: Int) => x < y).toList)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_lazyevaluation.check b/test/pending/run/reify_lazyevaluation.check
new file mode 100644
index 0000000000..1c7f96cd96
--- /dev/null
+++ b/test/pending/run/reify_lazyevaluation.check
@@ -0,0 +1,8 @@
+s = Susp(?)
+evaluating...
+s() = 3
+s = Susp(3)
+2 + s = 5
+sl2 = Susp(?)
+sl2() = Some(3)
+sl2 = Susp(Some(3))
diff --git a/test/pending/run/reify_lazyevaluation.scala b/test/pending/run/reify_lazyevaluation.scala
new file mode 100644
index 0000000000..f38af76751
--- /dev/null
+++ b/test/pending/run/reify_lazyevaluation.scala
@@ -0,0 +1,65 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ object lazyLib {
+
+ /** Delay the evaluation of an expression until it is needed. */
+ def delay[A](value: => A): Susp[A] = new SuspImpl[A](value)
+
+ /** Get the value of a delayed expression. */
+ implicit def force[A](s: Susp[A]): A = s()
+
+ /**
+ * Data type of suspended computations. (The name froms from ML.)
+ */
+ abstract class Susp[+A] extends Function0[A]
+
+ /**
+ * Implementation of suspended computations, separated from the
+ * abstract class so that the type parameter can be invariant.
+ */
+ class SuspImpl[A](lazyValue: => A) extends Susp[A] {
+ private var maybeValue: Option[A] = None
+
+ override def apply() = maybeValue match {
+ case None =>
+ val value = lazyValue
+ maybeValue = Some(value)
+ value
+ case Some(value) =>
+ value
+ }
+
+ override def toString() = maybeValue match {
+ case None => "Susp(?)"
+ case Some(value) => "Susp(" + value + ")"
+ }
+ }
+ }
+
+ import lazyLib._
+
+ val s: Susp[Int] = delay { println("evaluating..."); 3 }
+
+ println("s = " + s) // show that s is unevaluated
+ println("s() = " + s()) // evaluate s
+ println("s = " + s) // show that the value is saved
+ println("2 + s = " + (2 + s)) // implicit call to force()
+
+ val sl = delay { Some(3) }
+ val sl1: Susp[Some[Int]] = sl
+ val sl2: Susp[Option[Int]] = sl1 // the type is covariant
+
+ println("sl2 = " + sl2)
+ println("sl2() = " + sl2())
+ println("sl2 = " + sl2)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_maps.check b/test/pending/run/reify_maps.check
new file mode 100644
index 0000000000..08cbbb1359
--- /dev/null
+++ b/test/pending/run/reify_maps.check
@@ -0,0 +1,4 @@
+red has code: 16711680
+Unknown color: green
+Unknown color: blue
+turquoise has code: 65535
diff --git a/test/pending/run/reify_maps.scala b/test/pending/run/reify_maps.scala
new file mode 100644
index 0000000000..589b28d049
--- /dev/null
+++ b/test/pending/run/reify_maps.scala
@@ -0,0 +1,26 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ val colors = Map("red" -> 0xFF0000,
+ "turquoise" -> 0x00FFFF,
+ "black" -> 0x000000,
+ "orange" -> 0xFF8040,
+ "brown" -> 0x804000)
+ for (name <- List("red", "green", "blue", "turquoise")) println(
+ colors.get(name) match {
+ case Some(code) =>
+ name + " has code: " + code
+ case None =>
+ "Unknown color: " + name
+ }
+ )
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_properties.check b/test/pending/run/reify_properties.check
new file mode 100644
index 0000000000..d769bea4b0
--- /dev/null
+++ b/test/pending/run/reify_properties.check
@@ -0,0 +1,2 @@
+user1: MR. ROBERT <noname>
+user2: MR. BOB KUZ
diff --git a/test/pending/run/reify_properties.scala b/test/pending/run/reify_properties.scala
new file mode 100644
index 0000000000..2115a96715
--- /dev/null
+++ b/test/pending/run/reify_properties.scala
@@ -0,0 +1,63 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ /** A mutable property whose getter and setter may be customized. */
+ case class Property[T](init: T) {
+ private var value: T = init
+
+ /** The getter function, defaults to identity. */
+ private var setter: T => T = identity[T]
+
+ /** The setter function, defaults to identity. */
+ private var getter: T => T = identity[T]
+
+ /** Retrive the value held in this property. */
+ def apply(): T = getter(value)
+
+ /** Update the value held in this property, through the setter. */
+ def update(newValue: T) = value = setter(newValue)
+
+ /** Change the getter. */
+ def get(newGetter: T => T) = { getter = newGetter; this }
+
+ /** Change the setter */
+ def set(newSetter: T => T) = { setter = newSetter; this }
+ }
+
+ class User {
+ // Create a property with custom getter and setter
+ val firstname = Property("")
+ .get { v => v.toUpperCase() }
+ .set { v => "Mr. " + v }
+ val lastname = Property("<noname>")
+
+ /** Scala provides syntactic sugar for calling 'apply'. Simply
+ * adding a list of arguments between parenthesis (in this case,
+ * an empty list) is translated to a call to 'apply' with those
+ * arguments.
+ */
+ override def toString() = firstname() + " " + lastname()
+ }
+
+ val user1 = new User
+
+ // Syntactic sugar for 'update': an assignment is translated to a
+ // call to method 'update'
+ user1.firstname() = "Robert"
+
+ val user2 = new User
+ user2.firstname() = "bob"
+ user2.lastname() = "KUZ"
+
+ println("user1: " + user1)
+ println("user2: " + user2)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_simpleinterpreter.check b/test/pending/run/reify_simpleinterpreter.check
new file mode 100644
index 0000000000..4344dc9009
--- /dev/null
+++ b/test/pending/run/reify_simpleinterpreter.check
@@ -0,0 +1,2 @@
+42
+wrong
diff --git a/test/pending/run/reify_simpleinterpreter.scala b/test/pending/run/reify_simpleinterpreter.scala
new file mode 100644
index 0000000000..b39f5583bb
--- /dev/null
+++ b/test/pending/run/reify_simpleinterpreter.scala
@@ -0,0 +1,82 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ case class M[A](value: A) {
+ def bind[B](k: A => M[B]): M[B] = k(value)
+ def map[B](f: A => B): M[B] = bind(x => unitM(f(x)))
+ def flatMap[B](f: A => M[B]): M[B] = bind(f)
+ }
+
+ def unitM[A](a: A): M[A] = M(a)
+
+ def showM(m: M[Value]): String = m.value.toString();
+
+ type Name = String
+
+ trait Term;
+ case class Var(x: Name) extends Term
+ case class Con(n: Int) extends Term
+ case class Add(l: Term, r: Term) extends Term
+ case class Lam(x: Name, body: Term) extends Term
+ case class App(fun: Term, arg: Term) extends Term
+
+ trait Value
+ case object Wrong extends Value {
+ override def toString() = "wrong"
+ }
+ case class Num(n: Int) extends Value {
+ override def toString() = n.toString()
+ }
+ case class Fun(f: Value => M[Value]) extends Value {
+ override def toString() = "<function>"
+ }
+
+ type Environment = List[Pair[Name, Value]]
+
+ def lookup(x: Name, e: Environment): M[Value] = e match {
+ case List() => unitM(Wrong)
+ case Pair(y, b) :: e1 => if (x == y) unitM(b) else lookup(x, e1)
+ }
+
+ def add(a: Value, b: Value): M[Value] = Pair(a, b) match {
+ case Pair(Num(m), Num(n)) => unitM(Num(m + n))
+ case _ => unitM(Wrong)
+ }
+
+ def apply(a: Value, b: Value): M[Value] = a match {
+ case Fun(k) => k(b)
+ case _ => unitM(Wrong)
+ }
+
+ def interp(t: Term, e: Environment): M[Value] = t match {
+ case Var(x) => lookup(x, e)
+ case Con(n) => unitM(Num(n))
+ case Add(l, r) => for (a <- interp(l, e);
+ b <- interp(r, e);
+ c <- add(a, b))
+ yield c
+ case Lam(x, t) => unitM(Fun(a => interp(t, Pair(x, a) :: e)))
+ case App(f, t) => for (a <- interp(f, e);
+ b <- interp(t, e);
+ c <- apply(a, b))
+ yield c
+ }
+
+ def test(t: Term): String =
+ showM(interp(t, List()))
+
+ val term0 = App(Lam("x", Add(Var("x"), Var("x"))), Add(Con(10), Con(11)))
+ val term1 = App(Con(1), Con(2))
+
+ println(test(term0))
+ println(test(term1))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_sort.check b/test/pending/run/reify_sort.check
new file mode 100644
index 0000000000..375536cc29
--- /dev/null
+++ b/test/pending/run/reify_sort.check
@@ -0,0 +1,2 @@
+[6,2,8,5,1]
+[1,2,5,6,8]
diff --git a/test/pending/run/reify_sort.scala b/test/pending/run/reify_sort.scala
new file mode 100644
index 0000000000..42991fe5d2
--- /dev/null
+++ b/test/pending/run/reify_sort.scala
@@ -0,0 +1,57 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ /** Nested methods can use and even update everything
+ * visible in their scope (including local variables or
+ * arguments of enclosing methods).
+ */
+ def sort(a: Array[Int]) {
+
+ def swap(i: Int, j: Int) {
+ val t = a(i); a(i) = a(j); a(j) = t
+ }
+
+ def sort1(l: Int, r: Int) {
+ val pivot = a((l + r) / 2)
+ var i = l
+ var j = r
+ while (i <= j) {
+ while (a(i) < pivot) i += 1
+ while (a(j) > pivot) j -= 1
+ if (i <= j) {
+ swap(i, j)
+ i += 1
+ j -= 1
+ }
+ }
+ if (l < j) sort1(l, j)
+ if (j < r) sort1(i, r)
+ }
+
+ if (a.length > 0)
+ sort1(0, a.length - 1)
+ }
+
+ def println(ar: Array[Int]) {
+ def print1 = {
+ def iter(i: Int): String =
+ ar(i) + (if (i < ar.length-1) "," + iter(i+1) else "")
+ if (ar.length == 0) "" else iter(0)
+ }
+ Console.println("[" + print1 + "]")
+ }
+
+ val ar = Array(6, 2, 8, 5, 1)
+ println(ar)
+ sort(ar)
+ println(ar)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_sort1.check b/test/pending/run/reify_sort1.check
new file mode 100644
index 0000000000..0d30805141
--- /dev/null
+++ b/test/pending/run/reify_sort1.check
@@ -0,0 +1,2 @@
+List(6, 2, 8, 5, 1)
+List(1, 2, 5, 6, 8)
diff --git a/test/pending/run/reify_sort1.scala b/test/pending/run/reify_sort1.scala
new file mode 100644
index 0000000000..42f4c824a5
--- /dev/null
+++ b/test/pending/run/reify_sort1.scala
@@ -0,0 +1,27 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ def sort(a: List[Int]): List[Int] = {
+ if (a.length < 2)
+ a
+ else {
+ val pivot = a(a.length / 2)
+ sort(a.filter(_ < pivot)) :::
+ a.filter(_ == pivot) :::
+ sort(a.filter(_ > pivot))
+ }
+ }
+
+ val xs = List(6, 2, 8, 5, 1)
+ println(xs)
+ println(sort(xs))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/reify_timeofday.check b/test/pending/run/reify_timeofday.check
new file mode 100644
index 0000000000..3fd3b76a62
--- /dev/null
+++ b/test/pending/run/reify_timeofday.check
@@ -0,0 +1 @@
+DateError
diff --git a/test/pending/run/reify_timeofday.scala b/test/pending/run/reify_timeofday.scala
new file mode 100644
index 0000000000..6bd11b0d30
--- /dev/null
+++ b/test/pending/run/reify_timeofday.scala
@@ -0,0 +1,48 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ class DateError extends Exception
+
+ /** Simulating properties in Scala
+ * (example 4.2.1 in ScalaReference.pdf)
+ */
+ class TimeOfDayVar {
+ private var h, m, s: Int = 0
+
+ def hours = h
+
+ /** A method 'ident_=' is a setter for 'ident'. 'code.ident = ...' will
+ * be translated to a call to 'ident_='
+ */
+ def hours_= (h: Int) =
+ if (0 <= h && h < 24) this.h = h
+ else throw new DateError()
+
+ def minutes = m
+ def minutes_= (m: Int) =
+ if (0 <= m && m < 60) this.m = m
+ else throw new DateError()
+
+ def seconds = s
+ def seconds_= (s: Int) =
+ if (0 <= s && s < 60) this.s = s
+ else throw new DateError()
+ }
+
+ val d = new TimeOfDayVar
+ d.hours = 8; d.minutes = 30; d.seconds = 0
+ try { d.hours = 25 // throws a DateError exception
+ } catch {
+ case de: DateError => println("DateError")
+ case e: Exception => println("Exception")
+ }
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5229_1_nolift.scala b/test/pending/run/t5229_1_nolift.scala
new file mode 100644
index 0000000000..33855d2e4f
--- /dev/null
+++ b/test/pending/run/t5229_1_nolift.scala
@@ -0,0 +1 @@
+object C
diff --git a/test/pending/run/t5271_1.check b/test/pending/run/t5271_1.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/pending/run/t5271_1.check
diff --git a/test/pending/run/t5271_1.scala b/test/pending/run/t5271_1.scala
new file mode 100644
index 0000000000..5f10e64528
--- /dev/null
+++ b/test/pending/run/t5271_1.scala
@@ -0,0 +1,14 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ case class C(foo: Int, bar: Int)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5271_2.check b/test/pending/run/t5271_2.check
new file mode 100644
index 0000000000..b8626c4cff
--- /dev/null
+++ b/test/pending/run/t5271_2.check
@@ -0,0 +1 @@
+4
diff --git a/test/pending/run/t5271_2.scala b/test/pending/run/t5271_2.scala
new file mode 100644
index 0000000000..71967c04ed
--- /dev/null
+++ b/test/pending/run/t5271_2.scala
@@ -0,0 +1,16 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ case class C(foo: Int, bar: Int)
+ val c = C(2, 2)
+ println(c.foo * c.bar)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5272.check b/test/pending/run/t5272.check
new file mode 100644
index 0000000000..dcf02b2fb6
--- /dev/null
+++ b/test/pending/run/t5272.check
@@ -0,0 +1 @@
+okay
diff --git a/test/pending/run/t5272.scala b/test/pending/run/t5272.scala
new file mode 100644
index 0000000000..3f44d05fb3
--- /dev/null
+++ b/test/pending/run/t5272.scala
@@ -0,0 +1,17 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ 2 match {
+ case 2 => println("okay")
+ case _ => println("not okay")
+ }
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5273_1.check b/test/pending/run/t5273_1.check
new file mode 100644
index 0000000000..c551774ca5
--- /dev/null
+++ b/test/pending/run/t5273_1.check
@@ -0,0 +1 @@
+name = American Dollar, shortname = USD, value = 2,8567
diff --git a/test/pending/run/t5273_1.scala b/test/pending/run/t5273_1.scala
new file mode 100644
index 0000000000..8b75084463
--- /dev/null
+++ b/test/pending/run/t5273_1.scala
@@ -0,0 +1,16 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ val RegexParser = """(.*) \d+([A-Z]+) \| (.*) \|.*""".r
+ val RegexParser(name, shortname, value) = "American Dollar 1USD | 2,8567 | sometext"
+ println("name = %s, shortname = %s, value = %s".format(name, shortname, value))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5273_2.check b/test/pending/run/t5273_2.check
new file mode 100644
index 0000000000..0cfbf08886
--- /dev/null
+++ b/test/pending/run/t5273_2.check
@@ -0,0 +1 @@
+2
diff --git a/test/pending/run/t5273_2.scala b/test/pending/run/t5273_2.scala
new file mode 100644
index 0000000000..1175881c9f
--- /dev/null
+++ b/test/pending/run/t5273_2.scala
@@ -0,0 +1,17 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ List(1, 2, 3) match {
+ case foo :: bar :: _ => println(foo * bar)
+ case _ => println("this is getting out of hand!")
+ }
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5274_1.check b/test/pending/run/t5274_1.check
new file mode 100644
index 0000000000..fca8bc3d3e
--- /dev/null
+++ b/test/pending/run/t5274_1.check
@@ -0,0 +1,3 @@
+50! = 30414093201713378043612608166064768844377641568960512000000000000
+49! = 608281864034267560872252163321295376887552831379210240000000000
+50!/49! = 50
diff --git a/test/pending/run/t5274_1.scala b/test/pending/run/t5274_1.scala
new file mode 100644
index 0000000000..c501172518
--- /dev/null
+++ b/test/pending/run/t5274_1.scala
@@ -0,0 +1,20 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ def factorial(n: BigInt): BigInt =
+ if (n == 0) 1 else n * factorial(n-1)
+
+ val f50 = factorial(50); val f49 = factorial(49)
+ println("50! = " + f50)
+ println("49! = " + f49)
+ println("50!/49! = " + (f50 / f49))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5274_2.check b/test/pending/run/t5274_2.check
new file mode 100644
index 0000000000..375536cc29
--- /dev/null
+++ b/test/pending/run/t5274_2.check
@@ -0,0 +1,2 @@
+[6,2,8,5,1]
+[1,2,5,6,8]
diff --git a/test/pending/run/t5274_2.scala b/test/pending/run/t5274_2.scala
new file mode 100644
index 0000000000..42991fe5d2
--- /dev/null
+++ b/test/pending/run/t5274_2.scala
@@ -0,0 +1,57 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ /** Nested methods can use and even update everything
+ * visible in their scope (including local variables or
+ * arguments of enclosing methods).
+ */
+ def sort(a: Array[Int]) {
+
+ def swap(i: Int, j: Int) {
+ val t = a(i); a(i) = a(j); a(j) = t
+ }
+
+ def sort1(l: Int, r: Int) {
+ val pivot = a((l + r) / 2)
+ var i = l
+ var j = r
+ while (i <= j) {
+ while (a(i) < pivot) i += 1
+ while (a(j) > pivot) j -= 1
+ if (i <= j) {
+ swap(i, j)
+ i += 1
+ j -= 1
+ }
+ }
+ if (l < j) sort1(l, j)
+ if (j < r) sort1(i, r)
+ }
+
+ if (a.length > 0)
+ sort1(0, a.length - 1)
+ }
+
+ def println(ar: Array[Int]) {
+ def print1 = {
+ def iter(i: Int): String =
+ ar(i) + (if (i < ar.length-1) "," + iter(i+1) else "")
+ if (ar.length == 0) "" else iter(0)
+ }
+ Console.println("[" + print1 + "]")
+ }
+
+ val ar = Array(6, 2, 8, 5, 1)
+ println(ar)
+ sort(ar)
+ println(ar)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5275.check b/test/pending/run/t5275.check
new file mode 100644
index 0000000000..0cfbf08886
--- /dev/null
+++ b/test/pending/run/t5275.check
@@ -0,0 +1 @@
+2
diff --git a/test/pending/run/t5275.scala b/test/pending/run/t5275.scala
new file mode 100644
index 0000000000..d419834ded
--- /dev/null
+++ b/test/pending/run/t5275.scala
@@ -0,0 +1,15 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ class C(val foo: Int)
+ println(new C(2).foo)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5276.check b/test/pending/run/t5276.check
new file mode 100644
index 0000000000..0cfbf08886
--- /dev/null
+++ b/test/pending/run/t5276.check
@@ -0,0 +1 @@
+2
diff --git a/test/pending/run/t5276.scala b/test/pending/run/t5276.scala
new file mode 100644
index 0000000000..432fdb91e4
--- /dev/null
+++ b/test/pending/run/t5276.scala
@@ -0,0 +1,15 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ lazy x = 2
+ println(x)
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5277_1.check b/test/pending/run/t5277_1.check
new file mode 100644
index 0000000000..a48033a30d
--- /dev/null
+++ b/test/pending/run/t5277_1.check
@@ -0,0 +1 @@
+10! = 3628800
diff --git a/test/pending/run/t5277_1.scala b/test/pending/run/t5277_1.scala
new file mode 100644
index 0000000000..57acd699ff
--- /dev/null
+++ b/test/pending/run/t5277_1.scala
@@ -0,0 +1,21 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ def fact(n: Int): BigInt =
+ if (n == 0) 1 else fact(n-1) * n
+ class Factorizer(n: Int) {
+ def ! = fact(n)
+ }
+ implicit def int2fact(n: Int) = new Factorizer(n)
+
+ println("10! = " + (10!))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5277_2.check b/test/pending/run/t5277_2.check
new file mode 100644
index 0000000000..5f1d0ecea5
--- /dev/null
+++ b/test/pending/run/t5277_2.check
@@ -0,0 +1,2 @@
+2
+1
diff --git a/test/pending/run/t5277_2.scala b/test/pending/run/t5277_2.scala
new file mode 100644
index 0000000000..67b6b000bc
--- /dev/null
+++ b/test/pending/run/t5277_2.scala
@@ -0,0 +1,18 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ def p(implicit i: Int) = print(i)
+ implicit val v = 2
+
+ println(p)
+ println(p(1))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/pending/run/t5279.check b/test/pending/run/t5279.check
new file mode 100644
index 0000000000..f599e28b8a
--- /dev/null
+++ b/test/pending/run/t5279.check
@@ -0,0 +1 @@
+10
diff --git a/test/pending/run/t5279.scala b/test/pending/run/t5279.scala
new file mode 100644
index 0000000000..39e7dd2c66
--- /dev/null
+++ b/test/pending/run/t5279.scala
@@ -0,0 +1,14 @@
+import scala.tools.nsc.reporters._
+import scala.tools.nsc.Settings
+import reflect.runtime.Mirror.ToolBox
+
+object Test extends App {
+ val code = scala.reflect.Code.lift{
+ println(new Integer(10))
+ };
+
+ val reporter = new ConsoleReporter(new Settings)
+ val toolbox = new ToolBox(reporter)
+ val ttree = toolbox.typeCheck(code.tree)
+ toolbox.runExpr(ttree)
+}
diff --git a/test/scaladoc/scala/html/HtmlFactoryTest.scala b/test/scaladoc/scala/html/HtmlFactoryTest.scala
index adad3b6053..c8dad4cf48 100644
--- a/test/scaladoc/scala/html/HtmlFactoryTest.scala
+++ b/test/scaladoc/scala/html/HtmlFactoryTest.scala
@@ -141,8 +141,8 @@ object Test extends Properties("HtmlFactory") {
createTemplate("Trac4372.scala") match {
case node: scala.xml.Node => {
val html = node.toString
- html.contains("<span class=\"name\" title=\"gt4s: $plus$colon\">+:</span>\n") &&
- html.contains("<span class=\"name\" title=\"gt4s: $minus$colon\">-:</span>\n") &&
+ html.contains("<span class=\"name\" title=\"gt4s: $plus$colon\">+:</span>") &&
+ html.contains("<span class=\"name\" title=\"gt4s: $minus$colon\">-:</span>") &&
html.contains("""<span class="params">(<span name="n">n: <span name="scala.Int" class="extype">Int</span></span>)</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span>""")
}
case _ => false
@@ -247,11 +247,11 @@ object Test extends Properties("HtmlFactory") {
val lines = """
|type Bar = AnyRef { type Dingus <: T forSome { type T <: String } }
|type Foo = AnyRef { ... /* 3 definitions in type refinement */ }
- |def g (x: T forSome { type T <: String }): String
- |def h (x: Float): AnyRef { def quux(x: Int,y: Int): Int }
- |def hh (x: Float): AnyRef { def quux(x: Int,y: Int): Int }
- |def j (x: Int): Bar
- |def k (): AnyRef { type Dingus <: T forSome { type T <: String } }
+ |def g(x: T forSome { type T <: String }): String
+ |def h(x: Float): AnyRef { def quux(x: Int,y: Int): Int }
+ |def hh(x: Float): AnyRef { def quux(x: Int,y: Int): Int }
+ |def j(x: Int): Bar
+ |def k(): AnyRef { type Dingus <: T forSome { type T <: String } }
""".stripMargin.trim.lines map (_.trim)
files("RefinementAndExistentials.html") match {
diff --git a/tools/get-scala-revision b/tools/get-scala-revision
index 23b216aa2b..e8597844cc 100755
--- a/tools/get-scala-revision
+++ b/tools/get-scala-revision
@@ -5,8 +5,15 @@
#
# If no dir is given, current working dir is used.
-[[ -n "$1" ]] && cd "$1"
+[ -n "$1" ] && cd "$1"
# dev should be a tag at the merge-base of master and the
# most recent release.
-git describe head --abbrev=7 --match dev
+if [ -z $(git tag -l dev) ]; then
+ # no dev tag available - this will generate dev-g<sha>
+ echo "dev-g$(git describe HEAD --abbrev=7 --always)"
+else
+ # dev tag exists - this generates dev-NNNN-g<sha>
+ # where NNNN is the number of commits since dev.
+ git describe HEAD --abbrev=7 --match dev
+fi
diff --git a/tools/get-scala-revision.bat b/tools/get-scala-revision.bat
index ed3ade8a3e..f4dc24b71f 100644
--- a/tools/get-scala-revision.bat
+++ b/tools/get-scala-revision.bat
@@ -15,8 +15,7 @@ if "%*"=="" (
cd %_DIR%
if exist .git\NUL (
- git describe head --abbrev=7 --match dev
- echo 0
+ git describe HEAD --abbrev=7 --match dev
)
:end