public virtual Expression VisitConstructTuple(ConstructTuple consTuple) { if (consTuple == null) return null; consTuple.Fields = this.VisitFieldList(consTuple.Fields); return consTuple; }
private Expression ParseNewAnonymousTypeInstance(SourceContext ctx, TokenSet followers) { SourceContext sctx = this.scanner.CurrentSourceContext; Debug.Assert(this.currentToken == Token.LeftBrace); this.GetNextToken(); ConstructTuple result = new ConstructTuple(); FieldList fields = result.Fields = new FieldList(); TokenSet followersOrCommaOrRightBrace = followers|Token.Comma|Token.RightBrace; while (Parser.UnaryStart[this.currentToken]) { Field f = new Field(); fields.Add(f); f.Flags = FieldFlags.Public; f.SourceContext = this.scanner.CurrentSourceContext; Expression e = this.ParseUnaryExpression(followersOrCommaOrRightBrace|Parser.InfixOperators); if (this.currentToken == Token.Assign) { Identifier id = e as Identifier; if (id == null) { if (e != null) this.HandleError(e.SourceContext, Error.ExpectedIdentifier); } else { f.Name = id; this.GetNextToken(); e = this.ParseExpression(followersOrCommaOrRightBrace); } } else { Identifier id = e as Identifier; if (id != null) f.Name = id; else { QualifiedIdentifier qualId = e as QualifiedIdentifier; if (qualId != null) f.Name = qualId.Identifier; else { //TODO: error message } } } f.Initializer = e; if (e != null) f.SourceContext.EndPos = e.SourceContext.EndPos; if (this.currentToken != Token.Comma) break; this.GetNextToken(); } int endCol = this.scanner.endPos; this.ParseBracket(sctx, Token.RightBrace, followers, Error.ExpectedRightBracket); result.SourceContext = sctx; result.SourceContext.EndPos = endCol; return result; }
public override Expression VisitConstructTuple(ConstructTuple consTuple) { if (consTuple == null) return null; return base.VisitConstructTuple((ConstructTuple)consTuple.Clone()); }
public EventingVisitor(Action<ConstructTuple> visitConstructTuple) { VisitedConstructTuple += visitConstructTuple; } public event Action<ConstructTuple> VisitedConstructTuple; public override Expression VisitConstructTuple(ConstructTuple consTuple) { if (VisitedConstructTuple != null) VisitedConstructTuple(consTuple); return base.VisitConstructTuple(consTuple); }