summaryrefslogtreecommitdiff
path: root/sources/scalac/checkers/Checker.java
blob: ae52a5b1f627b6e8c7b9b1c967757b6b39578a51 (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
/*     ____ ____  ____ ____  ______                                     *\
**    / __// __ \/ __// __ \/ ____/    SOcos COmpiles Scala             **
**  __\_ \/ /_/ / /__/ /_/ /\_ \       (c) 2002, LAMP/EPFL              **
** /_____/\____/\___/\____/____/                                        **
\*                                                                      */

// $Id$

package scalac.checkers;

import scalac.ast.*;
import scalac.Global;

public abstract class Checker extends Traverser {
    protected final Global global;

    public Checker(Global global) {
        this.global = global;
    }

    public boolean implies(boolean b1, boolean b2) {
        return (!b1) | b2;
    }

    public void verify(Tree tree, boolean b, String name, String message) {
        if (! b) {
            System.err.println("ERROR: Condition '" + name + "' violated (after "
                               + global.currentPhase + ")!");
            System.err.println(message);
            global.debugPrinter.print(tree);
            System.err.println();
        }
    }

    abstract public void check(Tree tree);

    public void traverse(Tree tree) {
        check(tree);
        super.traverse(tree);
    }
}