public override object VisitObjectCreateExpression(ICSharpCode.OldNRefactory.Ast.ObjectCreateExpression objectCreateExpression, object data) { foreach (var tuple in searchedMembers) { var searchedMember = tuple.Item1; IMethod method = searchedMember as IMethod; if (method != null && method.IsConstructor) { ResolveResult resolveResult = resolver.ResolveExpression(objectCreateExpression, ConvertLocation(objectCreateExpression.StartLocation)); if (resolveResult != null && resolveResult.ResolvedType != null) { IType resolvedType = resolver.Dom.GetType(resolveResult.ResolvedType); int pCount = objectCreateExpression.Parameters != null ? objectCreateExpression.Parameters.Count : 0; if (resolvedType != null && resolvedType.FullName == method.DeclaringType.FullName && pCount == method.Parameters.Count) { int line, column; if (SearchText(SearchedMemberName, objectCreateExpression.StartLocation.Line, objectCreateExpression.StartLocation.Column, out line, out column)) { AddUniqueReference(line, column, SearchedMemberName); } } } } IProperty property = searchedMember as IProperty; if (property != null && objectCreateExpression.ObjectInitializer != null) { ResolveResult resolveResult = resolver.ResolveExpression(objectCreateExpression, ConvertLocation(objectCreateExpression.StartLocation)); if (resolveResult != null && resolveResult.ResolvedType != null) { IType resolvedType = resolver.Dom.GetType(resolveResult.ResolvedType); if (resolvedType != null && resolvedType.FullName == property.DeclaringType.FullName) { foreach (Expression expr in objectCreateExpression.ObjectInitializer.CreateExpressions) { NamedArgumentExpression namedArgumentExpression = expr as NamedArgumentExpression; if (namedArgumentExpression == null) { continue; } if (namedArgumentExpression.Name == property.Name) { AddUniqueReference(namedArgumentExpression.StartLocation.Line, namedArgumentExpression.StartLocation.Column, SearchedMemberName); } } } } } } return(base.VisitObjectCreateExpression(objectCreateExpression, data)); }
public virtual object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { Debug.Assert((objectCreateExpression != null)); Debug.Assert((objectCreateExpression.CreateType != null)); Debug.Assert((objectCreateExpression.Parameters != null)); Debug.Assert((objectCreateExpression.ObjectInitializer != null)); objectCreateExpression.CreateType.AcceptVisitor(this, data); foreach (Expression o in objectCreateExpression.Parameters) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } return objectCreateExpression.ObjectInitializer.AcceptVisitor(this, data); }
void NewExpression( #line 2040 "Frames/cs.ATG" out Expression pexpr) { #line 2041 "Frames/cs.ATG" pexpr = null; List<Expression> parameters = new List<Expression>(); TypeReference type = null; Expression expr; Expect(89); if (StartOf(10)) { NonArrayType( #line 2048 "Frames/cs.ATG" out type); } if (la.kind == 16 || la.kind == 20) { if (la.kind == 20) { #line 2054 "Frames/cs.ATG" ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters); lexer.NextToken(); #line 2055 "Frames/cs.ATG" if (type == null) Error("Cannot use an anonymous type with arguments for the constructor"); if (StartOf(26)) { Argument( #line 2056 "Frames/cs.ATG" out expr); #line 2056 "Frames/cs.ATG" SafeAdd(oce, parameters, expr); while (la.kind == 14) { lexer.NextToken(); Argument( #line 2057 "Frames/cs.ATG" out expr); #line 2057 "Frames/cs.ATG" SafeAdd(oce, parameters, expr); } } Expect(21); #line 2059 "Frames/cs.ATG" pexpr = oce; if (la.kind == 16) { CollectionOrObjectInitializer( #line 2060 "Frames/cs.ATG" out expr); #line 2060 "Frames/cs.ATG" oce.ObjectInitializer = (CollectionInitializerExpression)expr; } } else { #line 2061 "Frames/cs.ATG" ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters); CollectionOrObjectInitializer( #line 2062 "Frames/cs.ATG" out expr); #line 2062 "Frames/cs.ATG" oce.ObjectInitializer = (CollectionInitializerExpression)expr; #line 2063 "Frames/cs.ATG" pexpr = oce; } } else if (la.kind == 18) { lexer.NextToken(); #line 2068 "Frames/cs.ATG" ArrayCreateExpression ace = new ArrayCreateExpression(type); /* we must not change RankSpecifier on the null type reference*/ if (ace.CreateType.IsNull) { ace.CreateType = new TypeReference(""); } pexpr = ace; int dims = 0; List<int> ranks = new List<int>(); if (la.kind == 14 || la.kind == 19) { while (la.kind == 14) { lexer.NextToken(); #line 2075 "Frames/cs.ATG" dims += 1; } Expect(19); #line 2076 "Frames/cs.ATG" ranks.Add(dims); dims = 0; while (la.kind == 18) { lexer.NextToken(); while (la.kind == 14) { lexer.NextToken(); #line 2077 "Frames/cs.ATG" ++dims; } Expect(19); #line 2077 "Frames/cs.ATG" ranks.Add(dims); dims = 0; } #line 2078 "Frames/cs.ATG" ace.CreateType.RankSpecifier = ranks.ToArray(); CollectionInitializer( #line 2079 "Frames/cs.ATG" out expr); #line 2079 "Frames/cs.ATG" ace.ArrayInitializer = (CollectionInitializerExpression)expr; } else if (StartOf(6)) { Expr( #line 2080 "Frames/cs.ATG" out expr); #line 2080 "Frames/cs.ATG" if (expr != null) parameters.Add(expr); while (la.kind == 14) { lexer.NextToken(); #line 2081 "Frames/cs.ATG" dims += 1; Expr( #line 2082 "Frames/cs.ATG" out expr); #line 2082 "Frames/cs.ATG" if (expr != null) parameters.Add(expr); } Expect(19); #line 2084 "Frames/cs.ATG" ranks.Add(dims); ace.Arguments = parameters; dims = 0; while (la.kind == 18) { lexer.NextToken(); while (la.kind == 14) { lexer.NextToken(); #line 2085 "Frames/cs.ATG" ++dims; } Expect(19); #line 2085 "Frames/cs.ATG" ranks.Add(dims); dims = 0; } #line 2086 "Frames/cs.ATG" ace.CreateType.RankSpecifier = ranks.ToArray(); if (la.kind == 16) { CollectionInitializer( #line 2087 "Frames/cs.ATG" out expr); #line 2087 "Frames/cs.ATG" ace.ArrayInitializer = (CollectionInitializerExpression)expr; } } else SynErr(211); } else SynErr(212); }
public sealed override object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { this.BeginVisit(objectCreateExpression); object result = this.TrackedVisitObjectCreateExpression(objectCreateExpression, data); this.EndVisit(objectCreateExpression); return result; }
public virtual object TrackedVisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { return base.VisitObjectCreateExpression(objectCreateExpression, data); }
void ObjectCreateExpression( #line 1935 "VBNET.ATG" out Expression oce) { #line 1937 "VBNET.ATG" TypeReference type = null; Expression initializer = null; List<Expression> arguments = null; ArrayList dimensions = null; oce = null; bool canBeNormal; bool canBeReDim; Expect(148); if (StartOf(7)) { NonArrayTypeName( #line 1945 "VBNET.ATG" out type, false); if (la.kind == 25) { lexer.NextToken(); NormalOrReDimArgumentList( #line 1946 "VBNET.ATG" out arguments, out canBeNormal, out canBeReDim); Expect(26); if (la.kind == 23 || #line 1947 "VBNET.ATG" la.kind == Tokens.OpenParenthesis) { if ( #line 1947 "VBNET.ATG" la.kind == Tokens.OpenParenthesis) { ArrayTypeModifiers( #line 1948 "VBNET.ATG" out dimensions); CollectionInitializer( #line 1949 "VBNET.ATG" out initializer); } else { CollectionInitializer( #line 1950 "VBNET.ATG" out initializer); } } #line 1952 "VBNET.ATG" if (canBeReDim && !canBeNormal && initializer == null) initializer = new CollectionInitializerExpression(); } } #line 1956 "VBNET.ATG" if (initializer == null) { oce = new ObjectCreateExpression(type, arguments); } else { if (dimensions == null) dimensions = new ArrayList(); dimensions.Insert(0, (arguments == null) ? 0 : Math.Max(arguments.Count - 1, 0)); type.RankSpecifier = (int[])dimensions.ToArray(typeof(int)); ArrayCreateExpression ace = new ArrayCreateExpression(type, initializer as CollectionInitializerExpression); ace.Arguments = arguments; oce = ace; } if (la.kind == 218) { #line 1970 "VBNET.ATG" NamedArgumentExpression memberInitializer = null; lexer.NextToken(); #line 1974 "VBNET.ATG" CollectionInitializerExpression memberInitializers = new CollectionInitializerExpression(); memberInitializers.StartLocation = la.Location; Expect(23); MemberInitializer( #line 1978 "VBNET.ATG" out memberInitializer); #line 1979 "VBNET.ATG" memberInitializers.CreateExpressions.Add(memberInitializer); while (la.kind == 12) { lexer.NextToken(); MemberInitializer( #line 1981 "VBNET.ATG" out memberInitializer); #line 1982 "VBNET.ATG" memberInitializers.CreateExpressions.Add(memberInitializer); } Expect(24); #line 1986 "VBNET.ATG" memberInitializers.EndLocation = t.Location; if(oce is ObjectCreateExpression) { ((ObjectCreateExpression)oce).ObjectInitializer = memberInitializers; } } }
public override object VisitQueryExpression(QueryExpression queryExpression, object data) { if (this.queryExpression != null) // prevent endloss loop: var n = from n select n; n.$ (doesn't make sense, but you can type this) return null; this.queryExpression = queryExpression; IReturnType type = null; QueryExpressionSelectClause selectClause = queryExpression.SelectOrGroupClause as QueryExpressionSelectClause; if (selectClause != null) { InvocationExpression selectInvocation = new InvocationExpression (new MemberReferenceExpression (queryExpression.FromClause.InExpression, "Select")); LambdaExpression selectLambdaExpr = new LambdaExpression (); selectLambdaExpr.Parent = selectInvocation; selectLambdaExpr.Parameters.Add (new ParameterDeclarationExpression (null, "par")); selectLambdaExpr.ExpressionBody = selectClause.Projection; TypeReference typeRef = new TypeReference ("System.Func"); typeRef.GenericTypes.Add (TypeReference.Null); ResolveResult result = resolver.ResolveExpression (selectLambdaExpr, resolver.ResolvePosition, false); typeRef.GenericTypes.Add (NRefactoryResolver.ConvertToTypeReference (result.ResolvedType)); ObjectCreateExpression createExpression = new ObjectCreateExpression (typeRef, new List<Expression> (new Expression [] { null, selectLambdaExpr })); selectInvocation.Arguments.Add (createExpression); return CreateResult (ResolveType (selectInvocation)); } QueryExpressionGroupClause groupClause = queryExpression.SelectOrGroupClause as QueryExpressionGroupClause; if (groupClause != null) { InvocationExpression groupInvocation = new InvocationExpression (new MemberReferenceExpression (queryExpression.FromClause.InExpression, "GroupBy")); LambdaExpression keyLambdaExpr = new LambdaExpression (); keyLambdaExpr.Parent = groupInvocation; keyLambdaExpr.Parameters.Add (new ParameterDeclarationExpression (null, "par")); keyLambdaExpr.ExpressionBody = groupClause.GroupBy; groupInvocation.Arguments.Add (keyLambdaExpr); LambdaExpression elementLambdaExpr = new LambdaExpression (); elementLambdaExpr.Parent = groupInvocation; elementLambdaExpr.Parameters.Add (new ParameterDeclarationExpression (null, "par")); elementLambdaExpr.ExpressionBody = groupClause.Projection; groupInvocation.Arguments.Add (elementLambdaExpr); return CreateResult (ResolveType (groupInvocation)); } if (type != null) return CreateResult (new DomReturnType("System.Collections.Generic.IEnumerable", false, new List<IReturnType> (new IReturnType[] { type }))); return null; }
public override object VisitObjectCreateExpression (ObjectCreateExpression objectCreateExpression, object data) { if (objectCreateExpression.IsAnonymousType) { ResolveResult result = new AnonymousTypeResolveResult (CreateAnonymousClass (objectCreateExpression.ObjectInitializer)); result.CallingType = resolver.CallingType; result.CallingMember = resolver.CallingMember; return result; } return CreateResult (objectCreateExpression.CreateType); }
public virtual object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { Debug.Assert((objectCreateExpression != null)); Debug.Assert((objectCreateExpression.CreateType != null)); Debug.Assert((objectCreateExpression.Parameters != null)); Debug.Assert((objectCreateExpression.ObjectInitializer != null)); nodeStack.Push(objectCreateExpression.CreateType); objectCreateExpression.CreateType.AcceptVisitor(this, data); objectCreateExpression.CreateType = ((TypeReference)(nodeStack.Pop())); for (int i = 0; i < objectCreateExpression.Parameters.Count; i++) { Expression o = objectCreateExpression.Parameters[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (Expression)nodeStack.Pop(); if (o == null) objectCreateExpression.Parameters.RemoveAt(i--); else objectCreateExpression.Parameters[i] = o; } nodeStack.Push(objectCreateExpression.ObjectInitializer); objectCreateExpression.ObjectInitializer.AcceptVisitor(this, data); objectCreateExpression.ObjectInitializer = ((CollectionInitializerExpression)(nodeStack.Pop())); return null; }
public virtual object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { throw new global::System.NotImplementedException("ObjectCreateExpression"); }
public override object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { return new CodeObjectCreateExpression(ConvType(objectCreateExpression.CreateType), objectCreateExpression.Parameters == null ? null : GetExpressionList(objectCreateExpression.Parameters)); }