public virtual object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { Debug.Assert((assignmentExpression != null)); Debug.Assert((assignmentExpression.Left != null)); Debug.Assert((assignmentExpression.Right != null)); assignmentExpression.Left.AcceptVisitor(this, data); return assignmentExpression.Right.AcceptVisitor(this, data); }
public override object VisitAssignmentExpression( ICSharpCode.NRefactory.Ast.AssignmentExpression assignmentExpression, object data) { if (assignmentExpression.Left is IdentifierExpression) { IdentifierExpression idexpr = (IdentifierExpression)assignmentExpression.Left; if (_intvariables.Contains(idexpr.Identifier)) { if (assignmentExpression.Right is PrimitiveExpression) { PrimitiveExpression prim = (PrimitiveExpression)assignmentExpression.Right; if (prim.Value.Equals("MinValue")) { UnlockWith(assignmentExpression); } } else if (assignmentExpression.Right is MemberReferenceExpression) { MemberReferenceExpression memb = (MemberReferenceExpression)assignmentExpression.Right; if (IsMinValue(memb)) { UnlockWith(assignmentExpression); } } } } return(base.VisitAssignmentExpression(assignmentExpression, data)); }
public override object VisitAssignmentExpression(AssignmentExpression assignment, object data) { IdentifierExpression ident = assignment.Left as IdentifierExpression; BinaryOperatorExpression binary = assignment.Right as BinaryOperatorExpression; if (ident != null && binary != null) { IdentifierExpression binaryLeft = binary.Left as IdentifierExpression; if (binaryLeft != null && binaryLeft.Identifier == ident.Identifier) { if (binary.Right is PrimitiveExpression && 1.Equals((binary.Right as PrimitiveExpression).Value)) { if (binary.Op == BinaryOperatorType.Add) { ReplaceCurrentNode(new UnaryOperatorExpression(ident, UnaryOperatorType.PostIncrement)); } if (binary.Op == BinaryOperatorType.Subtract) { ReplaceCurrentNode(new UnaryOperatorExpression(ident, UnaryOperatorType.PostDecrement)); } } else { if (binary.Op == BinaryOperatorType.Add) { ReplaceCurrentNode(new AssignmentExpression(ident, AssignmentOperatorType.Add, binary.Right)); } if (binary.Op == BinaryOperatorType.Subtract) { ReplaceCurrentNode(new AssignmentExpression(ident, AssignmentOperatorType.Subtract, binary.Right)); } } return null; } } return null; }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { tw.WriteStartElement("AssignmentExpression"); tw.WriteAttributeString("Op", assignmentExpression.Op.ToString()); base.VisitAssignmentExpression(assignmentExpression, data); tw.WriteEndElement(); return null; }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { var primitiveExpression = assignmentExpression.Right as PrimitiveExpression; if (primitiveExpression != null) { } return base.VisitAssignmentExpression(assignmentExpression, data); }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { if (!hasAssignment) { if (assignmentExpression.Left is IdentifierExpression) { hasAssignment = (((IdentifierExpression)assignmentExpression.Left).Identifier == name) && (assignmentExpression.StartLocation >= startRange && assignmentExpression.EndLocation <= endRange); } } return base.VisitAssignmentExpression(assignmentExpression, data); }
public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { base.VisitTypeDeclaration(typeDeclaration, data); // visit methods typeDeclaration.Attributes.Clear(); typeDeclaration.BaseTypes.Clear(); // add constructor accepting the wrapped object and the field holding the object FieldDeclaration fd = new FieldDeclaration(null, // no attributes new TypeReference(typeDeclaration.Name), Modifiers.Private); fd.Fields.Add(new VariableDeclaration("wrappedObject")); typeDeclaration.AddChild(fd); typeDeclaration.Name += "Wrapper"; if (typeDeclaration.Type == ClassType.Interface) { typeDeclaration.Type = ClassType.Class; typeDeclaration.Name = typeDeclaration.Name.Substring(1); } ConstructorDeclaration cd = new ConstructorDeclaration(typeDeclaration.Name, Modifiers.Public, new List<ParameterDeclarationExpression>(), null); cd.Parameters.Add(new ParameterDeclarationExpression(fd.TypeReference, "wrappedObject")); // this.wrappedObject = wrappedObject; Expression fieldReference = new MemberReferenceExpression(new ThisReferenceExpression(), "wrappedObject"); Expression assignment = new AssignmentExpression(fieldReference, AssignmentOperatorType.Assign, new IdentifierExpression("wrappedObject")); cd.Body = new BlockStatement(); cd.Body.AddChild(new ExpressionStatement(assignment)); typeDeclaration.AddChild(cd); for (int i = 0; i < typeDeclaration.Children.Count; i++) { object child = typeDeclaration.Children[i]; if (child is MethodDeclaration) { MethodDeclaration method = (MethodDeclaration)child; if (method.Parameters.Count == 0 && (method.Name.StartsWith("Is") || method.Name.StartsWith("Get"))) { // replace the method with a property PropertyDeclaration prop = new PropertyDeclaration(method.Modifier, method.Attributes, method.Name, null); prop.TypeReference = method.TypeReference; prop.GetRegion = new PropertyGetRegion(method.Body, null); typeDeclaration.Children[i] = prop; } } } return null; }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { // Calculate right first so that left does not get invalidated by its calculation Value right = ((Value)assignmentExpression.Right.AcceptVisitor(this, null)).GetPermanentReference(); Value left = (Value)assignmentExpression.Left.AcceptVisitor(this, null); if (!left.IsReference && left.Type.FullName != right.Type.FullName) { throw new GetValueException(string.Format("Type {0} expected, {1} seen", left.Type.FullName, right.Type.FullName)); } left.SetValue(right); return right; }
string GetVariableNameFromAssignment(AssignmentExpression assignment) { if (assignment == null) return null; var identifier = assignment.Left as IdentifierExpression; if (identifier == null) return null; if (assignment.Right is ObjectCreateExpression) // // don't offer action for "a = new Foo()" return null; return identifier.Identifier; }
string GetVariableNameFromAssignment(AssignmentExpression assignment) { if (assignment == null) return null; var identifier = assignment.Left as IdentifierExpression; if (identifier == null) return null; if ((!ExpressionCanBeNull(assignment.Right)) || ExpressionIsValueType(assignment.Right)) // don't offer action where it makes no sense return null; return identifier.Identifier; }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { base.VisitAssignmentExpression(assignmentExpression, data); if (assignmentExpression.Op == AssignmentOperatorType.Assign && !(assignmentExpression.Parent is ExpressionStatement)) { AddInlineAssignHelper(); ReplaceCurrentNode( new InvocationExpression( new IdentifierExpression("InlineAssignHelper"), new List<Expression>().add(assignmentExpression.Left) .add(assignmentExpression.Right))); } return null; }
public override void GenerateCode(List<AbstractNode> nodes, IList items) { ConstructorDeclaration ctor = new ConstructorDeclaration(currentClass.Name, Modifiers.Public, null, null); ctor.Body = new BlockStatement(); foreach (FieldWrapper w in items) { string parameterName = codeGen.GetParameterName(w.Field.Name); ctor.Parameters.Add(new ParameterDeclarationExpression(ConvertType(w.Field.ReturnType), parameterName)); Expression left = new MemberReferenceExpression(new ThisReferenceExpression(), w.Field.Name); Expression right = new IdentifierExpression(parameterName); Expression expr = new AssignmentExpression(left, AssignmentOperatorType.Assign, right); ctor.Body.AddChild(new ExpressionStatement(expr)); } nodes.Add(ctor); }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { if(assignmentExpression.Right is PrimitiveExpression) { PrimitiveExpression prim = (PrimitiveExpression) assignmentExpression.Right; int number; if (int.TryParse(prim.StringValue, out number)) { if (number == 666) UnlockWith(assignmentExpression); } } return base.VisitAssignmentExpression(assignmentExpression, data); }
public override object TrackedVisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data) { VariableDeclaration field = (VariableDeclaration) fieldDeclaration.Fields[0]; TypeDeclaration typeDeclaration = (TypeDeclaration) fieldDeclaration.Parent; NodeTypeExistenceVisitor nodeTypeExistenceVisitor = new NodeTypeExistenceVisitor(typeof(ThisReferenceExpression)); NodeTypeExistenceVisitor indexerNodeExistenceVisitor = new NodeTypeExistenceVisitor(typeof(IndexerExpression)); field.Initializer.AcceptVisitor(nodeTypeExistenceVisitor, null); field.Initializer.AcceptVisitor(indexerNodeExistenceVisitor, null); if (field.Initializer != null && (field.Initializer is InvocationExpression || IsArrayCreation(fieldDeclaration) || nodeTypeExistenceVisitor.Contains || indexerNodeExistenceVisitor.Contains) && !AstUtil.ContainsModifier(fieldDeclaration, Modifiers.Static)) { IList constructors = AstUtil.GetChildrenWithType(typeDeclaration, typeof(ConstructorDeclaration)); IdentifierExpression left = new IdentifierExpression(field.Name); Expression right = field.Initializer; AssignmentExpression assignmentExpression = new AssignmentExpression(left, AssignmentOperatorType.Assign, right); ExpressionStatement ExpressionStatement = new ExpressionStatement(assignmentExpression); field.Initializer = null; ConstructorDeclaration constructorDeclaration = null; ExpressionStatement.Parent = constructorDeclaration; foreach (ConstructorDeclaration consDec in constructors) { if (!AstUtil.ContainsModifier(consDec, Modifiers.Static)) { if (consDec.Parameters.Count == 0) { constructorDeclaration = consDec; constructorDeclaration.Body.Children.Add(ExpressionStatement); constructorDeclaration.Parent = typeDeclaration; return base.TrackedVisitFieldDeclaration(fieldDeclaration, data); } else { consDec.ConstructorInitializer = new ConstructorInitializer(); consDec.ConstructorInitializer.ConstructorInitializerType = ConstructorInitializerType.This; } } } constructorDeclaration = GetConstructor(ExpressionStatement, typeDeclaration); constructorDeclaration.Parent = typeDeclaration; return base.TrackedVisitFieldDeclaration(fieldDeclaration, data); } return base.TrackedVisitFieldDeclaration(fieldDeclaration, data); }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { if (assignmentExpression.Left is MemberReferenceExpression) { MemberReferenceExpression left = (MemberReferenceExpression)assignmentExpression.Left; if (eventVars.Contains(left.MemberName)) // I don't check against correct type yet { if (assignmentExpression.Right is ObjectCreateExpression) { ObjectCreateExpression right = (ObjectCreateExpression)assignmentExpression.Right; if (right.CreateType.Type.Contains("EventHandler") && assignmentExpression.Op == AssignmentOperatorType.Add) UnlockWith(assignmentExpression); // Only works when using the implicit += new SomeEventHandler() syntax } } } return base.VisitAssignmentExpression(assignmentExpression, data); }
public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { base.VisitAssignmentExpression(assignmentExpression, data); if (vbMyFormsClass != null) { TypeResolveResult trr = Resolve(assignmentExpression.Right) as TypeResolveResult; if (trr != null && trr.ResolvedClass != null) { foreach (IProperty p in vbMyFormsClass.Properties) { if (p.ReturnType.FullyQualifiedName == trr.ResolvedClass.FullyQualifiedName) { assignmentExpression.Right = MakeFieldReferenceExpression("My.MyProject.Forms." + p.Name); break; } } } } return null; }
public override object VisitAssignmentExpression(ICSharpCode.NRefactory.Ast.AssignmentExpression assignmentExpression, object data) { assignmentExpression.Right.AcceptVisitor(this, data); valueGetsChanged = true; IdentifierExpression left = assignmentExpression.Left as IdentifierExpression; bool isInitialUse = left != null && !variables.ContainsKey(left.Identifier); assignmentExpression.Left.AcceptVisitor(this, data); valueGetsChanged = false; if (left != null && variables.ContainsKey(left.Identifier)) { variables[left.Identifier].GetsChanged = true; if (isInitialUse) { variables[left.Identifier].GetsAssigned = true; } } return(null); }
public override object TrackedVisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { if (assignmentExpression.Right is PrimitiveExpression) { PrimitiveExpression pe = (PrimitiveExpression) assignmentExpression.Right; if (pe.Value == null) { TypeReference leftType = GetExpressionType(assignmentExpression.Left); if (leftType != null && (leftType.RankSpecifier == null || leftType.RankSpecifier.Length == 0)) { string fullName = GetFullName(leftType); if (types.Contains(fullName)) { Expression minValue = (Expression) values[fullName]; assignmentExpression.Right = minValue; minValue.Parent = assignmentExpression; } } } } return base.TrackedVisitAssignmentExpression(assignmentExpression, data); }
public override object TrackedVisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) { if (binaryOperatorExpression.Op == BinaryOperatorType.UnsignedShiftRight) { binaryOperatorExpression.Op = BinaryOperatorType.ShiftRight; CastExpression castExpression = GetCastExpression(binaryOperatorExpression); ReplaceCurrentNode(castExpression); } else if (binaryOperatorExpression.Op == BinaryOperatorType.UnsignedShiftRightAssign) { Expression left = binaryOperatorExpression.Left; Expression right = new BinaryOperatorExpression(left, BinaryOperatorType.ShiftRight, binaryOperatorExpression.Right); right.Parent = binaryOperatorExpression.Parent; CastExpression castExpression = GetCastExpression((BinaryOperatorExpression) right); right.Parent = castExpression; AssignmentExpression assignment = new AssignmentExpression(left, AssignmentOperatorType.Assign, castExpression); assignment.Parent = binaryOperatorExpression.Parent; ReplaceCurrentNode(assignment); } return base.TrackedVisitBinaryOperatorExpression(binaryOperatorExpression, data); }
private object CreateSimpleAssignment(AssignmentExpression assignmentExpression, string op, object data) { assignmentExpression.Left.AcceptVisitor(this, data); this.Append(string.Concat(" ", op, " ")); assignmentExpression.Right.AcceptVisitor(this, data); return null; }
private static bool IsRemoveEventHandler(AssignmentExpression assignmentExpression) { return (assignmentExpression.Op != AssignmentOperatorType.Subtract ? false : assignmentExpression.Left is MemberReferenceExpression); }
public virtual object TrackedVisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { return base.VisitAssignmentExpression(assignmentExpression, data); }
public sealed override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { this.BeginVisit(assignmentExpression); object result = this.TrackedVisitAssignmentExpression(assignmentExpression, data); this.EndVisit(assignmentExpression); return result; }
public virtual object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { throw new global::System.NotImplementedException("AssignmentExpression"); }
void EmbeddedStatement( #line 2755 "VBNET.ATG" out Statement statement) { #line 2757 "VBNET.ATG" Statement embeddedStatement = null; statement = null; Expression expr = null; string name = String.Empty; List<Expression> p = null; if (la.kind == 107) { lexer.NextToken(); #line 2763 "VBNET.ATG" ExitType exitType = ExitType.None; switch (la.kind) { case 195: { lexer.NextToken(); #line 2765 "VBNET.ATG" exitType = ExitType.Sub; break; } case 114: { lexer.NextToken(); #line 2767 "VBNET.ATG" exitType = ExitType.Function; break; } case 171: { lexer.NextToken(); #line 2769 "VBNET.ATG" exitType = ExitType.Property; break; } case 95: { lexer.NextToken(); #line 2771 "VBNET.ATG" exitType = ExitType.Do; break; } case 111: { lexer.NextToken(); #line 2773 "VBNET.ATG" exitType = ExitType.For; break; } case 203: { lexer.NextToken(); #line 2775 "VBNET.ATG" exitType = ExitType.Try; break; } case 216: { lexer.NextToken(); #line 2777 "VBNET.ATG" exitType = ExitType.While; break; } case 182: { lexer.NextToken(); #line 2779 "VBNET.ATG" exitType = ExitType.Select; break; } default: SynErr(273); break; } #line 2781 "VBNET.ATG" statement = new ExitStatement(exitType); } else if (la.kind == 203) { TryStatement( #line 2782 "VBNET.ATG" out statement); } else if (la.kind == 76) { lexer.NextToken(); #line 2783 "VBNET.ATG" ContinueType continueType = ContinueType.None; if (la.kind == 95 || la.kind == 111 || la.kind == 216) { if (la.kind == 95) { lexer.NextToken(); #line 2783 "VBNET.ATG" continueType = ContinueType.Do; } else if (la.kind == 111) { lexer.NextToken(); #line 2783 "VBNET.ATG" continueType = ContinueType.For; } else { lexer.NextToken(); #line 2783 "VBNET.ATG" continueType = ContinueType.While; } } #line 2783 "VBNET.ATG" statement = new ContinueStatement(continueType); } else if (la.kind == 200) { lexer.NextToken(); if (StartOf(29)) { Expr( #line 2785 "VBNET.ATG" out expr); } #line 2785 "VBNET.ATG" statement = new ThrowStatement(expr); } else if (la.kind == 180) { lexer.NextToken(); if (StartOf(29)) { Expr( #line 2787 "VBNET.ATG" out expr); } #line 2787 "VBNET.ATG" statement = new ReturnStatement(expr); } else if (la.kind == 196) { lexer.NextToken(); Expr( #line 2789 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2789 "VBNET.ATG" out embeddedStatement); Expect(100); Expect(196); #line 2790 "VBNET.ATG" statement = new LockStatement(expr, embeddedStatement); } else if (la.kind == 174) { lexer.NextToken(); Identifier(); #line 2792 "VBNET.ATG" name = t.val; if (la.kind == 25) { lexer.NextToken(); if (StartOf(37)) { ArgumentList( #line 2793 "VBNET.ATG" out p); } Expect(26); } #line 2795 "VBNET.ATG" statement = new RaiseEventStatement(name, p); } else if (la.kind == 218) { WithStatement( #line 2798 "VBNET.ATG" out statement); } else if (la.kind == 43) { lexer.NextToken(); #line 2800 "VBNET.ATG" Expression handlerExpr = null; Expr( #line 2801 "VBNET.ATG" out expr); Expect(12); Expr( #line 2801 "VBNET.ATG" out handlerExpr); #line 2803 "VBNET.ATG" statement = new AddHandlerStatement(expr, handlerExpr); } else if (la.kind == 178) { lexer.NextToken(); #line 2806 "VBNET.ATG" Expression handlerExpr = null; Expr( #line 2807 "VBNET.ATG" out expr); Expect(12); Expr( #line 2807 "VBNET.ATG" out handlerExpr); #line 2809 "VBNET.ATG" statement = new RemoveHandlerStatement(expr, handlerExpr); } else if (la.kind == 216) { lexer.NextToken(); Expr( #line 2812 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2813 "VBNET.ATG" out embeddedStatement); Expect(100); Expect(216); #line 2815 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start); } else if (la.kind == 95) { lexer.NextToken(); #line 2820 "VBNET.ATG" ConditionType conditionType = ConditionType.None; if (la.kind == 209 || la.kind == 216) { WhileOrUntil( #line 2823 "VBNET.ATG" out conditionType); Expr( #line 2823 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2824 "VBNET.ATG" out embeddedStatement); Expect(138); #line 2827 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType == ConditionType.While ? ConditionType.DoWhile : conditionType, ConditionPosition.Start); } else if (la.kind == 1 || la.kind == 11) { EndOfStmt(); Block( #line 2834 "VBNET.ATG" out embeddedStatement); Expect(138); if (la.kind == 209 || la.kind == 216) { WhileOrUntil( #line 2835 "VBNET.ATG" out conditionType); Expr( #line 2835 "VBNET.ATG" out expr); } #line 2837 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType, ConditionPosition.End); } else SynErr(274); } else if (la.kind == 111) { lexer.NextToken(); #line 2842 "VBNET.ATG" Expression group = null; TypeReference typeReference; string typeName; Location startLocation = t.Location; if (la.kind == 97) { lexer.NextToken(); LoopControlVariable( #line 2849 "VBNET.ATG" out typeReference, out typeName); Expect(125); Expr( #line 2850 "VBNET.ATG" out group); EndOfStmt(); Block( #line 2851 "VBNET.ATG" out embeddedStatement); Expect(149); if (StartOf(29)) { Expr( #line 2852 "VBNET.ATG" out expr); } #line 2854 "VBNET.ATG" statement = new ForeachStatement(typeReference, typeName, group, embeddedStatement, expr); statement.StartLocation = startLocation; statement.EndLocation = t.EndLocation; } else if (StartOf(38)) { #line 2865 "VBNET.ATG" Expression start = null; Expression end = null; Expression step = null; Expression variableExpr = null; Expression nextExpr = null; List<Expression> nextExpressions = null; if ( #line 2872 "VBNET.ATG" IsLoopVariableDeclaration()) { LoopControlVariable( #line 2873 "VBNET.ATG" out typeReference, out typeName); } else { #line 2875 "VBNET.ATG" typeReference = null; typeName = null; SimpleExpr( #line 2876 "VBNET.ATG" out variableExpr); } Expect(10); Expr( #line 2878 "VBNET.ATG" out start); Expect(201); Expr( #line 2878 "VBNET.ATG" out end); if (la.kind == 190) { lexer.NextToken(); Expr( #line 2878 "VBNET.ATG" out step); } EndOfStmt(); Block( #line 2879 "VBNET.ATG" out embeddedStatement); Expect(149); if (StartOf(29)) { Expr( #line 2882 "VBNET.ATG" out nextExpr); #line 2884 "VBNET.ATG" nextExpressions = new List<Expression>(); nextExpressions.Add(nextExpr); while (la.kind == 12) { lexer.NextToken(); Expr( #line 2887 "VBNET.ATG" out nextExpr); #line 2887 "VBNET.ATG" nextExpressions.Add(nextExpr); } } #line 2890 "VBNET.ATG" statement = new ForNextStatement { TypeReference = typeReference, VariableName = typeName, LoopVariableExpression = variableExpr, Start = start, End = end, Step = step, EmbeddedStatement = embeddedStatement, NextExpressions = nextExpressions }; } else SynErr(275); } else if (la.kind == 105) { lexer.NextToken(); Expr( #line 2903 "VBNET.ATG" out expr); #line 2903 "VBNET.ATG" statement = new ErrorStatement(expr); } else if (la.kind == 176) { lexer.NextToken(); #line 2905 "VBNET.ATG" bool isPreserve = false; if (la.kind == 169) { lexer.NextToken(); #line 2905 "VBNET.ATG" isPreserve = true; } ReDimClause( #line 2906 "VBNET.ATG" out expr); #line 2908 "VBNET.ATG" ReDimStatement reDimStatement = new ReDimStatement(isPreserve); statement = reDimStatement; SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); while (la.kind == 12) { lexer.NextToken(); ReDimClause( #line 2912 "VBNET.ATG" out expr); #line 2913 "VBNET.ATG" SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); } } else if (la.kind == 104) { lexer.NextToken(); Expr( #line 2917 "VBNET.ATG" out expr); #line 2919 "VBNET.ATG" EraseStatement eraseStatement = new EraseStatement(); if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr);} while (la.kind == 12) { lexer.NextToken(); Expr( #line 2922 "VBNET.ATG" out expr); #line 2922 "VBNET.ATG" if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr); } } #line 2923 "VBNET.ATG" statement = eraseStatement; } else if (la.kind == 191) { lexer.NextToken(); #line 2925 "VBNET.ATG" statement = new StopStatement(); } else if ( #line 2927 "VBNET.ATG" la.kind == Tokens.If) { Expect(122); #line 2928 "VBNET.ATG" Location ifStartLocation = t.Location; Expr( #line 2928 "VBNET.ATG" out expr); if (la.kind == 199) { lexer.NextToken(); } if (la.kind == 1 || la.kind == 11) { EndOfStmt(); Block( #line 2931 "VBNET.ATG" out embeddedStatement); #line 2933 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); ifStatement.StartLocation = ifStartLocation; Location elseIfStart; while (la.kind == 99 || #line 2939 "VBNET.ATG" IsElseIf()) { if ( #line 2939 "VBNET.ATG" IsElseIf()) { Expect(98); #line 2939 "VBNET.ATG" elseIfStart = t.Location; Expect(122); } else { lexer.NextToken(); #line 2940 "VBNET.ATG" elseIfStart = t.Location; } #line 2942 "VBNET.ATG" Expression condition = null; Statement block = null; Expr( #line 2943 "VBNET.ATG" out condition); if (la.kind == 199) { lexer.NextToken(); } EndOfStmt(); Block( #line 2944 "VBNET.ATG" out block); #line 2946 "VBNET.ATG" ElseIfSection elseIfSection = new ElseIfSection(condition, block); elseIfSection.StartLocation = elseIfStart; elseIfSection.EndLocation = t.Location; elseIfSection.Parent = ifStatement; ifStatement.ElseIfSections.Add(elseIfSection); } if (la.kind == 98) { lexer.NextToken(); EndOfStmt(); Block( #line 2955 "VBNET.ATG" out embeddedStatement); #line 2957 "VBNET.ATG" ifStatement.FalseStatement.Add(embeddedStatement); } Expect(100); Expect(122); #line 2961 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else if (StartOf(39)) { #line 2966 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr); ifStatement.StartLocation = ifStartLocation; SingleLineStatementList( #line 2969 "VBNET.ATG" ifStatement.TrueStatement); if (la.kind == 98) { lexer.NextToken(); if (StartOf(39)) { SingleLineStatementList( #line 2972 "VBNET.ATG" ifStatement.FalseStatement); } } #line 2974 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else SynErr(276); } else if (la.kind == 182) { lexer.NextToken(); if (la.kind == 61) { lexer.NextToken(); } Expr( #line 2977 "VBNET.ATG" out expr); EndOfStmt(); #line 2978 "VBNET.ATG" List<SwitchSection> selectSections = new List<SwitchSection>(); Statement block = null; while (la.kind == 61) { #line 2982 "VBNET.ATG" List<CaseLabel> caseClauses = null; Location caseLocation = la.Location; lexer.NextToken(); CaseClauses( #line 2983 "VBNET.ATG" out caseClauses); if ( #line 2983 "VBNET.ATG" IsNotStatementSeparator()) { lexer.NextToken(); } EndOfStmt(); #line 2985 "VBNET.ATG" SwitchSection selectSection = new SwitchSection(caseClauses); selectSection.StartLocation = caseLocation; Block( #line 2988 "VBNET.ATG" out block); #line 2990 "VBNET.ATG" selectSection.Children = block.Children; selectSection.EndLocation = t.EndLocation; selectSections.Add(selectSection); } #line 2996 "VBNET.ATG" statement = new SwitchStatement(expr, selectSections); Expect(100); Expect(182); } else if (la.kind == 157) { #line 2999 "VBNET.ATG" OnErrorStatement onErrorStatement = null; OnErrorStatement( #line 3000 "VBNET.ATG" out onErrorStatement); #line 3000 "VBNET.ATG" statement = onErrorStatement; } else if (la.kind == 119) { #line 3001 "VBNET.ATG" GotoStatement goToStatement = null; GotoStatement( #line 3002 "VBNET.ATG" out goToStatement); #line 3002 "VBNET.ATG" statement = goToStatement; } else if (la.kind == 179) { #line 3003 "VBNET.ATG" ResumeStatement resumeStatement = null; ResumeStatement( #line 3004 "VBNET.ATG" out resumeStatement); #line 3004 "VBNET.ATG" statement = resumeStatement; } else if (StartOf(38)) { #line 3007 "VBNET.ATG" Expression val = null; AssignmentOperatorType op; bool mustBeAssignment = la.kind == Tokens.Plus || la.kind == Tokens.Minus || la.kind == Tokens.Not || la.kind == Tokens.Times; SimpleExpr( #line 3013 "VBNET.ATG" out expr); if (StartOf(40)) { AssignmentOperator( #line 3015 "VBNET.ATG" out op); Expr( #line 3015 "VBNET.ATG" out val); #line 3015 "VBNET.ATG" expr = new AssignmentExpression(expr, op, val); } else if (la.kind == 1 || la.kind == 11 || la.kind == 98) { #line 3016 "VBNET.ATG" if (mustBeAssignment) Error("error in assignment."); } else SynErr(277); #line 3019 "VBNET.ATG" // a field reference expression that stands alone is a // invocation expression without parantheses and arguments if(expr is MemberReferenceExpression || expr is IdentifierExpression) { expr = new InvocationExpression(expr); } statement = new ExpressionStatement(expr); } else if (la.kind == 60) { lexer.NextToken(); SimpleExpr( #line 3026 "VBNET.ATG" out expr); #line 3026 "VBNET.ATG" statement = new ExpressionStatement(expr); } else if (la.kind == 211) { lexer.NextToken(); #line 3028 "VBNET.ATG" Statement block; if ( #line 3029 "VBNET.ATG" Peek(1).kind == Tokens.As) { #line 3030 "VBNET.ATG" LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifiers.None); VariableDeclarator( #line 3031 "VBNET.ATG" resourceAquisition.Variables); while (la.kind == 12) { lexer.NextToken(); VariableDeclarator( #line 3033 "VBNET.ATG" resourceAquisition.Variables); } Block( #line 3035 "VBNET.ATG" out block); #line 3037 "VBNET.ATG" statement = new UsingStatement(resourceAquisition, block); } else if (StartOf(29)) { Expr( #line 3039 "VBNET.ATG" out expr); Block( #line 3040 "VBNET.ATG" out block); #line 3041 "VBNET.ATG" statement = new UsingStatement(new ExpressionStatement(expr), block); } else SynErr(278); Expect(100); Expect(211); } else if (StartOf(41)) { LocalDeclarationStatement( #line 3044 "VBNET.ATG" out statement); } else SynErr(279); }
public override object VisitAssignmentExpression (AssignmentExpression assignmentExpression, object data) { // Console.WriteLine ("AssignmentExpression"); IntegrateTemporaryVariableVisitorOptions options = (IntegrateTemporaryVariableVisitorOptions)data; // Console.WriteLine (assignmentExpression.ToString ()); if (IsExpressionToReplace (assignmentExpression.Left, (IntegrateTemporaryVariableVisitorOptions)data)) { // Console.WriteLine ("Assignment Left"); throw new IntegrateTemporaryVariableAssignmentException (); } else { // Console.WriteLine ("Assignment not to replace"); assignmentExpression.Left.AcceptVisitor (this, data); } if (IsExpressionToReplace (assignmentExpression.Right, (IntegrateTemporaryVariableVisitorOptions)data)) { options.Changes.Add (ReplaceExpression (assignmentExpression.Right, options.Initializer, options)); return null; } else return assignmentExpression.Right.AcceptVisitor (this, data); }
void Expr( #line 1808 "cs.ATG" out Expression expr) { #line 1809 "cs.ATG" expr = null; Expression expr1 = null, expr2 = null; AssignmentOperatorType op; #line 1811 "cs.ATG" Location startLocation = la.Location; UnaryExpr( #line 1812 "cs.ATG" out expr); if (StartOf(7)) { AssignmentOperator( #line 1815 "cs.ATG" out op); Expr( #line 1815 "cs.ATG" out expr1); #line 1815 "cs.ATG" expr = new AssignmentExpression(expr, op, expr1); } else if ( #line 1816 "cs.ATG" la.kind == Tokens.GreaterThan && Peek(1).kind == Tokens.GreaterEqual) { AssignmentOperator( #line 1817 "cs.ATG" out op); Expr( #line 1817 "cs.ATG" out expr1); #line 1817 "cs.ATG" expr = new AssignmentExpression(expr, op, expr1); } else if (StartOf(8)) { ConditionalOrExpr( #line 1819 "cs.ATG" ref expr); if (la.kind == 13) { lexer.NextToken(); Expr( #line 1820 "cs.ATG" out expr1); #line 1820 "cs.ATG" expr = new BinaryOperatorExpression(expr, BinaryOperatorType.NullCoalescing, expr1); } if (la.kind == 12) { lexer.NextToken(); Expr( #line 1821 "cs.ATG" out expr1); Expect(9); Expr( #line 1821 "cs.ATG" out expr2); #line 1821 "cs.ATG" expr = new ConditionalExpression(expr, expr1, expr2); } } else SynErr(152); #line 1824 "cs.ATG" if (expr != null) { if (expr.StartLocation.IsEmpty) expr.StartLocation = startLocation; if (expr.EndLocation.IsEmpty) expr.EndLocation = t.EndLocation; } }
public override object TrackedVisitInvocationExpression(InvocationExpression invocationExpression, object data) { Expression targetObject = invocationExpression.TargetObject; string methodName = null; if (targetObject is IdentifierExpression) methodName = ((IdentifierExpression) targetObject).Identifier; else if (targetObject is FieldReferenceExpression) methodName = ((FieldReferenceExpression) targetObject).FieldName; if (methodName.StartsWith("set") || methodName.StartsWith("get")) { if (targetObject is IdentifierExpression) { TypeDeclaration typeDeclaration = (TypeDeclaration) AstUtil.GetParentOfType(invocationExpression, typeof(TypeDeclaration)); string key; if (ContainsReferences(typeDeclaration, methodName, out key)) { IdentifierExpression identifierExpression = new IdentifierExpression((string) CodeBase.References[key]); if (methodName.StartsWith("get")) { identifierExpression.Parent = invocationExpression.Parent; ReplaceCurrentNode(identifierExpression); } else if (methodName.StartsWith("set")) { Expression setValue = (Expression) invocationExpression.Arguments[0]; AssignmentExpression assignment = new AssignmentExpression(identifierExpression, AssignmentOperatorType.Assign, setValue); assignment.Parent = invocationExpression.Parent; ReplaceCurrentNode(assignment); assignment.AcceptVisitor(this, data); } } } else if (targetObject is FieldReferenceExpression) { Expression target = ((FieldReferenceExpression) targetObject).TargetObject; TypeReference invokerType = GetExpressionType(target); if (invokerType != null) { string fullName = GetFullName(invokerType); string key = fullName + "." + methodName; if (CodeBase.References.Contains(key)) { string property = (string) CodeBase.References[key]; FieldReferenceExpression replaced = new FieldReferenceExpression(target, property); if (methodName.StartsWith("get")) { replaced.Parent = invocationExpression.Parent; ReplaceCurrentNode(replaced); replaced.AcceptVisitor(this, data); } else { Expression setValue = (Expression) invocationExpression.Arguments[0]; AssignmentExpression assignment = new AssignmentExpression(replaced, AssignmentOperatorType.Assign, setValue); assignment.Parent = invocationExpression.Parent; ReplaceCurrentNode(assignment); assignment.AcceptVisitor(this, data); } } } } } return base.TrackedVisitInvocationExpression(invocationExpression, data); }
void EmbeddedStatement( #line 2297 "VBNET.ATG" out Statement statement) { #line 2299 "VBNET.ATG" Statement embeddedStatement = null; statement = null; Expression expr = null; string name = String.Empty; List<Expression> p = null; switch (la.kind) { case 94: { lexer.NextToken(); #line 2305 "VBNET.ATG" ExitType exitType = ExitType.None; switch (la.kind) { case 167: { lexer.NextToken(); #line 2307 "VBNET.ATG" exitType = ExitType.Sub; break; } case 100: { lexer.NextToken(); #line 2309 "VBNET.ATG" exitType = ExitType.Function; break; } case 146: { lexer.NextToken(); #line 2311 "VBNET.ATG" exitType = ExitType.Property; break; } case 83: { lexer.NextToken(); #line 2313 "VBNET.ATG" exitType = ExitType.Do; break; } case 98: { lexer.NextToken(); #line 2315 "VBNET.ATG" exitType = ExitType.For; break; } case 174: { lexer.NextToken(); #line 2317 "VBNET.ATG" exitType = ExitType.Try; break; } case 181: { lexer.NextToken(); #line 2319 "VBNET.ATG" exitType = ExitType.While; break; } case 155: { lexer.NextToken(); #line 2321 "VBNET.ATG" exitType = ExitType.Select; break; } default: SynErr(255); break; } #line 2323 "VBNET.ATG" statement = new ExitStatement(exitType); break; } case 174: { TryStatement( #line 2324 "VBNET.ATG" out statement); break; } case 187: { lexer.NextToken(); #line 2325 "VBNET.ATG" ContinueType continueType = ContinueType.None; if (la.kind == 83 || la.kind == 98 || la.kind == 181) { if (la.kind == 83) { lexer.NextToken(); #line 2325 "VBNET.ATG" continueType = ContinueType.Do; } else if (la.kind == 98) { lexer.NextToken(); #line 2325 "VBNET.ATG" continueType = ContinueType.For; } else { lexer.NextToken(); #line 2325 "VBNET.ATG" continueType = ContinueType.While; } } #line 2325 "VBNET.ATG" statement = new ContinueStatement(continueType); break; } case 171: { lexer.NextToken(); if (StartOf(27)) { Expr( #line 2327 "VBNET.ATG" out expr); } #line 2327 "VBNET.ATG" statement = new ThrowStatement(expr); break; } case 154: { lexer.NextToken(); if (StartOf(27)) { Expr( #line 2329 "VBNET.ATG" out expr); } #line 2329 "VBNET.ATG" statement = new ReturnStatement(expr); break; } case 168: { lexer.NextToken(); Expr( #line 2331 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2331 "VBNET.ATG" out embeddedStatement); Expect(88); Expect(168); #line 2332 "VBNET.ATG" statement = new LockStatement(expr, embeddedStatement); break; } case 149: { lexer.NextToken(); Identifier(); #line 2334 "VBNET.ATG" name = t.val; if (la.kind == 24) { lexer.NextToken(); if (StartOf(30)) { ArgumentList( #line 2335 "VBNET.ATG" out p); } Expect(25); } #line 2336 "VBNET.ATG" statement = new RaiseEventStatement(name, p); break; } case 182: { WithStatement( #line 2338 "VBNET.ATG" out statement); break; } case 42: { lexer.NextToken(); #line 2340 "VBNET.ATG" Expression handlerExpr = null; Expr( #line 2341 "VBNET.ATG" out expr); Expect(12); Expr( #line 2341 "VBNET.ATG" out handlerExpr); #line 2343 "VBNET.ATG" statement = new AddHandlerStatement(expr, handlerExpr); break; } case 152: { lexer.NextToken(); #line 2346 "VBNET.ATG" Expression handlerExpr = null; Expr( #line 2347 "VBNET.ATG" out expr); Expect(12); Expr( #line 2347 "VBNET.ATG" out handlerExpr); #line 2349 "VBNET.ATG" statement = new RemoveHandlerStatement(expr, handlerExpr); break; } case 181: { lexer.NextToken(); Expr( #line 2352 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2353 "VBNET.ATG" out embeddedStatement); Expect(88); Expect(181); #line 2355 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start); break; } case 83: { lexer.NextToken(); #line 2360 "VBNET.ATG" ConditionType conditionType = ConditionType.None; if (la.kind == 177 || la.kind == 181) { WhileOrUntil( #line 2363 "VBNET.ATG" out conditionType); Expr( #line 2363 "VBNET.ATG" out expr); EndOfStmt(); Block( #line 2364 "VBNET.ATG" out embeddedStatement); Expect(118); #line 2367 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType == ConditionType.While ? ConditionType.DoWhile : conditionType, ConditionPosition.Start); } else if (la.kind == 1 || la.kind == 13) { EndOfStmt(); Block( #line 2374 "VBNET.ATG" out embeddedStatement); Expect(118); if (la.kind == 177 || la.kind == 181) { WhileOrUntil( #line 2375 "VBNET.ATG" out conditionType); Expr( #line 2375 "VBNET.ATG" out expr); } #line 2377 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType, ConditionPosition.End); } else SynErr(256); break; } case 98: { lexer.NextToken(); #line 2382 "VBNET.ATG" Expression group = null; TypeReference typeReference; string typeName; Location startLocation = t.Location; if (la.kind == 85) { lexer.NextToken(); LoopControlVariable( #line 2389 "VBNET.ATG" out typeReference, out typeName); Expect(109); Expr( #line 2390 "VBNET.ATG" out group); EndOfStmt(); Block( #line 2391 "VBNET.ATG" out embeddedStatement); Expect(128); if (StartOf(27)) { Expr( #line 2392 "VBNET.ATG" out expr); } #line 2394 "VBNET.ATG" statement = new ForeachStatement(typeReference, typeName, group, embeddedStatement, expr); statement.StartLocation = startLocation; statement.EndLocation = t.EndLocation; } else if (StartOf(13)) { #line 2405 "VBNET.ATG" Expression start = null; Expression end = null; Expression step = null; Expression nextExpr = null;List<Expression> nextExpressions = null; LoopControlVariable( #line 2410 "VBNET.ATG" out typeReference, out typeName); Expect(11); Expr( #line 2411 "VBNET.ATG" out start); Expect(172); Expr( #line 2411 "VBNET.ATG" out end); if (la.kind == 162) { lexer.NextToken(); Expr( #line 2411 "VBNET.ATG" out step); } EndOfStmt(); Block( #line 2412 "VBNET.ATG" out embeddedStatement); Expect(128); if (StartOf(27)) { Expr( #line 2415 "VBNET.ATG" out nextExpr); #line 2415 "VBNET.ATG" nextExpressions = new List<Expression>(); nextExpressions.Add(nextExpr); while (la.kind == 12) { lexer.NextToken(); Expr( #line 2416 "VBNET.ATG" out nextExpr); #line 2416 "VBNET.ATG" nextExpressions.Add(nextExpr); } } #line 2419 "VBNET.ATG" statement = new ForNextStatement(typeReference, typeName, start, end, step, embeddedStatement, nextExpressions); } else SynErr(257); break; } case 92: { lexer.NextToken(); Expr( #line 2423 "VBNET.ATG" out expr); #line 2423 "VBNET.ATG" statement = new ErrorStatement(expr); break; } case 151: { lexer.NextToken(); #line 2425 "VBNET.ATG" bool isPreserve = false; if (la.kind == 144) { lexer.NextToken(); #line 2425 "VBNET.ATG" isPreserve = true; } ReDimClause( #line 2426 "VBNET.ATG" out expr); #line 2428 "VBNET.ATG" ReDimStatement reDimStatement = new ReDimStatement(isPreserve); statement = reDimStatement; SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); while (la.kind == 12) { lexer.NextToken(); ReDimClause( #line 2432 "VBNET.ATG" out expr); #line 2433 "VBNET.ATG" SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); } break; } case 91: { lexer.NextToken(); Expr( #line 2437 "VBNET.ATG" out expr); #line 2438 "VBNET.ATG" List<Expression> arrays = new List<Expression>(); if (expr != null) { arrays.Add(expr);} EraseStatement eraseStatement = new EraseStatement(arrays); while (la.kind == 12) { lexer.NextToken(); Expr( #line 2443 "VBNET.ATG" out expr); #line 2443 "VBNET.ATG" if (expr != null) { arrays.Add(expr); } } #line 2444 "VBNET.ATG" statement = eraseStatement; break; } case 163: { lexer.NextToken(); #line 2446 "VBNET.ATG" statement = new StopStatement(); break; } case 106: { lexer.NextToken(); #line 2448 "VBNET.ATG" Location ifStartLocation = t.Location; Expr( #line 2448 "VBNET.ATG" out expr); if (la.kind == 170) { lexer.NextToken(); } if (la.kind == 1 || la.kind == 13) { EndOfStmt(); Block( #line 2451 "VBNET.ATG" out embeddedStatement); #line 2453 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); ifStatement.StartLocation = ifStartLocation; Location elseIfStart; while (la.kind == 87 || #line 2459 "VBNET.ATG" IsElseIf()) { if ( #line 2459 "VBNET.ATG" IsElseIf()) { Expect(86); #line 2459 "VBNET.ATG" elseIfStart = t.Location; Expect(106); } else { lexer.NextToken(); #line 2460 "VBNET.ATG" elseIfStart = t.Location; } #line 2462 "VBNET.ATG" Expression condition = null; Statement block = null; Expr( #line 2463 "VBNET.ATG" out condition); if (la.kind == 170) { lexer.NextToken(); } EndOfStmt(); Block( #line 2464 "VBNET.ATG" out block); #line 2466 "VBNET.ATG" ElseIfSection elseIfSection = new ElseIfSection(condition, block); elseIfSection.StartLocation = elseIfStart; elseIfSection.EndLocation = t.Location; elseIfSection.Parent = ifStatement; ifStatement.ElseIfSections.Add(elseIfSection); } if (la.kind == 86) { lexer.NextToken(); EndOfStmt(); Block( #line 2475 "VBNET.ATG" out embeddedStatement); #line 2477 "VBNET.ATG" ifStatement.FalseStatement.Add(embeddedStatement); } Expect(88); Expect(106); #line 2481 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else if (StartOf(36)) { #line 2486 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr); ifStatement.StartLocation = ifStartLocation; SingleLineStatementList( #line 2489 "VBNET.ATG" ifStatement.TrueStatement); if (la.kind == 86) { lexer.NextToken(); if (StartOf(36)) { SingleLineStatementList( #line 2492 "VBNET.ATG" ifStatement.FalseStatement); } } #line 2494 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else SynErr(258); break; } case 155: { lexer.NextToken(); if (la.kind == 57) { lexer.NextToken(); } Expr( #line 2497 "VBNET.ATG" out expr); EndOfStmt(); #line 2498 "VBNET.ATG" List<SwitchSection> selectSections = new List<SwitchSection>(); Statement block = null; while (la.kind == 57) { #line 2502 "VBNET.ATG" List<CaseLabel> caseClauses = null; Location caseLocation = la.Location; lexer.NextToken(); CaseClauses( #line 2503 "VBNET.ATG" out caseClauses); if ( #line 2503 "VBNET.ATG" IsNotStatementSeparator()) { lexer.NextToken(); } EndOfStmt(); #line 2505 "VBNET.ATG" SwitchSection selectSection = new SwitchSection(caseClauses); selectSection.StartLocation = caseLocation; Block( #line 2508 "VBNET.ATG" out block); #line 2510 "VBNET.ATG" selectSection.Children = block.Children; selectSection.EndLocation = t.EndLocation; selectSections.Add(selectSection); } #line 2515 "VBNET.ATG" statement = new SwitchStatement(expr, selectSections); Expect(88); Expect(155); break; } case 135: { #line 2517 "VBNET.ATG" OnErrorStatement onErrorStatement = null; OnErrorStatement( #line 2518 "VBNET.ATG" out onErrorStatement); #line 2518 "VBNET.ATG" statement = onErrorStatement; break; } case 104: { #line 2519 "VBNET.ATG" GotoStatement goToStatement = null; GotoStatement( #line 2520 "VBNET.ATG" out goToStatement); #line 2520 "VBNET.ATG" statement = goToStatement; break; } case 153: { #line 2521 "VBNET.ATG" ResumeStatement resumeStatement = null; ResumeStatement( #line 2522 "VBNET.ATG" out resumeStatement); #line 2522 "VBNET.ATG" statement = resumeStatement; break; } case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 24: case 43: case 47: case 49: case 50: case 51: case 52: case 54: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 68: case 69: case 70: case 72: case 73: case 74: case 75: case 76: case 77: case 82: case 84: case 95: case 96: case 102: case 111: case 117: case 119: case 124: case 125: case 127: case 130: case 133: case 134: case 144: case 159: case 160: case 165: case 169: case 173: case 175: case 176: case 177: case 191: case 192: case 193: case 194: case 195: case 196: case 197: case 198: case 199: case 200: case 205: { #line 2525 "VBNET.ATG" Expression val = null; AssignmentOperatorType op; bool mustBeAssignment = la.kind == Tokens.Plus || la.kind == Tokens.Minus || la.kind == Tokens.Not || la.kind == Tokens.Times; SimpleExpr( #line 2531 "VBNET.ATG" out expr); if (StartOf(37)) { AssignmentOperator( #line 2533 "VBNET.ATG" out op); Expr( #line 2533 "VBNET.ATG" out val); #line 2533 "VBNET.ATG" expr = new AssignmentExpression(expr, op, val); } else if (la.kind == 1 || la.kind == 13 || la.kind == 86) { #line 2534 "VBNET.ATG" if (mustBeAssignment) Error("error in assignment."); } else SynErr(259); #line 2537 "VBNET.ATG" // a field reference expression that stands alone is a // invocation expression without parantheses and arguments if(expr is MemberReferenceExpression || expr is IdentifierExpression) { expr = new InvocationExpression(expr); } statement = new ExpressionStatement(expr); break; } case 56: { lexer.NextToken(); SimpleExpr( #line 2544 "VBNET.ATG" out expr); #line 2544 "VBNET.ATG" statement = new ExpressionStatement(expr); break; } case 189: { lexer.NextToken(); #line 2546 "VBNET.ATG" Statement block; if ( #line 2547 "VBNET.ATG" Peek(1).kind == Tokens.As) { #line 2548 "VBNET.ATG" LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifiers.None); VariableDeclarator( #line 2549 "VBNET.ATG" resourceAquisition.Variables); while (la.kind == 12) { lexer.NextToken(); VariableDeclarator( #line 2551 "VBNET.ATG" resourceAquisition.Variables); } Block( #line 2553 "VBNET.ATG" out block); #line 2554 "VBNET.ATG" statement = new UsingStatement(resourceAquisition, block); } else if (StartOf(27)) { Expr( #line 2555 "VBNET.ATG" out expr); Block( #line 2556 "VBNET.ATG" out block); #line 2557 "VBNET.ATG" statement = new UsingStatement(new ExpressionStatement(expr), block); } else SynErr(260); Expect(88); Expect(189); break; } default: SynErr(261); break; } }
public override object TrackedVisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { object obj; switch (assignmentExpression.Op) { case AssignmentOperatorType.Assign: { obj = this.CreateSimpleAssignment(assignmentExpression, "=", data); break; } case AssignmentOperatorType.Add: { if (!NRefactoryToPythonConverter.IsAddEventHandler(assignmentExpression)) { obj = this.CreateSimpleAssignment(assignmentExpression, "+=", data); break; } else { obj = this.CreateHandlerStatement(assignmentExpression.Left, "+=", assignmentExpression.Right); break; } } case AssignmentOperatorType.Subtract: { if (!NRefactoryToPythonConverter.IsRemoveEventHandler(assignmentExpression)) { obj = this.CreateSimpleAssignment(assignmentExpression, "-=", data); break; } else { obj = this.CreateHandlerStatement(assignmentExpression.Left, "-=", assignmentExpression.Right); break; } } case AssignmentOperatorType.Multiply: { obj = this.CreateSimpleAssignment(assignmentExpression, "*=", data); break; } case AssignmentOperatorType.Divide: case AssignmentOperatorType.DivideInteger: { obj = this.CreateSimpleAssignment(assignmentExpression, "/=", data); break; } case AssignmentOperatorType.Modulus: { obj = this.CreateSimpleAssignment(assignmentExpression, "%=", data); break; } case AssignmentOperatorType.Power: { obj = this.CreateSimpleAssignment(assignmentExpression, "**=", data); break; } case AssignmentOperatorType.ConcatString: { obj = this.CreateSimpleAssignment(assignmentExpression, "+=", data); break; } case AssignmentOperatorType.ShiftLeft: { obj = this.CreateSimpleAssignment(assignmentExpression, "<<=", data); break; } case AssignmentOperatorType.ShiftRight: { obj = this.CreateSimpleAssignment(assignmentExpression, ">>=", data); break; } case AssignmentOperatorType.BitwiseAnd: { obj = this.CreateSimpleAssignment(assignmentExpression, "&=", data); break; } case AssignmentOperatorType.BitwiseOr: { obj = this.CreateSimpleAssignment(assignmentExpression, "|=", data); break; } case AssignmentOperatorType.ExclusiveOr: { obj = this.CreateSimpleAssignment(assignmentExpression, "^=", data); break; } default: { obj = null; break; } } return obj; }
void EmbeddedStatement( //#line 3070 "VBNET.ATG" out Statement statement) { //#line 3072 "VBNET.ATG" Statement embeddedStatement = null; statement = null; Expression expr = null; string name = String.Empty; List<Expression> p = null; Location startLocation = la.Location; if (la.kind == 120) { lexer.NextToken(); //#line 3080 "VBNET.ATG" ExitType exitType = ExitType.None; switch (la.kind) { case 210: { lexer.NextToken(); //#line 3082 "VBNET.ATG" exitType = ExitType.Sub; break; } case 127: { lexer.NextToken(); //#line 3084 "VBNET.ATG" exitType = ExitType.Function; break; } case 186: { lexer.NextToken(); //#line 3086 "VBNET.ATG" exitType = ExitType.Property; break; } case 108: { lexer.NextToken(); //#line 3088 "VBNET.ATG" exitType = ExitType.Do; break; } case 124: { lexer.NextToken(); //#line 3090 "VBNET.ATG" exitType = ExitType.For; break; } case 218: { lexer.NextToken(); //#line 3092 "VBNET.ATG" exitType = ExitType.Try; break; } case 231: { lexer.NextToken(); //#line 3094 "VBNET.ATG" exitType = ExitType.While; break; } case 197: { lexer.NextToken(); //#line 3096 "VBNET.ATG" exitType = ExitType.Select; break; } default: SynErr(298); break; } //#line 3098 "VBNET.ATG" statement = new ExitStatement(exitType); } else if (la.kind == 218) { TryStatement( //#line 3099 "VBNET.ATG" out statement); } else if (la.kind == 89) { lexer.NextToken(); //#line 3100 "VBNET.ATG" ContinueType continueType = ContinueType.None; if (la.kind == 108 || la.kind == 124 || la.kind == 231) { if (la.kind == 108) { lexer.NextToken(); //#line 3100 "VBNET.ATG" continueType = ContinueType.Do; } else if (la.kind == 124) { lexer.NextToken(); //#line 3100 "VBNET.ATG" continueType = ContinueType.For; } else { lexer.NextToken(); //#line 3100 "VBNET.ATG" continueType = ContinueType.While; } } //#line 3100 "VBNET.ATG" statement = new ContinueStatement(continueType); } else if (la.kind == 215) { lexer.NextToken(); if (StartOf(24)) { Expr( //#line 3102 "VBNET.ATG" out expr); } //#line 3102 "VBNET.ATG" statement = new ThrowStatement(expr); } else if (la.kind == 195) { lexer.NextToken(); if (StartOf(24)) { Expr( //#line 3104 "VBNET.ATG" out expr); } //#line 3104 "VBNET.ATG" statement = new ReturnStatement(expr); } else if (la.kind == 211) { lexer.NextToken(); Expr( //#line 3106 "VBNET.ATG" out expr); EndOfStmt(); Block( //#line 3106 "VBNET.ATG" out embeddedStatement); Expect(113); Expect(211); //#line 3107 "VBNET.ATG" statement = new LockStatement(expr, embeddedStatement); } else if (la.kind == 189) { lexer.NextToken(); Identifier(); //#line 3109 "VBNET.ATG" name = t.val; if (la.kind == 37) { lexer.NextToken(); if (StartOf(43)) { ArgumentList( //#line 3110 "VBNET.ATG" out p); } Expect(38); } //#line 3112 "VBNET.ATG" statement = new RaiseEventStatement(name, p); } else if (la.kind == 233) { WithStatement( //#line 3115 "VBNET.ATG" out statement); } else if (la.kind == 56) { lexer.NextToken(); //#line 3117 "VBNET.ATG" Expression handlerExpr = null; Expr( //#line 3118 "VBNET.ATG" out expr); Expect(22); Expr( //#line 3118 "VBNET.ATG" out handlerExpr); //#line 3120 "VBNET.ATG" statement = new AddHandlerStatement(expr, handlerExpr); } else if (la.kind == 193) { lexer.NextToken(); //#line 3123 "VBNET.ATG" Expression handlerExpr = null; Expr( //#line 3124 "VBNET.ATG" out expr); Expect(22); Expr( //#line 3124 "VBNET.ATG" out handlerExpr); //#line 3126 "VBNET.ATG" statement = new RemoveHandlerStatement(expr, handlerExpr); } else if (la.kind == 231) { lexer.NextToken(); Expr( //#line 3129 "VBNET.ATG" out expr); EndOfStmt(); Block( //#line 3130 "VBNET.ATG" out embeddedStatement); Expect(113); Expect(231); //#line 3132 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start); } else if (la.kind == 108) { lexer.NextToken(); //#line 3137 "VBNET.ATG" ConditionType conditionType = ConditionType.None; if (la.kind == 224 || la.kind == 231) { WhileOrUntil( //#line 3140 "VBNET.ATG" out conditionType); Expr( //#line 3140 "VBNET.ATG" out expr); EndOfStmt(); Block( //#line 3141 "VBNET.ATG" out embeddedStatement); Expect(152); //#line 3144 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType == ConditionType.While ? ConditionType.DoWhile : conditionType, ConditionPosition.Start); } else if (la.kind == 1 || la.kind == 21) { EndOfStmt(); Block( //#line 3151 "VBNET.ATG" out embeddedStatement); Expect(152); if (la.kind == 224 || la.kind == 231) { WhileOrUntil( //#line 3152 "VBNET.ATG" out conditionType); Expr( //#line 3152 "VBNET.ATG" out expr); } //#line 3154 "VBNET.ATG" statement = new DoLoopStatement(expr, embeddedStatement, conditionType, ConditionPosition.End); } else SynErr(299); } else if (la.kind == 124) { lexer.NextToken(); //#line 3159 "VBNET.ATG" Expression group = null; TypeReference typeReference; string typeName; if (la.kind == 110) { lexer.NextToken(); LoopControlVariable( //#line 3165 "VBNET.ATG" out typeReference, out typeName); Expect(138); Expr( //#line 3166 "VBNET.ATG" out group); EndOfStmt(); Block( //#line 3167 "VBNET.ATG" out embeddedStatement); Expect(163); if (StartOf(24)) { Expr( //#line 3168 "VBNET.ATG" out expr); } //#line 3170 "VBNET.ATG" statement = new ForeachStatement(typeReference, typeName, group, embeddedStatement, expr); statement.StartLocation = startLocation; statement.EndLocation = t.EndLocation; } else if (StartOf(44)) { //#line 3181 "VBNET.ATG" Expression start = null; Expression end = null; Expression step = null; Expression variableExpr = null; Expression nextExpr = null; List<Expression> nextExpressions = null; if ( //#line 3188 "VBNET.ATG" IsLoopVariableDeclaration()) { LoopControlVariable( //#line 3189 "VBNET.ATG" out typeReference, out typeName); } else { //#line 3191 "VBNET.ATG" typeReference = null; typeName = null; SimpleExpr( //#line 3192 "VBNET.ATG" out variableExpr); } Expect(20); Expr( //#line 3194 "VBNET.ATG" out start); Expect(216); Expr( //#line 3194 "VBNET.ATG" out end); if (la.kind == 205) { lexer.NextToken(); Expr( //#line 3194 "VBNET.ATG" out step); } EndOfStmt(); Block( //#line 3195 "VBNET.ATG" out embeddedStatement); Expect(163); if (StartOf(24)) { Expr( //#line 3198 "VBNET.ATG" out nextExpr); //#line 3200 "VBNET.ATG" nextExpressions = new List<Expression>(); nextExpressions.Add(nextExpr); while (la.kind == 22) { lexer.NextToken(); Expr( //#line 3203 "VBNET.ATG" out nextExpr); //#line 3203 "VBNET.ATG" nextExpressions.Add(nextExpr); } } //#line 3206 "VBNET.ATG" statement = new ForNextStatement { TypeReference = typeReference, VariableName = typeName, LoopVariableExpression = variableExpr, Start = start, End = end, Step = step, EmbeddedStatement = embeddedStatement, NextExpressions = nextExpressions }; } else SynErr(300); } else if (la.kind == 118) { lexer.NextToken(); Expr( //#line 3219 "VBNET.ATG" out expr); //#line 3219 "VBNET.ATG" statement = new ErrorStatement(expr); } else if (la.kind == 191) { lexer.NextToken(); //#line 3221 "VBNET.ATG" bool isPreserve = false; if (la.kind == 184) { lexer.NextToken(); //#line 3221 "VBNET.ATG" isPreserve = true; } ReDimClause( //#line 3222 "VBNET.ATG" out expr); //#line 3224 "VBNET.ATG" ReDimStatement reDimStatement = new ReDimStatement(isPreserve); statement = reDimStatement; SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); while (la.kind == 22) { lexer.NextToken(); ReDimClause( //#line 3228 "VBNET.ATG" out expr); //#line 3229 "VBNET.ATG" SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); } } else if (la.kind == 117) { lexer.NextToken(); Expr( //#line 3233 "VBNET.ATG" out expr); //#line 3235 "VBNET.ATG" EraseStatement eraseStatement = new EraseStatement(); if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr);} while (la.kind == 22) { lexer.NextToken(); Expr( //#line 3238 "VBNET.ATG" out expr); //#line 3238 "VBNET.ATG" if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr); } } //#line 3239 "VBNET.ATG" statement = eraseStatement; } else if (la.kind == 206) { lexer.NextToken(); //#line 3241 "VBNET.ATG" statement = new StopStatement(); } else if ( //#line 3243 "VBNET.ATG" la.kind == Tokens.If) { Expect(135); //#line 3244 "VBNET.ATG" Location ifStartLocation = t.Location; Expr( //#line 3244 "VBNET.ATG" out expr); if (la.kind == 214) { lexer.NextToken(); } if (la.kind == 1 || la.kind == 21) { EndOfStmt(); Block( //#line 3247 "VBNET.ATG" out embeddedStatement); //#line 3249 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement); ifStatement.StartLocation = ifStartLocation; Location elseIfStart; while (la.kind == 112 || //#line 3255 "VBNET.ATG" IsElseIf()) { if ( //#line 3255 "VBNET.ATG" IsElseIf()) { Expect(111); //#line 3255 "VBNET.ATG" elseIfStart = t.Location; Expect(135); } else { lexer.NextToken(); //#line 3256 "VBNET.ATG" elseIfStart = t.Location; } //#line 3258 "VBNET.ATG" Expression condition = null; Statement block = null; Expr( //#line 3259 "VBNET.ATG" out condition); if (la.kind == 214) { lexer.NextToken(); } EndOfStmt(); Block( //#line 3260 "VBNET.ATG" out block); //#line 3262 "VBNET.ATG" ElseIfSection elseIfSection = new ElseIfSection(condition, block); elseIfSection.StartLocation = elseIfStart; elseIfSection.EndLocation = t.Location; elseIfSection.Parent = ifStatement; ifStatement.ElseIfSections.Add(elseIfSection); } if (la.kind == 111) { lexer.NextToken(); if (la.kind == 1 || la.kind == 21) { EndOfStmt(); } Block( //#line 3271 "VBNET.ATG" out embeddedStatement); //#line 3273 "VBNET.ATG" ifStatement.FalseStatement.Add(embeddedStatement); } Expect(113); Expect(135); //#line 3277 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else if (StartOf(45)) { //#line 3282 "VBNET.ATG" IfElseStatement ifStatement = new IfElseStatement(expr); ifStatement.StartLocation = ifStartLocation; SingleLineStatementList( //#line 3285 "VBNET.ATG" ifStatement.TrueStatement); if (la.kind == 111) { lexer.NextToken(); if (StartOf(45)) { SingleLineStatementList( //#line 3288 "VBNET.ATG" ifStatement.FalseStatement); } } //#line 3290 "VBNET.ATG" ifStatement.EndLocation = t.Location; statement = ifStatement; } else SynErr(301); } else if (la.kind == 197) { lexer.NextToken(); if (la.kind == 74) { lexer.NextToken(); } Expr( //#line 3293 "VBNET.ATG" out expr); EndOfStmt(); //#line 3294 "VBNET.ATG" List<SwitchSection> selectSections = new List<SwitchSection>(); Statement block = null; while (la.kind == 74) { //#line 3298 "VBNET.ATG" List<CaseLabel> caseClauses = null; Location caseLocation = la.Location; lexer.NextToken(); CaseClauses( //#line 3299 "VBNET.ATG" out caseClauses); if ( //#line 3299 "VBNET.ATG" IsNotStatementSeparator()) { lexer.NextToken(); } EndOfStmt(); //#line 3301 "VBNET.ATG" SwitchSection selectSection = new SwitchSection(caseClauses); selectSection.StartLocation = caseLocation; Block( //#line 3304 "VBNET.ATG" out block); //#line 3306 "VBNET.ATG" selectSection.Children = block.Children; selectSection.EndLocation = t.EndLocation; selectSections.Add(selectSection); } //#line 3312 "VBNET.ATG" statement = new SwitchStatement(expr, selectSections); Expect(113); Expect(197); } else if (la.kind == 171) { //#line 3315 "VBNET.ATG" OnErrorStatement onErrorStatement = null; OnErrorStatement( //#line 3316 "VBNET.ATG" out onErrorStatement); //#line 3316 "VBNET.ATG" statement = onErrorStatement; } else if (la.kind == 132) { //#line 3317 "VBNET.ATG" GotoStatement goToStatement = null; GotoStatement( //#line 3318 "VBNET.ATG" out goToStatement); //#line 3318 "VBNET.ATG" statement = goToStatement; } else if (la.kind == 194) { //#line 3319 "VBNET.ATG" ResumeStatement resumeStatement = null; ResumeStatement( //#line 3320 "VBNET.ATG" out resumeStatement); //#line 3320 "VBNET.ATG" statement = resumeStatement; } else if (StartOf(44)) { //#line 3323 "VBNET.ATG" Expression val = null; AssignmentOperatorType op; Location startLoc = la.Location; bool mustBeAssignment = la.kind == Tokens.Plus || la.kind == Tokens.Minus || la.kind == Tokens.Not || la.kind == Tokens.Times; SimpleExpr( //#line 3330 "VBNET.ATG" out expr); if (StartOf(46)) { AssignmentOperator( //#line 3332 "VBNET.ATG" out op); Expr( //#line 3332 "VBNET.ATG" out val); //#line 3334 "VBNET.ATG" expr = new AssignmentExpression(expr, op, val); expr.StartLocation = startLoc; expr.EndLocation = t.EndLocation; } else if (StartOf(47)) { //#line 3338 "VBNET.ATG" if (mustBeAssignment) Error("error in assignment."); } else SynErr(302); //#line 3341 "VBNET.ATG" // a field reference expression that stands alone is a // invocation expression without parantheses and arguments if(expr is MemberReferenceExpression || expr is IdentifierExpression) { Location endLocation = expr.EndLocation; expr = new InvocationExpression(expr); expr.StartLocation = startLoc; expr.EndLocation = endLocation; } statement = new ExpressionStatement(expr); } else if (la.kind == 73) { lexer.NextToken(); SimpleExpr( //#line 3351 "VBNET.ATG" out expr); //#line 3351 "VBNET.ATG" statement = new ExpressionStatement(expr); } else if (la.kind == 226) { lexer.NextToken(); //#line 3353 "VBNET.ATG" Statement block; if ( //#line 3354 "VBNET.ATG" Peek(1).kind == Tokens.As) { //#line 3355 "VBNET.ATG" LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifiers.None); VariableDeclarator( //#line 3356 "VBNET.ATG" resourceAquisition.Variables); while (la.kind == 22) { lexer.NextToken(); VariableDeclarator( //#line 3358 "VBNET.ATG" resourceAquisition.Variables); } Block( //#line 3360 "VBNET.ATG" out block); //#line 3362 "VBNET.ATG" statement = new UsingStatement(resourceAquisition, block); } else if (StartOf(24)) { Expr( //#line 3364 "VBNET.ATG" out expr); Block( //#line 3365 "VBNET.ATG" out block); //#line 3366 "VBNET.ATG" statement = new UsingStatement(new ExpressionStatement(expr), block); } else SynErr(303); Expect(113); Expect(226); } else if (StartOf(48)) { LocalDeclarationStatement( //#line 3369 "VBNET.ATG" out statement); } else SynErr(304); //#line 3372 "VBNET.ATG" if (statement != null) { statement.StartLocation = startLocation; statement.EndLocation = t.EndLocation; } }
public override object TrackedVisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { if (this.FoundResourceSet == null && // skip if already found to improve performance assignmentExpression.Op == AssignmentOperatorType.Assign && this.PositionAvailable && (!this.isLocalVariable || this.resourceManagerMember.Region.IsInside(this.CurrentNodeStartLocation.Y, this.CurrentNodeStartLocation.X)) // skip if local variable is out of scope ) { IMember resolvedMember = null; ResolveResult rr = this.Resolve(assignmentExpression.Left); if (rr != null) { // Support both local variables and member variables MemberResolveResult mrr = rr as MemberResolveResult; if (mrr != null) { resolvedMember = mrr.ResolvedMember; } else { LocalResolveResult lrr = rr as LocalResolveResult; if (lrr != null) { resolvedMember = lrr.Field; } } } if (resolvedMember != null) { #if DEBUG LoggingService.Debug("ResourceToolkit: BclNRefactoryResourceResolver: Resolved member: "+resolvedMember.ToString()); #endif // HACK: The GetType()s are necessary because the DOM IComparable implementations try to cast the parameter object to their own interface type which may fail. if (resolvedMember.GetType().Equals(this.resourceManagerMember.GetType()) && resolvedMember.CompareTo(this.resourceManagerMember) == 0) { #if DEBUG LoggingService.Debug("ResourceToolkit: BclNRefactoryResourceResolver found assignment to field: "+assignmentExpression.ToString()); #endif data = true; // Resolving the property association only makes sense if // there is a possible relationship between the return types // of the resolved member and the member we are looking for. } else if (this.compilationUnit != null && !this.isLocalVariable && IsTypeRelationshipPossible(resolvedMember, this.resourceManagerMember)) { if (this.resourceManagerMember is IProperty && resolvedMember is IField) { // Find out if the resourceManagerMember is a property whose get block returns the value of the resolved member. // We might already have found this association in the // resourceManagerFieldAccessedByProperty field. this.TryResolveResourceManagerProperty(); if (this.resourceManagerFieldAccessedByProperty != null && this.resourceManagerFieldAccessedByProperty.CompareTo(resolvedMember) == 0) { #if DEBUG LoggingService.Debug("ResourceToolkit: BclNRefactoryResourceResolver found assignment to field: "+assignmentExpression.ToString()); #endif data = true; } } else if (this.resourceManagerMember is IField && resolvedMember is IProperty) { // Find out if the resolved member is a property whose set block assigns the value to the resourceManagerMember. PropertyFieldAssociationVisitor visitor = new PropertyFieldAssociationVisitor((IField)this.resourceManagerMember, this.FileName, this.FileContent); this.compilationUnit.AcceptVisitor(visitor, null); if (visitor.AssociatedProperty != null && visitor.AssociatedProperty.CompareTo(resolvedMember) == 0) { #if DEBUG LoggingService.Debug("ResourceToolkit: BclNRefactoryResourceResolver found assignment to property: "+assignmentExpression.ToString()); #endif data = true; } } } } } return base.TrackedVisitAssignmentExpression(assignmentExpression, data); }