001package org.clafer.ast; 002 003import org.clafer.common.Check; 004 005/** 006 * A local is a binding of a value to a name in quantifiers. For example, x, y, 007 * and z are the locals in the expression {@code all x;y:A, z:B | ...}. 008 * 009 * @author jimmy 010 */ 011public class AstLocal implements AstSetExpr, AstVar { 012 013 private final String name; 014 015 AstLocal(String name) { 016 this.name = Check.notNull(name); 017 } 018 019 /** 020 * {@inheritDoc} 021 */ 022 @Override 023 public String getName() { 024 return name; 025 } 026 027 /** 028 * {@inheritDoc} 029 */ 030 @Override 031 public <A, B> B accept(AstExprVisitor<A, B> visitor, A a) { 032 return visitor.visit(this, a); 033 } 034 035 /** 036 * {@inheritDoc} 037 */ 038 @Override 039 public boolean equals(Object obj) { 040 return this == obj; 041 } 042 043 /** 044 * {@inheritDoc} 045 */ 046 @Override 047 public int hashCode() { 048 return name.hashCode(); 049 } 050 051 /** 052 * {@inheritDoc} 053 */ 054 @Override 055 public String toString() { 056 return name; 057 } 058}