public void ResolveFunctBodies() { foreach (var binding in this.functWorkData) { session.PushContext( "in funct '" + binding.name.GetString() + "'", binding.declNode.GetSpan()); var funct = session.GetFunct(binding.declIndex); var foundErrors = FunctBodyResolver.Resolve( this.session, funct, binding.useDirectives, binding.declNode.bodyExpression); if (!foundErrors) { FunctTypeInferencer.DoInference(this.session, funct); } if (!foundErrors) { foundErrors = FunctTypeChecker.Check(this.session, funct); } if (!foundErrors) { foundErrors = FunctInitChecker.Check(this.session, funct); } session.PopContext(); } }
public static void DoInference(Core.Session session, Core.DeclFunct funct) { var inferencer = new FunctTypeInferencer(session, funct); inferencer.ApplyRules(); }