public override void Validate(Environment env)
        {
            using var _ = env.Scopes.Use();
            Expr.Validate(env);
            Expr.AssertType(new BooleanType());

            Block.Validate(env);
        }
Esempio n. 2
0
        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,
            });
        }