diff --git a/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs b/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs index 981e53bf1..1bc316785 100644 --- a/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs +++ b/Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs @@ -95,7 +95,7 @@ namespace ICSharpCode.NRefactory.Ast if (memberInfo.IsStatic) { target = new TypeReferenceExpression() { Type = memberInfo.DeclaringType.GetTypeReference() }; } else { - target = expresion.CastTo((DebugType)memberInfo.DeclaringType); + target = expresion.Clone().CastTo((DebugType)memberInfo.DeclaringType); } if (memberInfo is DebugFieldInfo) { @@ -141,7 +141,7 @@ namespace ICSharpCode.NRefactory.Ast throw new DebuggerException("Incorrect number of arguments"); List typedArgs = new List(args.Length); for(int i = 0; i < args.Length; i++) { - typedArgs.Add(args[i].CastTo((DebugType)method.GetParameters()[i].ParameterType)); + typedArgs.Add(args[i].Clone().CastTo((DebugType)method.GetParameters()[i].ParameterType)); } return typedArgs; } @@ -260,24 +260,24 @@ namespace ICSharpCode.NRefactory.Ast //newRef.ArraySpecifiers = typeRef.ArraySpecifiers; return newRef; } -// else if (expr is SimpleType) { -// var typeRef = (SimpleType)expr; -// string[] names = typeRef.Identifier.Split('.'); -// if (names.Length == 1) -// return typeRef; -// SimpleType newRef = null; -// foreach(string name in names) { -// if (newRef == null) { -// newRef = new SimpleType() { Identifier = name, TypeArguments = new List() }; -// } else { -// newRef = new MemberType() { Target = newRef, MemberName = name, TypeArguments = new List() }; -// } -// } -// ((List)newRef.TypeArguments).AddRange(typeRef.TypeArguments); -// newRef.PointerNestingLevel = typeRef.PointerNestingLevel; -// newRef.RankSpecifier = typeRef.RankSpecifier; -// return newRef; -// } + else if (expr is SimpleType) { + var typeRef = (SimpleType)expr; + string[] names = typeRef.Identifier.Split('.'); + if (names.Length == 1) + return typeRef; + AstType newRef = null; + foreach(string name in names) { + if (newRef == null) { + newRef = new SimpleType() { Identifier = name/*, TypeArguments = new List()*/ }; + } else { + newRef = new MemberType() { Target = newRef, MemberName = name/*, TypeArguments = new List() */}; + } + } + //((List)newRef.TypeArguments).AddRange(typeRef.TypeArguments); + //newRef.PointerNestingLevel = typeRef.PointerNestingLevel; + //newRef.RankSpecifier = typeRef.RankSpecifier; + return newRef; + } else { throw new EvaluateException(expr, "Type expected. {0} seen.", expr.GetType().FullName); } diff --git a/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs b/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs index e43f5eaeb..60af5f785 100644 --- a/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs +++ b/Debugger/Debugger.Core/NRefactory/Visitors/ExpressionEvaluator.cs @@ -286,7 +286,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val, val.Type); } - public object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) + public override object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) { BinaryOperatorType op; switch (assignmentExpression.Operator) { @@ -328,7 +328,7 @@ namespace ICSharpCode.NRefactory.Visitors return right; } - public object VisitBlockStatement(BlockStatement blockStatement, object data) + public override object VisitBlockStatement(BlockStatement blockStatement, object data) { foreach(var statement in blockStatement.Children) { Evaluate(statement); @@ -336,21 +336,21 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitEmptyStatement(EmptyStatement emptyStatement, object data) + public override object VisitEmptyStatement(EmptyStatement emptyStatement, object data) { return null; } - public object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) + public override object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) { Evaluate(expressionStatement.Expression); return null; } - public object VisitCastExpression(CastExpression castExpression, object data) + public override object VisitCastExpression(CastExpression castExpression, object data) { TypedValue val = Evaluate(castExpression.Expression); - DebugType castTo = null;// FIXME castExpression.CastTo().ResolveType(context.AppDomain); + DebugType castTo = castExpression.Type.ResolveType(context.AppDomain); if (castTo.IsPrimitive && val.Type.IsPrimitive && castTo != val.Type) { object oldVal = val.PrimitiveValue; object newVal; @@ -368,7 +368,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val.Value, castTo); } - public object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) + public override object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) { string identifier = identifierExpression.Identifier; @@ -410,7 +410,7 @@ namespace ICSharpCode.NRefactory.Visitors throw new GetValueException("Identifier \"" + identifier + "\" not found in this context"); } - public object VisitIndexerExpression(IndexerExpression indexerExpression, object data) + public override object VisitIndexerExpression(IndexerExpression indexerExpression, object data) { TypedValue target = Evaluate(indexerExpression.Target); @@ -444,7 +444,7 @@ namespace ICSharpCode.NRefactory.Visitors } } - public object VisitInvocationExpression(InvocationExpression invocationExpression, object data) + public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data) { TypedValue target; DebugType targetType; @@ -482,7 +482,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(retVal, (DebugType)method.ReturnType); } - public object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) + public override object VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) { if (!objectCreateExpression.Initializer.IsNull) throw new EvaluateException(objectCreateExpression.Initializer, "Object initializers not supported"); @@ -496,7 +496,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(val, type); } - public object VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) + public override object VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) { if (arrayCreateExpression.AdditionalArraySpecifiers.Count() != 0) throw new EvaluateException(arrayCreateExpression, "Multi-dimensional arrays are not suppored"); @@ -523,7 +523,7 @@ namespace ICSharpCode.NRefactory.Visitors return new TypedValue(array, type); } - public object VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) + public override object VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) { TypedValue target; DebugType targetType; @@ -549,12 +549,12 @@ namespace ICSharpCode.NRefactory.Visitors ); } - public object VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data) + public override object VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data) { return Evaluate(parenthesizedExpression.Expression); } - public object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) + public override object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) { return CreateValue(primitiveExpression.Value); } @@ -568,7 +568,7 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data) + public override object VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data) { TypedValue thisValue = GetThisValue(); if (thisValue == null) @@ -578,7 +578,7 @@ namespace ICSharpCode.NRefactory.Visitors #region Binary and unary expressions - public object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data) + public override object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data) { TypedValue value = Evaluate(unaryOperatorExpression.Expression); UnaryOperatorType op = unaryOperatorExpression.Operator; @@ -723,7 +723,7 @@ namespace ICSharpCode.NRefactory.Visitors return null; } - public object VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) + public override object VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) { BinaryOperatorType op = binaryOperatorExpression.Operator; diff --git a/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj b/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj index 6b21b453a..8d2e7c506 100644 --- a/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj +++ b/Debugger/ILSpy.Debugger/ILSpy.Debugger.csproj @@ -101,6 +101,7 @@ + @@ -136,6 +137,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png new file mode 100644 index 000000000..a8d001cba Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Class.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Delegate.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Delegate.png new file mode 100644 index 000000000..05707079d Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Delegate.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png new file mode 100644 index 000000000..3fbb2c149 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Enum.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Event.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Event.png new file mode 100644 index 000000000..aa3204ebc Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Event.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ExtensionMethod.png new file mode 100644 index 000000000..e76e2fbf3 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ExtensionMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png new file mode 100644 index 000000000..05318b85e Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Field.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png new file mode 100644 index 000000000..63cee80b1 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Indexer.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Interface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Interface.png new file mode 100644 index 000000000..d8f6f4153 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Interface.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalClass.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalClass.png new file mode 100644 index 000000000..0530af7e8 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalClass.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png new file mode 100644 index 000000000..9ee36aff7 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalDelegate.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png new file mode 100644 index 000000000..f5f901693 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEnum.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEvent.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEvent.png new file mode 100644 index 000000000..fedc45245 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalEvent.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png new file mode 100644 index 000000000..bc70136ff Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalExtensionMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalField.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalField.png new file mode 100644 index 000000000..ca17b0fca Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalField.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png new file mode 100644 index 000000000..b08297982 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalIndexer.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png new file mode 100644 index 000000000..fd818fe2a Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalInterface.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png new file mode 100644 index 000000000..16fa1738f Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalProperty.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalProperty.png new file mode 100644 index 000000000..504b531d1 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalProperty.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalStruct.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalStruct.png new file mode 100644 index 000000000..e067f1b54 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.InternalStruct.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png new file mode 100644 index 000000000..c69cca841 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Keyword.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png new file mode 100644 index 000000000..077075c13 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Literal.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Local.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Local.png new file mode 100644 index 000000000..b49032ca8 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Local.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png new file mode 100644 index 000000000..3ba3a9952 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Method.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png new file mode 100644 index 000000000..9660524ad Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.NameSpace.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Operator.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Operator.png new file mode 100644 index 000000000..fda73d089 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Operator.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png new file mode 100644 index 000000000..49257c647 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Parameter.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png new file mode 100644 index 000000000..370aa1c76 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateClass.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateDelegate.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateDelegate.png new file mode 100644 index 000000000..b6d652811 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateDelegate.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEnum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEnum.png new file mode 100644 index 000000000..968aabfbb Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEnum.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png new file mode 100644 index 000000000..faec01aff Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateEvent.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png new file mode 100644 index 000000000..b75a81575 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateExtensionMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png new file mode 100644 index 000000000..47455f917 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateField.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png new file mode 100644 index 000000000..2c43c46ea Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateIndexer.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateInterface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateInterface.png new file mode 100644 index 000000000..c81bb655f Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateInterface.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateMethod.png new file mode 100644 index 000000000..503df5e64 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateProperty.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateProperty.png new file mode 100644 index 000000000..a4e2e4485 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateProperty.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png new file mode 100644 index 000000000..a8812254f Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.PrivateStruct.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png new file mode 100644 index 000000000..091e7ab2c Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Property.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png new file mode 100644 index 000000000..6f97213ea Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedClass.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedDelegate.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedDelegate.png new file mode 100644 index 000000000..9bb2f8815 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedDelegate.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png new file mode 100644 index 000000000..1912ed883 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEnum.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEvent.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEvent.png new file mode 100644 index 000000000..819376531 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedEvent.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedExtensionMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedExtensionMethod.png new file mode 100644 index 000000000..df7038522 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedExtensionMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png new file mode 100644 index 000000000..7849a426a Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedField.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedIndexer.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedIndexer.png new file mode 100644 index 000000000..d894f9516 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedIndexer.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png new file mode 100644 index 000000000..d8fedab14 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedInterface.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png new file mode 100644 index 000000000..53f15bd5a Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedMethod.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedProperty.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedProperty.png new file mode 100644 index 000000000..af9647316 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedProperty.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedStruct.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedStruct.png new file mode 100644 index 000000000..fec00cced Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.ProtectedStruct.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Reference.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Reference.png new file mode 100644 index 000000000..85a4dfa0b Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Reference.png differ diff --git a/Debugger/ILSpy.Debugger/Images/Icons.16x16.Struct.png b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Struct.png new file mode 100644 index 000000000..4a1928a79 Binary files /dev/null and b/Debugger/ILSpy.Debugger/Images/Icons.16x16.Struct.png differ diff --git a/Debugger/ILSpy.Debugger/Models/TreeModel/ChildNodesOfObject.cs b/Debugger/ILSpy.Debugger/Models/TreeModel/ChildNodesOfObject.cs index effb7c7ab..fe651ba12 100644 --- a/Debugger/ILSpy.Debugger/Models/TreeModel/ChildNodesOfObject.cs +++ b/Debugger/ILSpy.Debugger/Models/TreeModel/ChildNodesOfObject.cs @@ -89,7 +89,7 @@ namespace ILSpy.Debugger.Models.TreeModel exp.ImageName = imageName; nodes.Add(exp); } - nodes.Sort(); + return nodes; } diff --git a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs index d7cfc8a18..0628155a3 100644 --- a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs +++ b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs @@ -13,6 +13,7 @@ using Debugger.MetaData; using ICSharpCode.NRefactory.Ast; using ICSharpCode.NRefactory.CSharp; using ILSpy.Debugger.Services; +using ILSpy.Debugger.Services.Debugger; namespace ILSpy.Debugger.Models.TreeModel { @@ -121,10 +122,10 @@ namespace ILSpy.Debugger.Models.TreeModel // no visualizers if evaluated value is null yield break; } - /*if (this.expressionType.IsPrimitive || this.expressionType.IsSystemDotObject() || this.expressionType.IsEnum()) { + if (this.expressionType.IsPrimitive || this.expressionType.IsSystemDotObject() || this.expressionType.IsEnum()) { // no visualizers for primitive types yield break; - }*/ + } yield break; // foreach (var descriptor in VisualizerDescriptors.GetAllDescriptors()) { @@ -180,10 +181,10 @@ namespace ILSpy.Debugger.Models.TreeModel } } - if (true) { - TreeNode info = ICorDebug.GetDebugInfoRoot(val.AppDomain, val.CorValue); - this.ChildNodes = Utils.PrependNode(info, this.ChildNodes); - } +// if (DebuggingOptions.Instance.ICorDebugVisualizerEnabled) { +// TreeNode info = ICorDebug.GetDebugInfoRoot(val.AppDomain, val.CorValue); +// this.ChildNodes = Utils.PrependNode(info, this.ChildNodes); +// } // Do last since it may expire the object if (val.Type.IsInteger) { @@ -229,6 +230,7 @@ namespace ILSpy.Debugger.Models.TreeModel string FormatInteger(object i) { + // if (DebuggingOptions.Instance.ShowIntegersAs == ShowIntegersAs.Decimal) if (true) return i.ToString(); diff --git a/Debugger/ILSpy.Debugger/Services/Debugger/DebuggerService.cs b/Debugger/ILSpy.Debugger/Services/Debugger/DebuggerService.cs index 9c351f6d3..a898aae0d 100644 --- a/Debugger/ILSpy.Debugger/Services/Debugger/DebuggerService.cs +++ b/Debugger/ILSpy.Debugger/Services/Debugger/DebuggerService.cs @@ -207,7 +207,7 @@ namespace ILSpy.Debugger.Services ParserService.SimpleParseAt(doc.Text, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column))); if (currentDebugger == null || !currentDebugger.IsDebugging || !currentDebugger.CanEvaluate) { - e.ContentToShow = variable; + e.ContentToShow = null; } else { e.ContentToShow = currentDebugger.GetTooltipControl(e.LogicalPosition, variable); diff --git a/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs b/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs index 9eaddc898..4f871ff5f 100644 --- a/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs +++ b/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs @@ -391,18 +391,19 @@ namespace ILSpy.Debugger.Services /// public object GetTooltipControl(AstLocation logicalPosition, string variableName) { - return new DebuggerTooltipControl(logicalPosition, new ExpressionNode(null, variableName, null)); - //FIXME -// try { -// var tooltipExpression = GetExpression(variableName); -// string imageName; -// var image = ExpressionNode.GetImageForLocalVariable(out imageName); -// ExpressionNode expressionNode = new ExpressionNode(image, variableName, tooltipExpression); -// expressionNode.ImageName = imageName; -// return new DebuggerTooltipControl(logicalPosition, expressionNode); -// } catch (GetValueException) { -// return null; -// } + try { + var tooltipExpression = GetExpression(variableName); + if (tooltipExpression == null) return null; + + string imageName; + var image = ExpressionNode.GetImageForLocalVariable(out imageName); + ExpressionNode expressionNode = new ExpressionNode(image, variableName, tooltipExpression); + expressionNode.ImageName = imageName; + + return new DebuggerTooltipControl(logicalPosition, expressionNode); + } catch (GetValueException) { + return null; + } } public ITreeNode GetNode(string variable, string currentImageName = null) diff --git a/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs b/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs index cb755c3f1..9646c312b 100644 --- a/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs +++ b/Debugger/ILSpy.Debugger/Services/ImageService/ImageService.cs @@ -26,9 +26,17 @@ namespace ILSpy.Debugger.Services { static BitmapImage LoadBitmap(string name) { - BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/ILSpy.Debugger;component/Images/" + name + ".png")); - image.Freeze(); - return image; + try { + BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/ILSpy.Debugger;component/Images/" + name + ".png")); + if (image == null) + return null; + image.Freeze(); + return image; + } + catch { + // resource not found + return null; + } } public static readonly BitmapImage Breakpoint = LoadBitmap("Breakpoint"); diff --git a/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs b/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs index b2b38a4d8..829688668 100644 --- a/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs +++ b/Debugger/ILSpy.Debugger/Services/ParserService/ParserService.cs @@ -83,7 +83,7 @@ namespace ILSpy.Debugger.Services currentValue = fullText[offset].ToString(); // searh right - while(!mySet.Contains(currentValue) && offset < fullText.Length) + while(!mySet.Contains(currentValue) && offset < fullText.Length - 2) currentValue = fullText[++right].ToString(); return fullText.Substring(left + 1, right - 1 - left).Trim(); diff --git a/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs b/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs index 656bacbc1..dff6e3357 100644 --- a/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs +++ b/Debugger/ILSpy.Debugger/ToolTips/DebuggerTooltipControl.xaml.cs @@ -84,6 +84,10 @@ namespace ILSpy.Debugger.Tooltips } public void SetItemsSource(IEnumerable value) { + + if (value == null) + return; + this.itemsSource = value; this.lazyGrid = new LazyItemsControl(this.dataGrid, InitialItemsCount); diff --git a/ICSharpCode.Decompiler/CodeMappings.cs b/ICSharpCode.Decompiler/CodeMappings.cs index f4ac2ffc2..98582c299 100644 --- a/ICSharpCode.Decompiler/CodeMappings.cs +++ b/ICSharpCode.Decompiler/CodeMappings.cs @@ -146,7 +146,8 @@ namespace ICSharpCode.Decompiler continue; var codeMapping = mapping.MethodCodeMappings.Find( - cm => cm.ILInstructionOffset.From <= ilOffset && ilOffset <= cm.ILInstructionOffset.To); + cm => (cm.ILInstructionOffset.From <= ilOffset && ilOffset <= cm.ILInstructionOffset.To - 1) || // for CSharp + (cm.ILInstructionOffset.From == ilOffset && ilOffset == cm.ILInstructionOffset.To)); // for IL if (codeMapping == null) continue; diff --git a/ILSpy.sln b/ILSpy.sln index 3310fac98..3bb9f43f4 100644 --- a/ILSpy.sln +++ b/ILSpy.sln @@ -1,15 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 -# SharpDevelop 4.1.0.7279-alpha +# SharpDevelop 4.1.0.7302-alpha Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy.Debugger", "Debugger\ILSpy.Debugger\ILSpy.Debugger.csproj", "{6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy.Debugger", "Debugger\ILSpy.Debugger\ILSpy.Debugger.csproj", "{6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpy", "ILSpy\ILSpy.csproj", "{1E85EFF9-E370-4683-83E4-8A3D063FF791}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "SharpTreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}" @@ -106,7 +106,7 @@ Global {6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A}.Release|Any CPU.ActiveCfg = Release|x86 EndGlobalSection GlobalSection(NestedProjects) = preSolution - {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} {6D3D0F0D-348D-456A-A6ED-E9BD5EFABB6A} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} + {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {1DEB3B4E-03AC-437C-821D-B09FBFCC3E5B} EndGlobalSection EndGlobal diff --git a/ILSpy/MainWindow.xaml.cs b/ILSpy/MainWindow.xaml.cs index 5a8f98842..25bd47c4f 100644 --- a/ILSpy/MainWindow.xaml.cs +++ b/ILSpy/MainWindow.xaml.cs @@ -310,12 +310,14 @@ namespace ICSharpCode.ILSpy window.Owner = this; if (window.ShowDialog() == true) { - AttachMenuItem.IsEnabled = AttachButton.IsEnabled = false; - ContinueDebuggingMenuItem.IsEnabled = - StepIntoMenuItem.IsEnabled = - StepOverMenuItem.IsEnabled = - StepOutMenuItem.IsEnabled = - DetachMenuItem.IsEnabled = true; + if (DebuggerService.CurrentDebugger.IsDebugging) { + AttachMenuItem.IsEnabled = AttachButton.IsEnabled = false; + ContinueDebuggingMenuItem.IsEnabled = + StepIntoMenuItem.IsEnabled = + StepOverMenuItem.IsEnabled = + StepOutMenuItem.IsEnabled = + DetachMenuItem.IsEnabled = true; + } } } } @@ -471,7 +473,7 @@ namespace ICSharpCode.ILSpy void LanguageComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { - DebuggerService.CurrentDebugger.Language = + DebuggerService.CurrentDebugger.Language = sessionSettings.FilterSettings.Language.Name.StartsWith("IL") ? DecompiledLanguages.IL : DecompiledLanguages.CSharp; } } diff --git a/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs b/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs index be1d11f68..92ac9a64b 100644 --- a/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs +++ b/NRefactory/ICSharpCode.NRefactory/CSharp/Ast/NotImplementedAstVisitor.cs @@ -7,522 +7,522 @@ namespace ICSharpCode.NRefactory.CSharp { public class NotImplementedAstVisitor : IAstVisitor { - public S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) + public virtual S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) { throw new NotImplementedException(); } - public S VisitArgListExpression(ArgListExpression argListExpression, T data) + public virtual S VisitArgListExpression(ArgListExpression argListExpression, T data) { throw new NotImplementedException(); } - public S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) + public virtual S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) { throw new NotImplementedException(); } - public S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) + public virtual S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) { throw new NotImplementedException(); } - public S VisitAsExpression(AsExpression asExpression, T data) + public virtual S VisitAsExpression(AsExpression asExpression, T data) { throw new NotImplementedException(); } - public S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) + public virtual S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) { throw new NotImplementedException(); } - public S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) + public virtual S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) + public virtual S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) { throw new NotImplementedException(); } - public S VisitCastExpression(CastExpression castExpression, T data) + public virtual S VisitCastExpression(CastExpression castExpression, T data) { throw new NotImplementedException(); } - public S VisitCheckedExpression(CheckedExpression checkedExpression, T data) + public virtual S VisitCheckedExpression(CheckedExpression checkedExpression, T data) { throw new NotImplementedException(); } - public S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) + public virtual S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) { throw new NotImplementedException(); } - public S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) + public virtual S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) { throw new NotImplementedException(); } - public S VisitDirectionExpression(DirectionExpression directionExpression, T data) + public virtual S VisitDirectionExpression(DirectionExpression directionExpression, T data) { throw new NotImplementedException(); } - public S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) + public virtual S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) { throw new NotImplementedException(); } - public S VisitIndexerExpression(IndexerExpression indexerExpression, T data) + public virtual S VisitIndexerExpression(IndexerExpression indexerExpression, T data) { throw new NotImplementedException(); } - public S VisitInvocationExpression(InvocationExpression invocationExpression, T data) + public virtual S VisitInvocationExpression(InvocationExpression invocationExpression, T data) { throw new NotImplementedException(); } - public S VisitIsExpression(IsExpression isExpression, T data) + public virtual S VisitIsExpression(IsExpression isExpression, T data) { throw new NotImplementedException(); } - public S VisitLambdaExpression(LambdaExpression lambdaExpression, T data) + public virtual S VisitLambdaExpression(LambdaExpression lambdaExpression, T data) { throw new NotImplementedException(); } - public S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) + public virtual S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) + public virtual S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) { throw new NotImplementedException(); } - public S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) + public virtual S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) + public virtual S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) { throw new NotImplementedException(); } - public S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) + public virtual S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) { throw new NotImplementedException(); } - public S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) + public virtual S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) + public virtual S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) { throw new NotImplementedException(); } - public S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) + public virtual S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) { throw new NotImplementedException(); } - public S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) + public virtual S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) { throw new NotImplementedException(); } - public S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) + public virtual S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) + public virtual S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) { throw new NotImplementedException(); } - public S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) + public virtual S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) { throw new NotImplementedException(); } - public S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) + public virtual S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) { throw new NotImplementedException(); } - public S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) + public virtual S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) { throw new NotImplementedException(); } - public S VisitQueryExpression(QueryExpression queryExpression, T data) + public virtual S VisitQueryExpression(QueryExpression queryExpression, T data) { throw new NotImplementedException(); } - public S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) + public virtual S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) { throw new NotImplementedException(); } - public S VisitQueryFromClause(QueryFromClause queryFromClause, T data) + public virtual S VisitQueryFromClause(QueryFromClause queryFromClause, T data) { throw new NotImplementedException(); } - public S VisitQueryLetClause(QueryLetClause queryLetClause, T data) + public virtual S VisitQueryLetClause(QueryLetClause queryLetClause, T data) { throw new NotImplementedException(); } - public S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) + public virtual S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) { throw new NotImplementedException(); } - public S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) + public virtual S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) { throw new NotImplementedException(); } - public S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) + public virtual S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) { throw new NotImplementedException(); } - public S VisitQueryOrdering(QueryOrdering queryOrdering, T data) + public virtual S VisitQueryOrdering(QueryOrdering queryOrdering, T data) { throw new NotImplementedException(); } - public S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) + public virtual S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) { throw new NotImplementedException(); } - public S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) + public virtual S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) { throw new NotImplementedException(); } - public S VisitAttribute(Attribute attribute, T data) + public virtual S VisitAttribute(Attribute attribute, T data) { throw new NotImplementedException(); } - public S VisitAttributeSection(AttributeSection attributeSection, T data) + public virtual S VisitAttributeSection(AttributeSection attributeSection, T data) { throw new NotImplementedException(); } - public S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) + public virtual S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) { throw new NotImplementedException(); } - public S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) + public virtual S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) { throw new NotImplementedException(); } - public S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) + public virtual S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) { throw new NotImplementedException(); } - public S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data) + public virtual S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data) { throw new NotImplementedException(); } - public S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) + public virtual S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) { throw new NotImplementedException(); } - public S VisitBlockStatement(BlockStatement blockStatement, T data) + public virtual S VisitBlockStatement(BlockStatement blockStatement, T data) { throw new NotImplementedException(); } - public S VisitBreakStatement(BreakStatement breakStatement, T data) + public virtual S VisitBreakStatement(BreakStatement breakStatement, T data) { throw new NotImplementedException(); } - public S VisitCheckedStatement(CheckedStatement checkedStatement, T data) + public virtual S VisitCheckedStatement(CheckedStatement checkedStatement, T data) { throw new NotImplementedException(); } - public S VisitContinueStatement(ContinueStatement continueStatement, T data) + public virtual S VisitContinueStatement(ContinueStatement continueStatement, T data) { throw new NotImplementedException(); } - public S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) + public virtual S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) { throw new NotImplementedException(); } - public S VisitEmptyStatement(EmptyStatement emptyStatement, T data) + public virtual S VisitEmptyStatement(EmptyStatement emptyStatement, T data) { throw new NotImplementedException(); } - public S VisitExpressionStatement(ExpressionStatement expressionStatement, T data) + public virtual S VisitExpressionStatement(ExpressionStatement expressionStatement, T data) { throw new NotImplementedException(); } - public S VisitFixedStatement(FixedStatement fixedStatement, T data) + public virtual S VisitFixedStatement(FixedStatement fixedStatement, T data) { throw new NotImplementedException(); } - public S VisitForeachStatement(ForeachStatement foreachStatement, T data) + public virtual S VisitForeachStatement(ForeachStatement foreachStatement, T data) { throw new NotImplementedException(); } - public S VisitForStatement(ForStatement forStatement, T data) + public virtual S VisitForStatement(ForStatement forStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) + public virtual S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) + public virtual S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) { throw new NotImplementedException(); } - public S VisitGotoStatement(GotoStatement gotoStatement, T data) + public virtual S VisitGotoStatement(GotoStatement gotoStatement, T data) { throw new NotImplementedException(); } - public S VisitIfElseStatement(IfElseStatement ifElseStatement, T data) + public virtual S VisitIfElseStatement(IfElseStatement ifElseStatement, T data) { throw new NotImplementedException(); } - public S VisitLabelStatement(LabelStatement labelStatement, T data) + public virtual S VisitLabelStatement(LabelStatement labelStatement, T data) { throw new NotImplementedException(); } - public S VisitLockStatement(LockStatement lockStatement, T data) + public virtual S VisitLockStatement(LockStatement lockStatement, T data) { throw new NotImplementedException(); } - public S VisitReturnStatement(ReturnStatement returnStatement, T data) + public virtual S VisitReturnStatement(ReturnStatement returnStatement, T data) { throw new NotImplementedException(); } - public S VisitSwitchStatement(SwitchStatement switchStatement, T data) + public virtual S VisitSwitchStatement(SwitchStatement switchStatement, T data) { throw new NotImplementedException(); } - public S VisitSwitchSection(SwitchSection switchSection, T data) + public virtual S VisitSwitchSection(SwitchSection switchSection, T data) { throw new NotImplementedException(); } - public S VisitCaseLabel(CaseLabel caseLabel, T data) + public virtual S VisitCaseLabel(CaseLabel caseLabel, T data) { throw new NotImplementedException(); } - public S VisitThrowStatement(ThrowStatement throwStatement, T data) + public virtual S VisitThrowStatement(ThrowStatement throwStatement, T data) { throw new NotImplementedException(); } - public S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) + public virtual S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) { throw new NotImplementedException(); } - public S VisitCatchClause(CatchClause catchClause, T data) + public virtual S VisitCatchClause(CatchClause catchClause, T data) { throw new NotImplementedException(); } - public S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) + public virtual S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) { throw new NotImplementedException(); } - public S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) + public virtual S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) { throw new NotImplementedException(); } - public S VisitUsingStatement(UsingStatement usingStatement, T data) + public virtual S VisitUsingStatement(UsingStatement usingStatement, T data) { throw new NotImplementedException(); } - public S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) + public virtual S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) { throw new NotImplementedException(); } - public S VisitWhileStatement(WhileStatement whileStatement, T data) + public virtual S VisitWhileStatement(WhileStatement whileStatement, T data) { throw new NotImplementedException(); } - public S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) + public virtual S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) { throw new NotImplementedException(); } - public S VisitYieldStatement(YieldStatement yieldStatement, T data) + public virtual S VisitYieldStatement(YieldStatement yieldStatement, T data) { throw new NotImplementedException(); } - public S VisitAccessor(Accessor accessor, T data) + public virtual S VisitAccessor(Accessor accessor, T data) { throw new NotImplementedException(); } - public S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) + public virtual S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) + public virtual S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) { throw new NotImplementedException(); } - public S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) + public virtual S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) + public virtual S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) { throw new NotImplementedException(); } - public S VisitEventDeclaration(EventDeclaration eventDeclaration, T data) + public virtual S VisitEventDeclaration(EventDeclaration eventDeclaration, T data) { throw new NotImplementedException(); } - public S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data) + public virtual S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data) { throw new NotImplementedException(); } - public S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) + public virtual S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) { throw new NotImplementedException(); } - public S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) + public virtual S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) { throw new NotImplementedException(); } - public S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) + public virtual S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) { throw new NotImplementedException(); } - public S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) + public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) { throw new NotImplementedException(); } - public S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) + public virtual S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) { throw new NotImplementedException(); } - public S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) + public virtual S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) { throw new NotImplementedException(); } - public S VisitVariableInitializer(VariableInitializer variableInitializer, T data) + public virtual S VisitVariableInitializer(VariableInitializer variableInitializer, T data) { throw new NotImplementedException(); } - public S VisitCompilationUnit(CompilationUnit compilationUnit, T data) + public virtual S VisitCompilationUnit(CompilationUnit compilationUnit, T data) { throw new NotImplementedException(); } - public S VisitSimpleType(SimpleType simpleType, T data) + public virtual S VisitSimpleType(SimpleType simpleType, T data) { throw new NotImplementedException(); } - public S VisitMemberType(MemberType memberType, T data) + public virtual S VisitMemberType(MemberType memberType, T data) { throw new NotImplementedException(); } - public S VisitComposedType(ComposedType composedType, T data) + public virtual S VisitComposedType(ComposedType composedType, T data) { throw new NotImplementedException(); } - public S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) + public virtual S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) { throw new NotImplementedException(); } - public S VisitPrimitiveType(PrimitiveType primitiveType, T data) + public virtual S VisitPrimitiveType(PrimitiveType primitiveType, T data) { throw new NotImplementedException(); } - public S VisitComment(Comment comment, T data) + public virtual S VisitComment(Comment comment, T data) { throw new NotImplementedException(); } - public S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) + public virtual S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) { throw new NotImplementedException(); } - public S VisitConstraint(Constraint constraint, T data) + public virtual S VisitConstraint(Constraint constraint, T data) { throw new NotImplementedException(); } - public S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data) + public virtual S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data) { throw new NotImplementedException(); } - public S VisitIdentifier(Identifier identifier, T data) + public virtual S VisitIdentifier(Identifier identifier, T data) { throw new NotImplementedException(); }