summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/cmd
Commit message (Collapse)AuthorAgeFilesLines
...
* a fast, functional PartialFunction implementationPavel Pavlov2012-03-301-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | runtime.AbstractPartialFunction provides a default implementation for the new-style partial function. In principle this class is only subclassed by compiler-generated partial functions arising from matches. Either - the apply method (old-style partialfun) or - the applyOrElse method (current scheme) must be overridden, and the isDefinedAt method implemented. The applyOrElse method implementation is provided to ease the transition from the old scheme, since starr still generates old-style PartialFunctions, but locker's library has the new AbstractPartialFunction. Thus, this implementation is intended as a drop-in replacement for the old partial function, and does not require changes to the compiler. (compiler patches, both for old and new-style pattern matching, follow) - runtime.AbstractPartialFunction is based on PartialFunction.WithDefault Original version of FunctionWithDefault by Odersky (http://article.gmane.org/gmane.comp.lang.scala.internals/4032) - better performance for OrElse#applyOrElse, OrElse#lift, PF.cond - new combinator methods: PF#run, PF#runWith, PF.apply authored by @pavelpavlov, refactored by @adriaanm, review by @paulp
* Merge branch 'master' into merge-inlinePaul Phillips2012-03-141-15/+15
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: lib/scala-compiler.jar.desired.sha1 lib/scala-library-src.jar.desired.sha1 lib/scala-library.jar.desired.sha1 src/compiler/scala/reflect/internal/Definitions.scala src/compiler/scala/reflect/internal/Importers.scala src/compiler/scala/reflect/internal/Symbols.scala src/compiler/scala/reflect/internal/Trees.scala src/compiler/scala/reflect/internal/Types.scala src/compiler/scala/tools/nsc/Global.scala src/compiler/scala/tools/nsc/transform/Erasure.scala src/compiler/scala/tools/nsc/transform/LiftCode.scala src/compiler/scala/tools/nsc/transform/UnCurry.scala src/compiler/scala/tools/nsc/typechecker/RefChecks.scala src/compiler/scala/tools/nsc/typechecker/Typers.scala test/files/run/programmatic-main.check test/files/speclib/instrumented.jar.desired.sha1
| * Eliminating trailing whitespace in AnyVals.Paul Phillips2012-02-141-15/+15
| |
* | Unsealed AnyVal.Paul Phillips2012-01-281-3/+3
|/ | | | | | Hacks here and there to allow them to survive at least to erasure. Since nothing is done with them there yet, they inevitably crash and burn a little ways beyond that.
* Fast PartialFunction # orElse.Martin Odersky2011-11-241-5/+5
|
* AbstractPartialFunction.Paul Phillips2011-10-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Contributed by Todd Vierling with minor mods by extempore. This is an obvious extension of AbstractFunctionN which I had some issue making work at the time. Sounds kind of pitiful given that the compiler patch is about two lines, but let's all agree to believe it was a different world then. This example program is impacted as follows: class A { def f: PartialFunction[Any, Int] = { case x: String => 1 } def g: PartialFunction[Any, Int] = f orElse { case x: List[_] => 2 } def h: PartialFunction[Any, Int] = g orElse { case x: Set[_] => 3 } } Before: 34943 bytes of bytecode After: 4217 bytes of bytecode A mere 88% reduction in size. "'Tis but a trifle!" Closes SI-5096, SI-5097.
* Small changes to the API documentation of the A...Heather Miller2011-09-181-4/+5
| | | | | | Small changes to the API documentation of the AnyVal types. Contributed by Michael Allman during the September doc spree. No review.
* Some great AnyVal class hierarchy documentation...Josh Suereth2011-09-021-25/+131
| | | | | | Some great AnyVal class hierarchy documentation from Iain McGinniss. No Review.
* Add documentation to Boolean.Paul Phillips2011-07-151-1/+76
|
* A total rewrite of "runtimeClass", discarding t...Paul Phillips2011-06-221-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A total rewrite of "runtimeClass", discarding the user-space approach in favor of simply fixing getClass. def f1 = 5.getClass // Class[Int] def f2 = (5: AnyVal).getClass // Class[_ <: AnyVal] def f3 = (5: java.lang.Integer).getClass // Class[_ <: java.lang.Integer] class A class B extends A def f1 = (new B: Any).getClass().newInstance() // Any def f2 = (new B: AnyRef).getClass().newInstance() // AnyRef def f3 = (new B: A).getClass().newInstance() // A def f4 = (new B: B).getClass().newInstance() // B But that's not all! def f0[T >: B] = (new B: T).getClass().newInstance() def f5 = f0[Any] // Any def f6 = f0[AnyRef] // AnyRef def f7 = f0[A] // A def f8 = f0[B] // B Closes #490, #896, #4696. Review by moors. (Note: I think this is pretty good, but picky review requested.)
* Moved scala.reflect.Chars to scala.reflect.inte...Iulian Dragos2011-05-201-1/+1
| | | | | | | | | | Moved scala.reflect.Chars to scala.reflect.internal.Chars, un-splitting the scala.reflect package. This is necessary for running in an OSGi container, such as Eclipse. A package may not be contributed by two different bundles (in this case the library and the compiler). It may be moved back when 'scala.reflect' exists only in one place. review by extempore.
* And the remainder of the scala.reflect refactor...Paul Phillips2011-05-161-1/+1
| | | | | | And the remainder of the scala.reflect refactoring (think of it like a "balloon payment") no review.
* Various addenda to soc's patch: regenerating Pr...Paul Phillips2011-04-141-1/+1
| | | | | | | Various addenda to soc's patch: regenerating Product/Tuple/Function classes and AnyVal sources, making versioning consistent, etc. Closes #4477, no review.
* A less ad hoc infrastructure for generating Any...Paul Phillips2011-04-012-221/+217
| | | | | | A less ad hoc infrastructure for generating AnyVal sources. A few more comments on said sources. No review.
* Working on the documentation of core classes.Paul Phillips2011-04-011-45/+103
| | | | | | | | withdraw some of the goodness I banked a while ago with the AnyVal types. Started on what will culminate in the total elimination of SourcelessComments. Cleaned up the docs on ancient classes like Product. More to come. No review.
* Addresses the issues swirling around Double.Eps...Paul Phillips2011-03-153-44/+58
| | | | | | | | | | | Addresses the issues swirling around Double.Epsilon and friends which were battled out in more than one venue and then aptly summarized by retronym in #3791. Thanks to Simon Ochsenreither for submitting a patch; I wasn't able to use too much of it because the source code for these types is generated, but effort is always appreciated. Closes #3791, and I'm tired and I'd hate to blow this one at this late date: review by rytz.
* Some minor cleanups in anyval source generation.Paul Phillips2011-01-273-12/+18
|
* The AnyVal types become source files instead of...Paul Phillips2011-01-241-1/+0
| | | | | | | | | | | | | | | | | | | The AnyVal types become source files instead of polite compiler fictions. !! You'll need a serious "ant all.clean" now. !! As of this commit the system is fully bootstrapped and the synthetic code eliminated: only the source files remain. The sort-of-AnyVal-companions in scala.runtime.* have all been eliminated because the actual companions can do everything; deprecated vals in the scala.runtime package object point to the companions. This left AnyValCompanion as the only AnyVal related thing in the runtime package: that made little sense, so I deprecated and moved it as well. Starr is based on r24066 plus this commit. Closes #4121. Review by rytz, odersky.
* Tackled source generation from a new angle rath...Paul Phillips2011-01-233-0/+277
| | | | | | | Tackled source generation from a new angle rather than letting genprod get any more creaky. This code generates the AnyVal source files (but those are not included here.) No review.
* Deleted the former Process code in the compiler.Paul Phillips2011-01-211-4/+5
| | | | | things which used it to use sys.process. No review.
* Updated copyright notices to 2011Antonio Cunei2011-01-2015-15/+15
|
* Imported sbt.Process into trunk, in the guise o...Paul Phillips2011-01-123-4/+4
| | | | | | | | | | | | | | | | | | | Imported sbt.Process into trunk, in the guise of package scala.sys.process. It is largely indistinguishable from the version in sbt, at least from the outside. Also, I renamed package system to sys. I wanted to do that from the beginning and the desire has only grown since then. Sometimes a short identifier is just critical to usability: with a function like error("") called from hundreds of places, the difference between system.error and sys.error is too big. sys.error and sys.exit have good vibes (at least as good as the vibes can be for functions which error and exit.) Note: this is just the first cut. I need to check this in to finish fixing partest. I will be going over it with a comb and writing documentation which will leave you enchanted, as well as removing other bits which are now redundant or inferior. No review.
* Mopping up after the deprecation of exit and er...Paul Phillips2010-12-053-5/+4
| | | | | | | | | | | | | | Mopping up after the deprecation of exit and error. It is decidedly non-trivial (at least for the IDE-impaired) to be completely sure of which error function was being called when there were about twenty with the same signature in trunk and they are being variously inherited, imported, shadowed, etc. So although I was careful, the possibility exists that something is now calling a different "error" function than before. Caveat programmer. (And let's all make it our policy not to name anything "error" or "exit" from here on out....) No review.
* Some hardening of the repl's internals extracte...Paul Phillips2010-11-271-0/+6
| | | | | | Some hardening of the repl's internals extracted from a more interesting patch in progress. No review.
* A new totally safe signal manager, along with a...Paul Phillips2010-11-261-1/+1
| | | | | | | | | | | | | | | | | | | A new totally safe signal manager, along with all the support code needed for that. See the classes in scala.tools.reflect.* for interesting new weapons. Also includes inaugural handy usage: scala> val x = 10 x: Int = 10 scala> while (true) () [ctrl-C] Execution interrupted by signal. scala> x res1: Int = 10 No review, but feedback welcome.
* Added two options to tools/tokens, --sliding an...Paul Phillips2010-04-211-3/+25
| | | | | | | | | | | | | | | | Added two options to tools/tokens, --sliding and --freq. Using both: % tools/tokens --sliding 10 --freq src/compiler/scala/tools/nsc/typechecker | head -5 34 'if' '(' settings '.' debug '.' value ')' log '(' 17 scala '.' tools '.' nsc ; 'package' typechecker ;; 'import' 17 'package' scala '.' tools '.' nsc ; 'package' typechecker ;; 16 '}' 'package' scala '.' tools '.' nsc ; 'package' typechecker 15 ')' '{' 'if' '(' settings '.' debug '.' value ')' No review.
* Fixed a couple bugs in tools/tokens which were ...Paul Phillips2010-04-211-4/+7
| | | | | | Fixed a couple bugs in tools/tokens which were mysteriously more visible once it was checked in. No review.
* Two new command line programs in ~/tools: scmp ...Paul Phillips2010-04-212-0/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two new command line programs in ~/tools: scmp and tokens. 1) scmp: will need a bit more fleshing out to be super useful, but here is what you can do right now: // This means run the given command line first with the options // given to p1 and then without, and show the diff in output. % tools/scmp --p1 '-no-specialization -nowarn' scalac -Ydebug src/library/scala/Function1.scala Upcoming features will involve seeing diffs of such things as the pickled signatures of generated files and the javap disassembly. 2) tokens: tokenizes all the scala files found under any given paths and prints one token per line. Example: the five most frequently used tokens under scala/util. % tools/tokens src/library/scala/util |sort | uniq -c | sort -r | head -5 598 ')' 598 '(' 347 ; 294 '=' 278 , Good to see those parens are balanced. Example: number of appearances of an identifier called x: % tools/tokens src/library/scala/util | grep ^x$ | wc 137 Way to go, x. Review by community.
* Since pickled data moved into annotations ShowP...Paul Phillips2010-04-219-49/+122
| | | | | | | | | Since pickled data moved into annotations ShowPickled has been confusedly scratching its head. Made tools/showPickled work again. In the process created a simple interface for creating command line tools for the (majority of) commands which would just like to specify a handful of options. No review.
* More polishing up features in partest which wor...Paul Phillips2010-04-161-8/+11
| | | | | | | More polishing up features in partest which worked somewhere along the way but not at the end. This time it is unknown options: now it will complain. Closes #3289, no review.
* Introduces scala.tools.cmd providing command li...Paul Phillips2010-04-1112-0/+793
Introduces scala.tools.cmd providing command line tool infrastructure. For a quick look at what can be done, see scala.tools.cmd.Demo For a more involved, potentially eye-straining look, see scala.tools.partest.PartestSpec To experience it through the eyes of Joe Partest User, run test/partest Review by community.