diff options
25 files changed, 79 insertions, 292 deletions
diff --git a/.gitignore b/.gitignore index 84c048a73c..e60505f663 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,43 @@ +# +# Are you tempted to edit this file? +# +# First consider if the changes make sense for all, +# or if they are specific to your workflow/system. +# If it is the latter, you can augment this list with +# entries in .git/info/excludes +# +# see also test/files/.gitignore +# + +*.jar +*~ + +build.properties + +# target directories for ant build /build/ +/dists/ + +# other +/out/ +/bin/ +/sandbox/ + +# eclipse, intellij +/.classpath +/.project +/src/intellij/*.iml +/src/intellij/*.ipr +/src/intellij/*.iws +/.cache +/.idea +/.settings + +# bak files produced by ./cleanup-commit +*.bak + +# Standard symbolic link to build/quick/bin +qbin + +# Mac specific, but that is common enough a dev platform to warrant inclusion. +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000000..a273cfb544 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +This is the repository for the [Scala Programming Language](http://www.scala-lang.org). + + - [Report an issue](https://issues.scala-lang.org); + - [Read about the development of the compiler and the standard library](http://docs.scala-lang.org/scala/); + - [Check our Jenkins status](https://scala-webapps.epfl.ch/jenkins/); + - [Download the latest nightly](https://scala-webapps.epfl.ch/jenkins/job/scala-nightly-main-master/ws/dists/latest/*zip*/latest.zip); + - ... and contribute right here! Please, first read our [policy](http://docs.scala-lang.org/scala/pull-request-policy.html), +and [sign the contributor's license agreement](http://typesafe.com/contribute/cla/scala). diff --git a/README.rst b/README.rst deleted file mode 100644 index 004d7b63d0..0000000000 --- a/README.rst +++ /dev/null @@ -1,206 +0,0 @@ -################################################################################ - THE SCALA REPOSITORY -################################################################################ - -This document describes the Scala core (core library and compiler) repository -and how to build it. For information about Scala as a language, you can visit -the web site http://www.scala-lang.org/ - -Part I. The repository layout --------------------------------------------------------------------------------- - -Follows the file layout of the Scala repository. Files marked with a † are not -part of the repository but are either automatically generated by the -build script or user-created if needed. This is not a complete listing. :: - scala/ - +--build/ Build products output directory for ant. - +--build.xml The main Ant build script. - +--dist/ The destination folder for Scala distributions. - +--docs/ Documentation and sample code. - +--lib/ Pre-compiled libraries for the build. - | +--scala-compiler.jar The stable reference ('starr') compiler jar - | +--scala-library.jar The stable reference ('starr') library jar - | +--scala-library-src.jar A snapshot of the source used to build starr. - | ---ant/ Support libraries for ant. - +--pull-binary-libs.sh Pulls binary artifacts from remote repository. - +--push-binary-libs.sh Pushes new binary artifacts and creates sha. - +--README.rst The file you are currently reading. - +--src/ All the source files of Scala. - | +--actors/ The sources of the Actor library. - | +--compiler/ The sources of the Scala compiler. - | +--library/ The sources of the core Scala library. - | ---swing/ The sources of the Swing library. - +--target/ † Build products output directory for sbt. - +--test/ The Scala test suite. - ---tools/ Developer utilities. - - - -Part II. Building Scala with SABBUS --------------------------------------------------------------------------------- - -SABBUS is the name of the Ant build script used to compile Scala. It is mostly -automated and takes care of managing the dependencies. - -^^^^^^^^^^^^^^^^^^^^^^^^ - LAYERS: -^^^^^^^^^^^^^^^^^^^^^^^^ -In order to guarantee the bootstrapping of the Scala compiler, SABBUS builds -Scala in layers. Each layer is a complete compiled Scala compiler and library. -A superior layer is always compiled by the layer just below it. Here is a short -description of the four layers that SABBUS uses, from bottom to top: - -- ``starr``: the stable reference Scala release which is shared by all the - developers. It is found in the repository as 'lib/scala-compiler.jar' and - 'lib/scala-library.jar'. Any committable source code must be compiled directly - by starr to guarantee the bootstrapping of the compiler. - -- ``locker``: the local reference which is compiled by starr and is the work - compiler in a typical development cycle. When it has been built once, it is - “frozen” in this state. Updating it to fit the current source code must be - explicitly requested (see below). - -- ``quick``: the layer which is incrementally built when testing changes in the - compiler or library. This is considered an actual new version when locker is - up-to-date in relation to the source code. - -- ``strap``: a test layer used to check stability of the build. - -^^^^^^^^^^^^^^^^^^^^^^^^ - DEPENDENT CHANGES: -^^^^^^^^^^^^^^^^^^^^^^^^ -SABBUS compiles, for each layer, the Scala library first and the compiler next. -That means that any changes in the library can immediately be used in the -compiler without an intermediate build. On the other hand, if building the -library requires changes in the compiler, a new locker must be built if -bootstrapping is still possible, or a new starr if it is not. - - -^^^^^^^^^^^^^^^^^^^^^^^^ -REQUIREMENTS FOR SABBUS: -^^^^^^^^^^^^^^^^^^^^^^^^ -The Scala build system is based on Apache Ant. Most required pre-compiled -libraries are part of the repository (in 'lib/'). The following however is -assumed to be installed on the build machine: - -- A Java runtime environment (JRE) or SDK 1.6 or above. -- Apache Ant version 1.7.0 or above. -- bash (via cygwin for windows) -- curl - - -Part III. Common use-cases --------------------------------------------------------------------------------- -- ``./pull-binary-libs.sh`` - - Downloads all binary artifacts associated with this commit. This requires - internet access to http://typesafe.artifactoryonline.com/typesafe. - -- ``ant -p`` - - Prints out information about the commonly used ant targets. The interested - developer can find the rest in the XML files. - -- ``ant`` or ``ant build`` - - A quick compilation (to quick) of your changes using the locker compiler. - - - This will rebuild all quick if locker changed. - - This will also rebuild locker if starr changed. - -- ``ln -s build/quick/bin qbin`` (once): -- ``ant && qbin/scalac -d sandbox sandbox/test.scala && qbin/scala -cp sandbox Test`` - - Incrementally builds quick, and then uses it to compile and run the file - ``sandbox/test.scala``. This is a typical debug cycle. - -- ``ant replacelocker`` - - "unfreezes" locker by updating it to match the current source code. - - - This will delete quick so as not to mix classes compiled with different - versions of locker. - -- ``ant test`` - - Tests that your code is working and fit to be committed. - - - Runs the test suite and bootstrapping test on quick. - - You can run the suite only (skipping strap) with 'ant test.suite'. - -- ``ant docs`` - Generates the HTML documentation for the library from the sources using the - scaladoc tool in quick. Note: on most machines this requires more heap than - is allocate by default. You can adjust the parameters with ANT_OPTS. - Example command line:: - ANT_OPTS="-Xms512M -Xmx2048M -Xss1M -XX:MaxPermSize=128M" ant docs - -- ``ant dist`` - - Builds a distribution. - - - Rebuilds locker from scratch (to make sure it bootstraps). - - Builds everything twice more and compares bit-to-bit the two builds (to - make sure it is stable). - - Runs the test suite (and refuses to build a distribution if it fails). - - Creates a local distribution in 'dists/latest'. - -- ``ant clean`` - - Removes all temporary build files (locker is preserved). - -- ``ant locker.clean`` - - Removes all build files. - -- ``ant all.clean`` - - Removes all build files (including locker) and all distributions. - -Many of these targets offer a variant which runs with -optimise enabled. -Optimized targets include build-opt, test-opt, dist-opt, fastdist-opt, -replacestarr-opt, replacelocker-opt, and distpack-opt. - -Part IV. Contributing to Scala --------------------------------------------------------------------------------- - -If you wish to contribute, you can find all of the necessary information on -the official Scala website: www.scala-lang.org. - -Specifically, you can subscribe to the Scala mailing lists, read all of the -available documentation, and browse the live github repository. You can contact -the Scala team by sending us a message on one of the mailing lists, or by using -the available contact form. - -In detail: - -- Scala website (links to everything else): - http://www.scala-lang.org - -- Scala documentation: - http://docs.scala-lang.org - -- Scala mailing lists: - http://www.scala-lang.org/node/199 - -- Scala bug and issue tracker: - https://issues.scala-lang.org - -- Scala live git source tree: - http://github.com/scala/scala - -If you are interested in contributing code, we ask you to sign the -[Scala Contributor License Agreement](http://typesafe.com/contribute/cla/scala), -which allows us to ensure that all code submitted to the project is -unencumbered by copyrights or patents. - -Before submitting a pull-request, please make sure you have followed the guidelines -outlined in our `Pull Request Policy <https://github.com/scala/scala/wiki/Pull-Request-Policy>`_. - ------------------- - - - -Thank you! - -The Scala Team diff --git a/gitignore.SAMPLE b/gitignore.SAMPLE deleted file mode 100644 index 7114225a4a..0000000000 --- a/gitignore.SAMPLE +++ /dev/null @@ -1,28 +0,0 @@ -# see also test/files/.gitignore -/.gitignore -/test/files/.gitignore - -*.jar -*~ - -# target directories for ant build -/build/ -/dists/ - -# other -/out/ -/bin/ -/sandbox/ - -# eclipse, intellij -/.classpath -/.project -/src/intellij/*.iml -/src/intellij/*.ipr -/src/intellij/*.iws -/.cache -/.idea -/.settings - -# bak files produced by ./cleanup-commit -*.bak diff --git a/lib/.gitignore b/lib/.gitignore deleted file mode 100644 index 0c507490be..0000000000 --- a/lib/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -ant-contrib.jar -ant-dotnet-1.0.jar -ant.jar -fjbg.jar -forkjoin.jar -jline.jar -maven-ant-tasks-2.1.1.jar -msil.jar -scala-compiler.jar -scala-compiler-src.jar -scala-library.jar -scala-library-src.jar -scala-reflect.jar -scala-reflect-src.jar -vizant.jar diff --git a/lib/scala-compiler-src.jar.desired.sha1 b/lib/scala-compiler-src.jar.desired.sha1 index debbce2d7e..e3fa18b018 100644 --- a/lib/scala-compiler-src.jar.desired.sha1 +++ b/lib/scala-compiler-src.jar.desired.sha1 @@ -1 +1 @@ -19d04510ac6f25d088da82527d8435b68c00153d ?scala-compiler-src.jar +d62bc132cba37b17c8d5ac65feb20193a3f8cc28 ?scala-compiler-src.jar diff --git a/lib/scala-compiler.jar.desired.sha1 b/lib/scala-compiler.jar.desired.sha1 index 4ec9610bae..68ac8d7e5c 100644 --- a/lib/scala-compiler.jar.desired.sha1 +++ b/lib/scala-compiler.jar.desired.sha1 @@ -1 +1 @@ -3585351c6a62186097be55fff88bee88a985f5c0 ?scala-compiler.jar +d049885894b93e12f034d4d871c38bfc4d026525 ?scala-compiler.jar diff --git a/lib/scala-library-src.jar.desired.sha1 b/lib/scala-library-src.jar.desired.sha1 index 6e97551fc7..5f74d96c66 100644 --- a/lib/scala-library-src.jar.desired.sha1 +++ b/lib/scala-library-src.jar.desired.sha1 @@ -1 +1 @@ -e606934dc00ced6bfac715bbdba427f9c2c18bc7 ?scala-library-src.jar +58db8f554695791217de332aa6500a7aa240e480 ?scala-library-src.jar diff --git a/lib/scala-library.jar.desired.sha1 b/lib/scala-library.jar.desired.sha1 index 36aedb2ad7..b7befab52a 100644 --- a/lib/scala-library.jar.desired.sha1 +++ b/lib/scala-library.jar.desired.sha1 @@ -1 +1 @@ -36456c52b0395fc1e6e367291e45bd503fa019c5 ?scala-library.jar +12007d1b1b913b563093b22e947e6c05fe40f3de ?scala-library.jar diff --git a/lib/scala-reflect-src.jar.desired.sha1 b/lib/scala-reflect-src.jar.desired.sha1 index ebd6dcbf5a..566111fd51 100644 --- a/lib/scala-reflect-src.jar.desired.sha1 +++ b/lib/scala-reflect-src.jar.desired.sha1 @@ -1 +1 @@ -51787a41cae5b0ec6910c5a1a6af392e17550856 ?scala-reflect-src.jar +c842d370d814515f15159cefa4b9c495d99bb1a9 ?scala-reflect-src.jar diff --git a/lib/scala-reflect.jar.desired.sha1 b/lib/scala-reflect.jar.desired.sha1 index 4378fec9d6..a6cdbc18ad 100644 --- a/lib/scala-reflect.jar.desired.sha1 +++ b/lib/scala-reflect.jar.desired.sha1 @@ -1 +1 @@ -d4a4c0aab882412461fbd9d39cf47da5a619855e ?scala-reflect.jar +a6595b3d7589085f683d4ad5a6072a057ab15ef9 ?scala-reflect.jar diff --git a/src/compiler/scala/reflect/reify/codegen/GenAnnotationInfos.scala b/src/compiler/scala/reflect/reify/codegen/GenAnnotationInfos.scala index 5a454e1e07..bd60faf4cd 100644 --- a/src/compiler/scala/reflect/reify/codegen/GenAnnotationInfos.scala +++ b/src/compiler/scala/reflect/reify/codegen/GenAnnotationInfos.scala @@ -45,6 +45,8 @@ trait GenAnnotationInfos { mirrorFactoryCall(nme.ArrayAnnotArg, scalaFactoryCall(nme.Array, args map reifyClassfileAnnotArg: _*)) case NestedAnnotArg(ann) => mirrorFactoryCall(nme.NestedAnnotArg, reifyAnnotationInfo(ann)) + case _ => + sys.error(s"Don't know what to do with $arg") } // if you reify originals of anns, you get SO when trying to reify AnnotatedTypes, so screw it - after all, it's not that important diff --git a/src/compiler/scala/reflect/reify/phases/Reshape.scala b/src/compiler/scala/reflect/reify/phases/Reshape.scala index 5f53f558b4..ae4a03d232 100644 --- a/src/compiler/scala/reflect/reify/phases/Reshape.scala +++ b/src/compiler/scala/reflect/reify/phases/Reshape.scala @@ -231,13 +231,10 @@ trait Reshape { val args = if (ann.assocs.isEmpty) { ann.args } else { - def toScalaAnnotation(jann: ClassfileAnnotArg): Tree = jann match { - case LiteralAnnotArg(const) => - Literal(const) - case ArrayAnnotArg(arr) => - Apply(Ident(definitions.ArrayModule), arr.toList map toScalaAnnotation) - case NestedAnnotArg(ann) => - toPreTyperAnnotation(ann) + def toScalaAnnotation(jann: ClassfileAnnotArg): Tree = (jann: @unchecked) match { + case LiteralAnnotArg(const) => Literal(const) + case ArrayAnnotArg(arr) => Apply(Ident(definitions.ArrayModule), arr.toList map toScalaAnnotation) + case NestedAnnotArg(ann) => toPreTyperAnnotation(ann) } ann.assocs map { case (nme, arg) => AssignOrNamedArg(Ident(nme), toScalaAnnotation(arg)) } diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala index 62270b7c0a..182209dfe6 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala @@ -654,7 +654,7 @@ abstract class BCodeHelpers extends BCodeTypes with BytecodeWriters { def emitArgument(av: asm.AnnotationVisitor, name: String, arg: ClassfileAnnotArg) { - arg match { + (arg: @unchecked) match { case LiteralAnnotArg(const) => if (const.isNonUnitAnyVal) { av.visit(name, const.value) } diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala index ea2cbbe3d3..4cb2f514ec 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala @@ -932,7 +932,7 @@ abstract class GenASM extends SubComponent with BytecodeWriters with GenJVMASM { def emitArgument(av: asm.AnnotationVisitor, name: String, arg: ClassfileAnnotArg) { - arg match { + (arg: @unchecked) match { case LiteralAnnotArg(const) => if(const.isNonUnitAnyVal) { av.visit(name, const.value) } diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala index 3265af9f5b..9bad29097c 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala @@ -486,14 +486,10 @@ abstract class Pickler extends SubComponent { } } def putClassfileAnnotArg(carg: ClassfileAnnotArg) { - carg match { - case LiteralAnnotArg(const) => - putConstant(const) - case ArrayAnnotArg(args) => - if (putEntry(carg)) - args foreach putClassfileAnnotArg - case NestedAnnotArg(annInfo) => - putAnnotation(annInfo) + (carg: @unchecked) match { + case LiteralAnnotArg(const) => putConstant(const) + case ArrayAnnotArg(args) => if (putEntry(carg)) args foreach putClassfileAnnotArg + case NestedAnnotArg(annInfo) => putAnnotation(annInfo) } } val AnnotationInfo(tpe, args, assocs) = annot @@ -559,13 +555,10 @@ abstract class Pickler extends SubComponent { /** Write a ClassfileAnnotArg (argument to classfile annotation) */ def writeClassfileAnnotArg(carg: ClassfileAnnotArg) { - carg match { - case LiteralAnnotArg(const) => - writeRef(const) - case ArrayAnnotArg(args) => - writeRef(carg) - case NestedAnnotArg(annInfo) => - writeRef(annInfo) + (carg: @unchecked) match { + case LiteralAnnotArg(const) => writeRef(const) + case ArrayAnnotArg(args) => writeRef(carg) + case NestedAnnotArg(annInfo) => writeRef(annInfo) } } diff --git a/src/library/scala/sys/process/ProcessBuilder.scala b/src/library/scala/sys/process/ProcessBuilder.scala index c8e548c76b..adf5a4f6b2 100644 --- a/src/library/scala/sys/process/ProcessBuilder.scala +++ b/src/library/scala/sys/process/ProcessBuilder.scala @@ -127,7 +127,7 @@ import ProcessBuilder._ * * Finally, `!` at the end executes the commands, and returns the exit value. * Whatever is printed will be sent to the Scala process standard output. If - * we wanted to caputre it, we could run that with `!!` instead. + * we wanted to capture it, we could run that with `!!` instead. * * Note: though it is not shown above, 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/reflect/scala/reflect/internal/Importers.scala b/src/reflect/scala/reflect/internal/Importers.scala index f8584ac9b0..b0828e9c54 100644 --- a/src/reflect/scala/reflect/internal/Importers.scala +++ b/src/reflect/scala/reflect/internal/Importers.scala @@ -434,6 +434,8 @@ trait Importers extends api.Importers { to: SymbolTable => ScalaSigBytes(bytes) case from.NestedAnnotArg(annInfo) => NestedAnnotArg(importAnnotationInfo(annInfo)) + case from.UnmappableAnnotArg => + UnmappableAnnotArg } // todo. careful import of positions diff --git a/src/repl/scala/tools/nsc/interpreter/JLineReader.scala b/src/repl/scala/tools/nsc/interpreter/JLineReader.scala index d8a876feb2..8b0c6d78fa 100644 --- a/src/repl/scala/tools/nsc/interpreter/JLineReader.scala +++ b/src/repl/scala/tools/nsc/interpreter/JLineReader.scala @@ -34,6 +34,9 @@ class JLineReader(_completion: => Completion) extends InteractiveReader { } class JLineConsoleReader extends ConsoleReader with ConsoleReaderHelper { + // ASAP + this setExpandEvents false + // working around protected/trait/java insufficiencies. def goBack(num: Int): Unit = back(num) if ((history: History) ne NoHistory) diff --git a/starr.number b/starr.number index 89659fcbf3..d55aa7d7fc 100644 --- a/starr.number +++ b/starr.number @@ -1 +1 @@ -starr.version=2.11.0-M2
\ No newline at end of file +starr.version=2.11.0-M4
\ No newline at end of file diff --git a/test/files/gitignore.SAMPLE b/test/files/.gitignore index 161be5b55f..161be5b55f 100644 --- a/test/files/gitignore.SAMPLE +++ b/test/files/.gitignore diff --git a/test/files/codelib/.gitignore b/test/files/codelib/.gitignore deleted file mode 100644 index f77a26afb7..0000000000 --- a/test/files/codelib/.gitignore +++ /dev/null @@ -1 +0,0 @@ -code.jar diff --git a/test/files/lib/.gitignore b/test/files/lib/.gitignore deleted file mode 100644 index b4ac0b8789..0000000000 --- a/test/files/lib/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -annotations.jar -enums.jar -genericNest.jar -javac-artifacts.jar -jsoup-1.3.1.jar -methvsfield.jar -nest.jar -scalacheck.jar diff --git a/test/files/speclib/.gitignore b/test/files/speclib/.gitignore deleted file mode 100644 index 2b26f5dfc5..0000000000 --- a/test/files/speclib/.gitignore +++ /dev/null @@ -1 +0,0 @@ -instrumented.jar diff --git a/tools/.gitignore b/tools/.gitignore deleted file mode 100644 index 57701c8353..0000000000 --- a/tools/.gitignore +++ /dev/null @@ -1 +0,0 @@ -push.jar |