@@ -354,32 +354,30 @@ trait Contexts { self: Analyzer =>
354354
355355 private def unitError (pos : Position , msg : String ) =
356356 unit.error(pos, if (checking) " \n **** ERROR DURING INTERNAL CHECKING ****\n " + msg else msg)
357-
358- def issue (err : AbsTypeError ) {
357+
358+ @ inline private def issueCommon (err : AbsTypeError )( pf : PartialFunction [ AbsTypeError , Unit ] ) {
359359 debugwarn(" issue error: " + err.errMsg)
360360 if (settings.Yissuedebug .value) (new Exception ).printStackTrace()
361- if (reportErrors) unitError( err.errPos, addDiagString (err.errMsg) )
361+ if (pf isDefinedAt err) pf (err)
362362 else if (bufferErrors) { buffer += err }
363363 else throw new TypeError (err.errPos, err.errMsg)
364364 }
365365
366+ def issue (err : AbsTypeError ) {
367+ issueCommon(err) { case _ if reportErrors =>
368+ unitError(err.errPos, addDiagString(err.errMsg))
369+ }
370+ }
371+
366372 def issueAmbiguousError (pre : Type , sym1 : Symbol , sym2 : Symbol , err : AbsTypeError ) {
367- debugwarn(" issue ambiguous error: " + err.errMsg)
368- if (settings.Yissuedebug .value) (new Exception ).printStackTrace()
369- if (ambiguousErrors) {
373+ issueCommon(err) { case _ if ambiguousErrors =>
370374 if (! pre.isErroneous && ! sym1.isErroneous && ! sym2.isErroneous)
371375 unitError(err.errPos, err.errMsg)
372- } else if (bufferErrors) { buffer += err }
373- else throw new TypeError (err.errPos, err.errMsg)
376+ }
374377 }
375378
376379 def issueAmbiguousError (err : AbsTypeError ) {
377- debugwarn(" issue ambiguous error: " + err.errMsg)
378- if (settings.Yissuedebug .value) (new Exception ).printStackTrace()
379- if (ambiguousErrors)
380- unitError(err.errPos, addDiagString(err.errMsg))
381- else if (bufferErrors) { buffer += err }
382- else throw new TypeError (err.errPos, err.errMsg)
380+ issueCommon(err) { case _ if ambiguousErrors => unitError(err.errPos, addDiagString(err.errMsg)) }
383381 }
384382
385383 // TODO remove
0 commit comments