public void variable_initialization_with_undefined_function() { // let var x:=Foo() in x and var target = new LetInExpression { VariableDeclarations = new List <VariableDeclarationBase> { new VariableDeclarationExpression { VariableName = new MemberIdentifierNode { Name = "x" }, VariableTypeName = new TypeReferenceNode(), Value = new FunctionInvokeExpression { FunctionName = new IdentifierNode { Name = "Foo" } } } }, Body = new ListSemiExpression { new VariableAccessExpression { VariableName = "x" } } }; AstHelper helper = Mother.CreateRuntime(); try { target.Compile(helper); } catch (SemanticException e) { var error = e.Errors.First() as FunctionNotDefinedError; Assert.IsNotNull(error); } }
public void variable_declaration_without_type_equals_null() { // let var x:=nil in x and var target = new LetInExpression { VariableDeclarations = new List <VariableDeclarationBase> { new VariableDeclarationExpression { VariableName = new MemberIdentifierNode { Name = "x" }, VariableTypeName = new TypeReferenceNode(), Value = new NullLiteralExpression() } }, Body = new ListSemiExpression { new VariableAccessExpression { VariableName = "x" } } }; AstHelper helper = Mother.CreateRuntime(); try { target.Compile(helper); } catch (SemanticException e) { var error = e.Errors.First() as CanNotInferTypeError; Assert.IsNotNull(error); Assert.Pass(); } Assert.Fail(); }