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}