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)); }
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); }
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); }
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); }
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); }
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); }
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>()); }
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); }