コード例 #1
0
ファイル: Inferrer.cs プロジェクト: Zekka/type-inference
 public void Fail(string msg, params int[] blame)
 {
     if (Failed)
     {
         return;
     }
     Error = GenerateError(msg, from i in blame select Source(i));
 }
コード例 #2
0
ファイル: Inferrer.cs プロジェクト: Zekka/type-inference
 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;
 }
コード例 #3
0
ファイル: Inferrer.cs プロジェクト: Zekka/type-inference
 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) });
     }
 }
コード例 #4
0
ファイル: Inferrer.cs プロジェクト: Zekka/type-inference
 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) });
     }
 }