public Argument?Execute(SyntaxNode node) { try { var result = EngineInstruction.Evaluate(this, node); if (result != null) { return(new Argument(node, result)); } } catch (CompilerException compilerException) { Issues.Add(compilerException.Origin ?? node, CompilerIssueType.Error, compilerException.Message, compilerException.InnerException); if (Context.FailOnError) { // Instead of propagating the exception, we just stop. Stop(); } } return(null); }
public void NonValidTypeException() { var ex = Assert.Throws <ArgumentNullException>(() => { EngineInstruction.Evaluate(CompilerStateFixtures.Empty(), null); }); Assert.Equal("node", ex.ParamName); }
public void NullElementException() { var ex = Assert.Throws <ArgumentNullException>(() => { EngineInstruction.Evaluate(null, new ListSyntax()); }); Assert.Equal("state", ex.ParamName); }
public Argument?Execute(Element element, Argument[] arguments) { var instruction = EngineInstruction.Create(element); try { var result = instruction?.Execute(this, arguments); if (result != null) { return(new Argument(element, result)); } } catch (CompilerException compilerException) { Issues.Add(compilerException.Origin ?? element, CompilerIssueType.Error, compilerException.Message, compilerException.InnerException); } return(null); }