public ListInitExpressionNode(ListInitExpression expression, Container container) : base(expression, container)//, [Optional]IExpressionParser parser) : base(expression, parser) { var parser = container.GetInstance <IExpressionParser>(); Initializers = expression.Initializers.Select(e => new ElementInitNode(e, container)).ToList(); NewExpression = parser.Parse <NewExpressionNode>(expression.NewExpression); }
public void Parse_NewExpressionNoArguments() { ASTNode root = ExpressionParser.Parse("new Vector3()"); NewExpressionNode expressionNode = AssertInstanceOfAndReturn <NewExpressionNode>(root); Assert.AreEqual(typeof(Vector3), TypeProcessor.ResolveType(expressionNode.typeLookup, new string[] { "UnityEngine" })); Assert.AreEqual(0, expressionNode.parameters.Count); }
public MemberInitExpressionNode(MemberInitExpression expression, Container container) : base(expression, container)//, [Optional]IExpressionParser parser) : base(expression, parser) { var memberBindingParser = container.GetInstance <IMemberBingingParser>(); var expressionParser = container.GetInstance <IExpressionParser>(); Bindings = expression.Bindings.Select(e => memberBindingParser.Parse(e)).ToList(); NewExpression = expressionParser.Parse <NewExpressionNode>(expression.NewExpression); }
protected override Expression VisitNew(NewExpression node) { var newExpression = new NewExpressionNode(node.Type, node.Constructor, node.Members.ToArray()); AddChild(newExpression); foreach (var argument in node.Arguments) { newExpression.Arguments.Add((ExpressionNode)this.VisitNode(argument)); } return(node); }
public void Parse_NewExpression_NamespaceWithGeneric() { ASTNode root = ExpressionParser.Parse("new System.Tuple<float, float, float>(1, 2, 3)"); NewExpressionNode expressionNode = AssertInstanceOfAndReturn <NewExpressionNode>(root); Assert.AreEqual(typeof(Tuple <float, float, float>), TypeProcessor.ResolveType(expressionNode.typeLookup)); Assert.AreEqual(3, expressionNode.parameters.Count); LiteralNode param0 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[0]); LiteralNode param1 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[1]); LiteralNode param2 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[2]); Assert.AreEqual("1", param0.rawValue); Assert.AreEqual("2", param1.rawValue); Assert.AreEqual("3", param2.rawValue); }
public void Parse_NewExpression() { ASTNode root = ExpressionParser.Parse("new Vector3(1, 2, 3)"); NewExpressionNode expressionNode = AssertInstanceOfAndReturn <NewExpressionNode>(root); Assert.AreEqual(typeof(Vector3), TypeProcessor.ResolveType(expressionNode.typeLookup, new string[] { "UnityEngine" })); Assert.AreEqual(3, expressionNode.parameters.Count); LiteralNode param0 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[0]); LiteralNode param1 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[1]); LiteralNode param2 = AssertInstanceOfAndReturn <LiteralNode>(expressionNode.parameters[2]); Assert.AreEqual("1", param0.rawValue); Assert.AreEqual("2", param1.rawValue); Assert.AreEqual("3", param2.rawValue); }