Esempio n. 1
0
        public void SubtractNumberAndStringFails()
        {
            var binAst = BinExpr(Num(1), Str("3"), "-");

            var errorCollector = new PrinterErrorListener();
            var staticChecker  = new StaticChecker(errorCollector);

            Assert.IsFalse(binAst.Accept(staticChecker) && (errorCollector.Count != 0));
        }
Esempio n. 2
0
        public void SimpleIf()
        {
            var ast = If(BinExpr(Num(1), Num(1), ">"), Num(2), Num(3));

            var errorListener = new PrinterErrorListener();

            StaticChecker staticChecker = new StaticChecker(errorListener);

            Assert.IsTrue(ast.Accept(staticChecker) && errorListener.Count == 0);
        }
Esempio n. 3
0
        public void Variables1()
        {
            var let = Let(
                Decls(
                    VarDecl("x", Num(1))
                    ),
                Seq(Var("x")));

            var errors        = new PrinterErrorListener();
            var staticChecker = new StaticChecker(errors, InitialScope());

            Assert.IsTrue(let.Accept(staticChecker) && errors.Count == 0);
        }
Esempio n. 4
0
        public void EmptyLet()
        {
            var let = Let(
                Decls(
                    ),
                Seq());

            var errors        = new PrinterErrorListener();
            var staticChecker = new StaticChecker(errors, InitialScope());

            Assert.IsTrue(let.Accept(staticChecker));
            Assert.IsTrue(errors.Count == 0);
        }
Esempio n. 5
0
        public void BasicArrayInstantiationFail()
        {
            var arrayInstDecl = VarDecl("a", ArrayInst("intArray", Num(1), Num(5)));

            var let = Let(
                Decls(arrayInstDecl),
                Seq()
                );

            var errorCollector = new PrinterErrorListener();
            var staticChecker  = new StaticChecker(errorCollector, InitialScope());

            Assert.IsFalse(let.Accept(staticChecker));
            Assert.IsFalse(errorCollector.Count == 0);
        }
Esempio n. 6
0
        public void BasicArrayDeclarationFails()
        {
            var arrayDecl = ArrayDecl("intArray", "unknowntype");

            var let = Let(
                Decls(arrayDecl),
                Seq()
                );

            var errorCollector = new PrinterErrorListener();
            var staticChecker  = new StaticChecker(errorCollector, InitialScope());

            Assert.IsFalse(let.Accept(staticChecker));
            Assert.IsFalse(errorCollector.Count == 0);
        }
Esempio n. 7
0
        public void BasicArrayAccess()
        {
            var arrayDecl     = ArrayDecl("intArray", "int");
            var arrayInstDecl = VarDecl("a", ArrayInst("intArray", Num(1), Num(5)));

            var let = Let(
                Decls(arrayDecl, arrayInstDecl),
                Seq(ArrayAccess(Var("a"), Num(0)))
                );

            var errorCollector = new PrinterErrorListener();
            var staticChecker  = new StaticChecker(errorCollector, InitialScope());

            Assert.IsTrue(let.Accept(staticChecker));
            Assert.IsTrue(errorCollector.Count == 0);
            Assert.IsTrue(let.ReturnType == TigerType.GetType <IntType>());
        }
Esempio n. 8
0
        public void FunctionWithRepeatedParameters()
        {
            var functionAst = Fun("add",
                                  Parameters(
                                      Param("a", "int"),
                                      Param("a", "int")
                                      ),
                                  BinExpr(Var("a"), Var("a"), "+"),
                                  "int");

            var let = Let(
                Decls(functionAst),
                Seq()
                );

            var errorCollector = new PrinterErrorListener();
            var staticChecker  = new StaticChecker(errorCollector);

            Assert.IsFalse(let.Accept(staticChecker));
            Assert.IsFalse(errorCollector.Count == 0);
        }