internal override bool IsCompatibleDefinition(UserSymbol s) { UserCnstSymb us = s as UserCnstSymb; return(us != null && us.UserCnstKind == UserCnstKind && us.IsAutoGen == IsAutoGen); }
/// <summary> /// A short-cut for registering model variables. Is only legal /// when is it already known that no symbol with this name exists. /// </summary> internal void AddModelConstant(Id id, int sid) { Contract.Requires(id != null && id.Fragments.Length == 1); var smbCnstName = "%" + id.Name; Contract.Assert(!symbols.ContainsKey(smbCnstName)); var usrSymb = new UserCnstSymb(this, Factory.Instance.MkId(smbCnstName, id.Span), UserCnstSymbKind.New, true); usrSymb.Id = sid; symbols.Add(smbCnstName, usrSymb); }
/// <summary> /// Creates a new anononymous model constant for _ appearing in a partial model. /// </summary> internal void AddAnonModelConstant(Id id, int sid) { Contract.Requires(id != null && id.Name == API.ASTQueries.ASTSchema.Instance.DontCareName); var smbCnstName = string.Format("%~sym{0}", nextAnonSymbolicConstant++); Contract.Assert(!symbols.ContainsKey(smbCnstName)); var usrSymb = new UserCnstSymb(this, Factory.Instance.MkId(smbCnstName, id.Span), UserCnstSymbKind.New, true); usrSymb.Id = sid; symbols.Add(smbCnstName, usrSymb); Contract.Assert(id.CompilerData == null); id.CompilerData = usrSymb; }