Ejemplo n.º 1
0
        public override void Visit(CallStatement statement)
        {
            var tcv = new TypeCheckVisitor();

            if (statement.ArgumentExpressions.Count != statement.Target.Parameters.Count)
                throw new Exception("Parameter count mismatch");

            for (var i = 0; i < statement.ArgumentExpressions.Count; i++)
            {
                statement.ArgumentExpressions[i].AcceptVisitor(tcv);
                if (tcv.ResultType != statement.Target.Parameters[i].Type.ToReflectionType())
                    throw new Exception("Parameter type mismatch");
            }
        }
Ejemplo n.º 2
0
        public override void Visit(CallStatement statement)
        {
            var tcv = new TypeCheckVisitor();

            if (statement.ArgumentExpressions.Count != statement.Target.Parameters.Count)
            {
                throw new Exception("Parameter count mismatch");
            }

            for (var i = 0; i < statement.ArgumentExpressions.Count; i++)
            {
                statement.ArgumentExpressions[i].AcceptVisitor(tcv);
                if (tcv.ResultType != statement.Target.Parameters[i].Type.ToReflectionType())
                {
                    throw new Exception("Parameter type mismatch");
                }
            }
        }
Ejemplo n.º 3
0
        void VerifyElements()
        {
            var tcv = new TypeCheckVisitor();
            var csv = new CallStatementVisitor();

            foreach (var element in Elements)
                element.AcceptVisitor(tcv);

            foreach (var call in Elements.Where(ele => ele is CallStatement))
                call.AcceptVisitor(csv);
        }