public void Fail(string msg, params int[] blame) { if (Failed) { return; } Error = GenerateError(msg, from i in blame select Source(i)); }
internal Tools(Inferrer <ClueSource, ClueConstant> inferrer, params ClueId[] clues) { _inferrer = inferrer; _clues = clues.ToArray(); _vars = new Vars(inferrer._constraintFundeps); _generator = new SymbolGenerator(); _ruleScope = _generator.CreateScope(); _userScopes = (from _ in clues select _generator.CreateScope()).ToArray(); PreconditionsSatisfied = false; Error = null; }
public void Unify(int i1, int i2) { if (Failed) { return; } _vars.Unify(User(i1, Type(i1)), User(i2, Type(i2))); if (_vars.Failed) { Error = GenerateError($"could not match {i1} with {i2}", new[] { Source(i1), Source(i2) }); } }
public void Unify(free <type> t, int i) { if (Failed) { return; } _vars.Unify(Rule(t), User(i, Type(i))); if (_vars.Failed) { Error = GenerateError($"could not match {i} with inference rule type {t}", new[] { Source(i) }); } }