001package gudusoft.gsqlparser.ir.common;
002
003import java.util.Collections;
004import java.util.List;
005
006/**
007 * Evidence supporting an analysis conclusion.
008 * Each edge or binding decision carries evidence explaining why it was established.
009 */
010public final class Evidence {
011
012    /** Evidence type code. */
013    public final EvidenceKind kind;
014
015    /** Human-readable message. */
016    public final String message;
017
018    /** Associated source code positions. */
019    public final List<SourceAnchor> anchors;
020
021    public Evidence(EvidenceKind kind, String message, List<SourceAnchor> anchors) {
022        this.kind = kind;
023        this.message = message;
024        this.anchors = anchors != null ? Collections.unmodifiableList(anchors) : Collections.<SourceAnchor>emptyList();
025    }
026
027    public Evidence(EvidenceKind kind, String message) {
028        this(kind, message, null);
029    }
030
031    @Override
032    public String toString() {
033        return kind + ": " + message;
034    }
035}