I accidentally changed the behaviour here: this issues through `c` rather than `context`.

In my master on branch against master, I tried:

```scala
    @inline
    final def typerReportAnyContextErrors[T](c: Context)(f: Typer => T): T = {
      val res = f(newTyper(c))
      c.firstError match {
        case Some(err) =>
          context.issue(err)
          c.reportBuffer.warnings foreach {
            case (pos, msg) => context.warning(pos, msg)
          }
          // Seemingly we should perform `c.reportBuffer.clearAll()` here. But
          // `context` might share the ReportBuffer with `c`.
        case None =>
      }
      res
    }
```

@hubertp Can you offer any insights into: a) the way that error buffers are shared between parent/child contexts; and b) whether this particular code should just unconditionally issue the error, rather than leaving it up to the buffering mode of `context`?