Merge pull request #2942 from retronym/topic/build-number-maven

Remove build.number.maven
Longer timeout for repl test.

15 seconds is crazy aggressive. I have fast hardware and it's still
really easy for a test to take to fifteen seconds under load.
Merge pull request #2958 from paulp/pr/longer-timeout

Longer timeout for repl test.
Silence pos/t3960's -Ycheck output.

Someday someone will have to straighten out where output goes.
Clearly under current conditions, Console.err is not a good place.
I rerouted through unit.warning so the output will be swallowed
like all the other warnings.
SI-7853 An unsatisfying fix regression in explicit outer

The attempt to placate pos/t4970.scala in 55c6fd4 roused another
dragon.

We've got two levers here: the type of the symbol of the outer
accessor, and the type of its DefDef.

They have been historically out of sync due to the vaguaries of
finalResultType (which is far less vague since 671e6e03c7), but
the finicky operation of ExplicitOuter now has a hard time when
we try to bring them into line.

This stuff is notoriously difficult to understand because the
trees you see from `-Xprint` show a tpt derived from the method
symbol's info, and discards the actual tpt in the tree.

Rather than letting `DefDef(acc)` call `TypeTree(sym)` and use
`sym.tpe_*.finalResultType`, this commit computes the member type
of the accessor from the current class and explicitly uses that as
the return type of the outer accessor def.

We should try to push this a little deeper. I tried to put it into
`def TypeTree`, but that broke, among others,
run/concurrent-stream.scala. Maybe `def DefDef` and `def ValDef`?

But a localised fix is the right start as it addresses the regression
in a minimal fashion to get the IDE building again.
SI-7853 A less ad-hoc place to call memberType

Rather than localizing the fix to the outerAccessor, this
commit pushed the call to `memberType` into *all* usages of
`newValDef` and `newDefDef`.

The TPT of `applyOrElse` in synthetized partial functions must
be set explicitly to pass the pos/t7853-partial-function.scala.
Otherwise, the as-seen-from ends up cloning the type parameter
`B1` of `applyOrElse` as it transforms (questionably)
its bound from `List[Int @unchecked]` to `List[Int]`.

Partial Function synthesis was already a delicate area, and this
makes things more explicit which could be counted as an improvement.
Cull extraneous whitespace.

One last flurry with the broom before I leave you slobs to code
in your own filth. Eliminated all the trailing whitespace I
could manage, with special prejudice reserved for the test cases
which depended on the preservation of trailing whitespace.

Was reminded I cannot figure out how to eliminate the trailing
space on the "scala> " prompt in repl transcripts. At least
reduced the number of such empty prompts by trimming transcript
code on the way in.

Routed ConsoleReporter's "printMessage" through a trailing
whitespace stripping method which might help futureproof
against the future of whitespace diseases. Deleted the up-to-40
lines of trailing whitespace found in various library files.

It seems like only yesterday we performed whitespace surgery
on the whole repo. Clearly it doesn't stick very well. I suggest
it would work better to enforce a few requirements on the way in.
Merge pull request #2955 from retronym/ticket/7853

SI-7853 Regression in explicit outer
SI-7852 Omit null check for SomeModule.==

For the same reasons outlined in the previous commits.
Type housekeeping.

Moved ListOfNil somewhere more generally accessible. No
reason the compiler should hoard it for itself. Flitted
to a few locations with constructs like ".head.head" and
".tail.head" looking for code which could be rewritten. Found
some, admittedly not always making use of ListOfNil.

Made overdue moves of ConstantType(Constant(true|false|null))
to vals in Definitions.
SI-7852 Refactor null-elision tests to be more focussed

 - Directly count null checks, rather than diffing the textual
   bytecode of the entire method
 - Add a test to show that the LHS needs to be a direct module
   reference, not just a tree with a module type, to elide the
   null check.
Merge pull request #2960 from paulp/noisy-test-3960

Silence pos/t3960's -Ycheck output.
Merge pull request #2961 from paulp/pr/whitespace

Cull extraneous whitespace.
add syntactic extractor for assignment-like trees

There are three kinds of assign-like trees:

1. Assign(lhs, rhs)                          // $lhs = $rhs
3. AssignOrNamedArg(lhs, rhs)                // $lhs = $rhs
2. Apply(Select(f, nme.update), args :+ rhs) // $f(..$args) = $rhs

New syntactic combinator unifies all of them and lets users not to think
about these implementations details.
Merge pull request #2959 from paulp/pr/basic-type-housekeeping

Type housekeeping.
Position#show prints the point.

Can't ensure range position points are meaningful when we never
see them. To limit noise, only print the point when it != start.

  [x:y]    // point=x, start=x, end=y
  [p/x:y]  // point=p, start=x, end=y

I'm open to a different syntax.

Also prints NoPosition as [X] rather than [NoPosition] because
noise is for construction workers and attenders of rock concerts.

Some range position and parser tests are included so we can see
the checkfile change when the forthcoming fix happens (either an
error message improvement or a positional one.)
SI-7854, SI-6768 better parsing/positioning in parser

The parser hole I found while working on the generated positions
serves as the umbrella for a host of improvements. Upgraded
positions assigned during some specific challenging situations mostly
involving the creation of synthetic trees, e.g. for comprehensions
and closures. While doing so improved some error messages.

Eliminated some of the most glaring duplication in the parser.
It's written like there is some payoff associated with being
spectacularly imperative. Not so far.
SI-7855 No missing interpolator warning post-typer

Avoid extra work, extra warnings.
SI-7848 Xlint no warn on $sym with params

This idea brought to you by retronym.
Require Ant >= 1.8.2

Reportedly our build fails with Ant earlier incarnations.
Time to raise the bar.

Tested by temporarily setting the requirement to 1.8.5 and observing:

    % ant init
    Buildfile: /Users/jason/code/scala/build.xml

    desired.jars.uptodate:

    boot:

    init:

    BUILD FAILED
    /Users/jason/code/scala/build.xml:216: Ant version 1.8.5 is required. You are running Apache Ant(TM) version 1.8.4 compiled on May 22 2012