-Yshow-member-pos, print the positions of members.

Here for instance is a command line which leverages the
output of this option to print the method bodies of all
methods called 'transformInfo' found under src. Given
1500 source files it accomplishes this in four seconds,
thanks to -Ystop-after:parser.

% scalac -Yshow-member-pos sed -Ystop-after:parser \
    $(find src/compiler -name '*.scala') | \
    grep transformInfo | sed 's/ # .*//;' | \
    while read line; do echo "// $line" && gsed -n $line && echo; done

Or more simply, the start/end lines of each member of Random:

% scalac -Yshow-member-pos "" ./src/library/scala/util/Random.scala
./src/library/scala/util/Random.scala
20,134               class Random
 33                  def nextBoolean
 38                  def nextBytes
 43                  def nextDouble
 48                  def nextFloat
 54                  def nextGaussian
 59                  def nextInt
 65                  def nextInt
 70                  def nextLong
 81,89               def nextString
  82,86              def safeChar
   83                val surrogateStart
   84                val res
 94,98               def nextPrintableChar
 [snip]

It makes me sad I'm always in the position of having to hack
the compiler to do this sort of thing. All we need is something
like -Yinsert-phase:Foo where Foo is a class implementing a
(Phase, Tree) => Tree method, and the compiler runs all the
unit.bodies through it after each phase, and then one could
easily accomplish this in the privacy of one's own compiler.
Updated jline and rebuilt.

Two years of atrophy. Now using sbt 0.12.3 and latest
versions of jansi, etc.
for null outer pointer, NPE via throw null

As per the JVM spec, the athrow instruction throws a NullPointerException upon finding null on stack top.
This commit takes advantage of that feature, to emit more compact code.

The constructor of an inner class that receives an outer value first checks that value for nullness, depending on which NPE may be thrown.
The code now emitted to achieve the above looks like:

    0: aload_1
    1: ifnonnull     6
    4: aconst_null
    5: athrow
    6: ...
avoids multiple evals of isSubClass DelayedInitClass
translation for DelayedInit keeps more code in original class

As before, the translation for DelayedInit creates a closure-class.
With this commit, its apply() method now just delegates to a synthetic method (in the original class) that contains the statements whose execution is to be delayed.

Previously the closure body would have the statements in question transplanted into it, so to say, which in turn required creating accessors in the original class, as well as reformulating accesses-on-this into accesses-via-outer.

Details about the mechanics of the rewriting can be found in the source comment for delayedEndpointDef()
Created utility function for dropping by-name-ness.

And applied it in three locations.
improved naming of variables in constructors phase
Merge pull request #2447 from paulp/pr/byname

Created utility function for dropping by-name-ness.
deprecation cycle for definitions.NPEConstructor
Call method rather than duplicating method.
Documented lateMETHOD flag.

A baby step toward its eventual elimination.

  WANTED, DEAD OR ALIVE
  For Heinous Crimes Against Efficiency and Scrutability
    lateDEFERRED lateFINAL lateINTERFACE lateMODULE
    notPROTECTED notPRIVATE notOVERRIDE lateMETHOD

  ON THE RUN
    lateMETHOD
Merge pull request #2445 from magarciaEPFL/backendish3

improvements, constructors phase (2nd attempt)
Merge pull request #2457 from paulp/pr/late-method-redux

Documented lateMETHOD flag.
Merge pull request #2421 from paulp/pr/print-method-positions

-Yshow-member-pos, print the positions of members.
SI-7429 Fix checkinit build failure in Contexts

The recent refactoring in Contexts resulted in an uninitialized
field access. This wasn't deadly, as it was already compensating
for this by expecting a null value for `outer` during in the body
of the constructor of Contexts when extended by NoContext.

This commit reworks that code a little to avoid dereferencing the
overriden `outer` field.

A similar mistake in `ImportContext` is also corrected.
SI-6784 Localize feature imports in scala.swing.

These were inadvertantly added to the public API in f15dc74 for anyone
importing scala.swing._, which unintentionally enabled reflectiveCalls
and implicitConversions for clients of the API.

This change breaks the source compatibiliy poilicy, rather than
deprecating these, based on the extremely low chance that someone is
using these in something like:

    import scala.swing._; println(implicitConversions)
Address a deprecation warnings in scala-swing.

While I was in the neighbourhood.
Merge pull request #2443 from paulp/pr/jline

Updated jline and rebuilt.
Merge pull request #2465 from retronym/ticket/6784

SI-6784 Localize features imports in scala.swing
Merge pull request #2463 from retronym/ticket/7429

SI-7429 Fix checkinit build failure in Contexts