blob: b899c04999f2bab7e7201a48759932dbb435d3d1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/* ____ ____ ____ ____ ______ *\
** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
** /_____/\____/\___/\____/____/ **
\* */
// $Id$
package scala.tools.nsc.reporters;
import scala.collection.mutable.HashSet;
import scala.tools.nsc.util.Position;
/**
* This reporter implements filtering.
*/
abstract class AbstractReporter extends Reporter {
private val positions = new HashSet[Position]();
def display(pos : Position, msg : String, severity : Severity) : Unit;
var prompt : Boolean = false;
var verbose : Boolean = false;
var nowarn : Boolean = false;
def displayPrompt : Unit;
// XXX: while is pos ignored?
protected def info0(pos : Position, msg : String, severity : Severity, force : Boolean) : Unit = severity match {
case INFO => if (force || verbose) display(pos, msg, severity);
case WARNING => {
val hidden = testAndLog(pos);
if (!nowarn) {
if (!hidden || prompt) display(pos, msg, severity);
if (prompt) displayPrompt;
}
}
case ERROR => {
val hidden = testAndLog(pos);
if (!hidden || prompt) display(pos, msg, severity);
if (prompt) displayPrompt;
}
}
//########################################################################
// Private Methods
/** Logs a position and returns true if it was already logged. */
private def testAndLog(pos : Position) : Boolean = {
if (pos eq null) return false;
if (pos.column == 0) return false;
if (positions.contains(pos)) return true;
positions += (pos);
return false;
}
//########################################################################
}
|