SI-6017 Scaladoc's Index should be case-sensitive
Forgot to cherry-pick the .check file
There is no "letters" method in this branch
SI-6853 changed private method remove to be tail recursive.
Operations += and -= on mutable.ListMap rely on the private method remove to perform. This methods was implemented using recursion, but it was not tail recursive. When the ListMap got too big the += caused a StackOverflowError.
SI-6968 Simple Tuple patterns aren't irrefutable

Reverts part of c82ecab. The parser can't assume that
a pattern `(a, b)` will match, as results of
`.isInstanceOf[Tuple2]` can't be statically known until
after the typer.

The reopens SI-1336, SI-5589 and SI-4574, in exchange for fixing
this regression SI-6968. Keeping all of those fixed will require
a better definition of irrefutability, and some acrobatics to
ensure safe passage to the ambiguous trees through typechecking.
[backport] SI-5378, unsoundness with type bounds in refinements.

As the comment says:

Not enough to look for abstract types; have to recursively check
the bounds of each abstract type for more abstract types. Almost
certainly there are other exploitable type soundness bugs which
can be seen by bounding a type parameter by an abstract type which
itself is bounded by an abstract type.

SPECIAL: BUY ONE UNSOUNDNESS, GET ONE FREE

In refinement types, only the first parameter list of methods
was being analyzed for unsound uses of abstract types. Second
parameter list and beyond had free unsoundness reign. That bug
as well is fixed here.
Optimization in AsSeenFromMap.

Despite all the eyes which have traveled over this code,
we all managed to miss this:

  // Note that pre and clazz are fixed at construction
  class AsSeenFromMap(pre: Type, clazz: Symbol) {
    ...
    def apply(tp: Type): Type =
      if (skipPrefixOf(pre, clazz)) tp
      else ...
  }

Additionally, the exclusion condition in asSeenFrom contained
a useless check, here:

  // !isPossiblePrefix(clazz) alone is enough
  pre.normalize.isTrivial && !isPossiblePrefix(clazz)
SI-6963 Add version to -Xmigration

Adds an optional version parameter to the -Xmigration compiler setting.
Doing -Xmigration without version number behaves as it used to by
dumping every possible migration warning.

This commit adds a ScalaVersion class (plus ancillary stuff), and a
ScalaVersionSetting.
Add Bytecode test (ASM-based) to partest.

This commit introduces a new kind of test `Bytecode` that allows
one to inspect bytecode generated for given piece of Scala code.

The bytecode inspection is achieved by inspection of ASM trees.
See the included example for details.

NOTE: This commit does not introduce a new category of pratest tests.
Bytecode tests should be run in `jvm` category of partest tests.

Specific list of changes:
  * Add BytecodeTest that contains common utilities to partest
  * Add asm to classpath when compiling partest. That's not a
    new dependency as it's being already done for javac task
    we were running while compiling partest.
  * Add an example test that shows how to count null checks in
    given method.
Test case for SI-7009.

The next commit fixes the problem itself and it's easier to see
in diff what's being fixed exactly.
SI-2418, remove restriction on final vars.

[backport]
The original fix for SI-2418 excluded final vars entirely, but
the problem was not final vars per se, but the emission of ACC_FINAL
in combination with ACC_VOLATILE.  Since vars never get ACC_FINAL
now, this is no longer an issue.
SI-4729, overriding java varargs in scala.

[backport]
This was a bad interaction between anonymous subclasses
and bridge methods.

  new Foo { override def bar = 5 }

Scala figures it can mark "bar" private since hey, what's
the difference.  The problem is that if it was overriding a
java-defined varargs method in scala, the bridge method
logic says "Oh, it's private? Then you don't need a varargs
bridge." Hey scalac, you're the one that made me private!
You made me like this! You!

Conflicts:
	src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
SI-5130, precision disappearing from refinement.

[backport]
Remove some code, win a prize.
SI-5353, imperfect error message.

[backport]
The fix of course is a perfect error message.
SI-5859, inapplicable varargs.

[backport]
And other polishing related to varargs handling.
SI-5604, selections on package objects.

[backport]
mkAttributedSelect, which creates a Select tree based on
a symbol, has been a major source of package object bugs,
because it has not been accurately identifying selections
on package objects.  When selecting foo.bar, if foo turns
out to be a package object, the created Select tree must be

  foo.`package`.bar

However mkAttributedSelect was only examining the owner of
the symbol, which means it would work if the package object
defined bar directly, but not if it inherited it.
SI-6072, crasher with overloaded eq.

[backport]
You don't want to do name-based selections in later phases
if you can help it, because there is nobody left to resolve
your overloads.  If as in this example you're calling a
known method, use the symbol.  Review by @hubertp.
SI-6426, importable _.

[backport]
Prohibit `_` as an identifier, it can only bring badness.
SI-6584, Stream#distinct uses too much memory.

[backport]
Nesting recursive calls in Stream is always a dicey business.
SI-6595, lost modifiers in early defs.

[backport]
Saw this by accident; the trees created for early defs would
wholesale replace the modifiers with PRESUPER rather than
combining them. FINAL was lost that way, as would be any other
modifiers which might be valid there.