TypeTree printing modified (SI-8447)
SI-8185 Correct grammar for single-warning compilation run
SI-8609 Fix flattening of definitions and imports in quasiquotes

Quasiquotes allow to unquote trees with ..$ with block flattening
semantics to simplify composition:

  val onetwo = q"1; 2"
  val onetwothree = q"..$onetwo; 3" // same as q"1; 2; 3"

If there is no block it will be equivalent to $ unquoting:

  val one = q"1"
  val onetwo = q"..$one; 2" // same as q"1; 2"

But the inconsistency here is that currently only terms support
this single-element semantics. This commit extends this functionality
to also support definitions and imports. So that following code works:

  val q1 = q"val x = 1"
  val q2 = q"..$q1; val y = 2" // same as q"val x = 1; val y = 2"
adds MacroPlugin.pluginsIsBlackbox

This is an important omission in the current macro plugin API, which was
designed before the blackbox vs whitebox separation was implemented.

Even if one overrides pluginsTypedMacroBody and pluginsMacroExpand,
that would still be not enough to write a custom macro expander, because
typedImplicit1 uses isBlackbox, which is tightly coupled with the standard
way of reading/writing macro signatures.
macro args now correctly preserve range positions

Somewhen in the 2.11.0 development cycle we started duplicating macro arguments
for increased robustness. What wasn't taken into account though is that
Tree.duplicate destroys range positions. This commit fixes the problem.

2.10.x is unaffected by this bug, because it doesn't duplicate the args yet.
SI-8494 Restore filtering javap output

Regressed in support for new delayedEndPoint, where it must
pick what to filter for.

`s/claas/klass/` and similar.
SI-8494 Javap filter includes specialized

When filtering javap output, include specialized versions
of methods. For anonfuns, in particular, the apply$sp is
the method of interest.
SI-6409  Stream flatMap leaks memory if mapper returns many empties

Added Scaladoc explaining that this is necessary behavior, but closed ticket as wontfix.
SI-7372 fix wrong insertion point for binary & linear search.

It should return the position the value would have if it was a part of
the sequence. Somehow even the test was wrong.
SI-6967 Fix ClassTag unapply for primitives

This commit fixes the behavior of ClassTag's Any-accepting unapply
overload. Previously, ClassTag had overloads of unapply that accepted
all of the Java primitive aliases (language-supported magic classes
extending AnyVal), as well as an implementation that accepted an Any.
All of the AnyVal-accepting (more specific) versions of the methods
worked correctly. However, the Any-accepting version incorrectly handled
these types. For example, ClassTag.Int.unapply(3) would return Some(3)
(through the Int-accepting overload), while ClassTag.Int.unapply(3: Any)
would return None (through the Any-accepting overload). This commit
unifies these behaviors, making ClassTag.Int.unapply(3: Any) return
Some(3). It accomplishes this by adding a pattern match on the type of
that method's argument, which will delegate to one of the
more-specifically-typed overloads if possible. It also improves the
formatting of the code a bit.

One thing to note (though I doubt anyone will ever do this based on this
message) is that the AnyVal-subtype-accepting overloads should be
removed in Scala 2.12, as they are unneeded. I placed a  note to this
effect into the code.
SI-7372 make binarySearch methods use the same parameters for the same things.

The public facing binarySearch method used an inclusive 'from'
parameter, while the internal @tailrec one used an *exclusive*
'from' parameter. No wonder there was an off-by-one error somewhere.

This makes both methods use the same exclusive 'from' parameter.
SI-8589 Performance improvement for ArrayCharSequence.toString
SI-8675 Avoid unreported error after second try using implicit view

This is specific to situations in which we first typecheck an
application `qual.m(arg)` against the method `m` directly provided
by `qual`, and then fall back to `implicitView(qual).m(arg)`.

Regressed in SI-3971 / 7fa77af, in which error reports were moved
to the innermost `Apply`, and the check for `errorInResult` was
accordingly changed to recurse through `Apply` trees.

Before that change, we did not fall back to using a view. After the
change, we do try a view. We retypecheck the arguments under the
`retyping` mode (see `tryTypedArgs`), but this doesn't seem to
be enough to avoid leaking the error typed nested trees from the
first try.

Here's an example from the enclosed test case:

    a.update(0, x[A]({new isString(true)}))
                                   `-- error typed

    refArrayOps(a).update(0, x[A]({new isString(true)}))
                             `                  `-- error type persists
                              `-- this tree is retypecked by tryTypedArgs

This commit changes `onError` to only proceed with the second
try if the retyped argument trees are error free.
Merge pull request #3805 from Ichoran/issue/6409

SI-6409  Stream flatMap leaks memory if mapper returns many empties
Merge pull request #3806 from clhodapp/fix/SI-6967

SI-6967 Fix ClassTag unapply for primitives
SI-8657 don't miss tailrec defs in more positions

1) First operand of boolean expression using `&&` or `||`. Second operands of
   those boolean exprs were already treated specially here but handling for first
   operands was missing.
2) Condition of `If`. Also added a test for guards.
SI-8675 Add another test case for swallowed type errors

As reported on scala-internals. After tightening up the treatment
of undetermined type parameters in SI-7944, the enclosed test
case no longer typechecks. And since the regression fixed in the
previous commit, the error was swallowed by the typechecker only
to be burped up by a crash in the backend.
SI-7577  Incorrect documentation: current default isn't Vector

Fixed documentation to specify List in four cases where it was wrong or missing.
Merge pull request #3758 from gourlaysama/wip/t7372

SI-7372 fix wrong insertion point for binary & linear search.
SI-7562  Regex.findAllIn does not report all matches

Changed findAllIn docs to clarify that it finds non-overlapping matches.