Skip to content

Commit 1d7430c

Browse files
committed
De-duplication in Contexts.
Friends don't let friends cut and paste.
1 parent cf18d87 commit 1d7430c

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/compiler/scala/tools/nsc/typechecker/Contexts.scala

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)