public override void Validate(Environment env) { using var _ = env.Scopes.Use(); Expr.Validate(env); Expr.AssertType(new BooleanType()); Block.Validate(env); }
public override void Validate(Environment env) { Expr.Validate(env); DerivedType = Expr.Type; if (TypeAnnotation != null) { DerivedType = TypeAnnotation.EvalType(env); Expr.AssertType(DerivedType); } env.Scopes.Values.Bind(Name, new VariableBinding() { Name = Name, Type = DerivedType, IsConst = IsConst, }); }