Browse Source

Added specific Ast Expression so that more information can be preserved.

Renamed Testing attribute SummaryOnly to ToStringOnly  

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2767 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 18 years ago
parent
commit
360acce034
  1. 11
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj
  2. 2
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/Breakpoint.cs
  3. 1
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/DebuggerObject.cs
  4. 17
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Tests/ExpandAttribute.cs
  5. 2
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Tests/ToStringOnlyAttribute.cs
  6. 10
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
  7. 8
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs
  8. 36
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/FieldReferenceExpression.cs
  9. 36
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/LocalVariableIdentifierExpression.cs
  10. 34
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/ParameterIdentifierExpression.cs
  11. 36
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/PropertyReferenceExpression.cs
  12. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs
  13. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/FieldInfo.cs
  14. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/MemberInfo.cs
  15. 4
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/PropertyInfo.cs
  16. 3
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs
  17. 4
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTestsBase.cs
  18. 2
      src/SharpDevelop.Tests.sln

11
src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj

@ -201,8 +201,9 @@ @@ -201,8 +201,9 @@
<Compile Include="Src\Modules\Module.cs" />
<Compile Include="Src\Modules\ModuleEventArgs.cs" />
<Compile Include="Src\Modules\Process-Modules.cs" />
<Compile Include="Src\Tests\ExpandAttribute.cs" />
<Compile Include="Src\Tests\IgnoreAttribute.cs" />
<Compile Include="Src\Tests\SummaryOnlyAttribute.cs" />
<Compile Include="Src\Tests\ToStringOnlyAttribute.cs" />
<Compile Include="Src\Threads\Exception.cs" />
<Compile Include="Src\Threads\ExceptionType.cs" />
<Compile Include="Src\Threads\FrameID.cs" />
@ -221,7 +222,11 @@ @@ -221,7 +222,11 @@
<Compile Include="Src\Variables\Evals\Eval.cs" />
<Compile Include="Src\Variables\Evals\EvalEventArgs.cs" />
<Compile Include="Src\Variables\Evals\Process-Evals.cs" />
<Compile Include="Src\Variables\Expression.cs" />
<Compile Include="Src\Variables\Expressions\Ast\FieldReferenceExpression.cs" />
<Compile Include="Src\Variables\Expressions\Ast\LocalVariableIdentifierExpression.cs" />
<Compile Include="Src\Variables\Expressions\Ast\ParameterIdentifierExpression.cs" />
<Compile Include="Src\Variables\Expressions\Ast\PropertyReferenceExpression.cs" />
<Compile Include="Src\Variables\Expressions\Expression.cs" />
<Compile Include="Src\Variables\Types\BindingFlags.cs" />
<Compile Include="Src\Variables\Types\DebugType-Helpers.cs" />
<Compile Include="Src\Variables\Types\DebugType.cs" />
@ -398,6 +403,8 @@ @@ -398,6 +403,8 @@
<Folder Include="Src\Util" />
<Folder Include="Src\Variables" />
<Folder Include="Src\Variables\Evals" />
<Folder Include="Src\Variables\Expressions" />
<Folder Include="Src\Variables\Expressions\Ast" />
<Folder Include="Src\Variables\Types" />
<Folder Include="Src\Variables\Values" />
<Folder Include="Src\Wrappers" />

2
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/Breakpoint.cs

@ -27,7 +27,7 @@ namespace Debugger @@ -27,7 +27,7 @@ namespace Debugger
}
}
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public SourcecodeSegment SourcecodeSegment {
get {
return sourcecodeSegment;

1
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/DebuggerObject.cs

@ -12,6 +12,7 @@ namespace Debugger @@ -12,6 +12,7 @@ namespace Debugger
/// <summary>
/// A base class for all classes declared by the debugger
/// </summary>
[Debugger.Tests.Expand]
public class DebuggerObject: MarshalByRefObject
{

17
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Tests/ExpandAttribute.cs

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision$</version>
// </file>
using System;
namespace Debugger.Tests
{
[AttributeUsage(AttributeTargets.Class)]
public class ExpandAttribute: Attribute
{
}
}

2
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Tests/SummaryOnlyAttribute.cs → src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Tests/ToStringOnlyAttribute.cs

@ -10,7 +10,7 @@ using System; @@ -10,7 +10,7 @@ using System;
namespace Debugger.Tests
{
[AttributeUsage(AttributeTargets.Property)]
public class SummaryOnlyAttribute: Attribute
public class ToStringOnlyAttribute: Attribute
{
}

10
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs

@ -62,7 +62,7 @@ namespace Debugger @@ -62,7 +62,7 @@ namespace Debugger
}
/// <summary> A module in which the function is defined </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Module Module {
get {
return module;
@ -511,10 +511,12 @@ namespace Debugger @@ -511,10 +511,12 @@ namespace Debugger
/// <param name="index"> Zero-based index </param>
public Value GetArgument(int index)
{
string name = GetParameterName(index);
return new Value(
process,
GetParameterName(index),
new Ast.IdentifierExpression(GetParameterName(index)),
name,
new Ast.ParameterIdentifierExpression(index, name),
new IExpirable[] {this},
new IMutable[] {process.DebugeeState},
delegate { return GetArgumentCorValue(index); }
@ -606,7 +608,7 @@ namespace Debugger @@ -606,7 +608,7 @@ namespace Debugger
return new Value(
process,
symVar.Name,
new Ast.IdentifierExpression(symVar.Name),
new Ast.LocalVariableIdentifierExpression(symVar),
new IExpirable[] {this},
new IMutable[] {process.DebugeeState},
delegate { return GetCorValueOfLocalVariable(symVar); }

8
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs

@ -359,7 +359,7 @@ namespace Debugger @@ -359,7 +359,7 @@ namespace Debugger
}
}
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Function SelectedFunction {
get {
return selectedFunction;
@ -373,7 +373,7 @@ namespace Debugger @@ -373,7 +373,7 @@ namespace Debugger
}
}
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Function LastFunctionWithLoadedSymbols {
get {
foreach (Function function in CallstackEnum) {
@ -389,7 +389,7 @@ namespace Debugger @@ -389,7 +389,7 @@ namespace Debugger
/// Returns the most recent function on callstack.
/// Returns null if callstack is empty.
/// </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Function LastFunction {
get {
foreach(Function function in CallstackEnum) {
@ -402,7 +402,7 @@ namespace Debugger @@ -402,7 +402,7 @@ namespace Debugger
/// <summary>
/// Returns the first function that was called on thread
/// </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Function FirstFunction {
get {
Function first = null;

36
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/FieldReferenceExpression.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision: 2285 $</version>
// </file>
using System;
using System.Collections.Generic;
using Debugger;
namespace ICSharpCode.NRefactory.Ast
{
/// <summary>
/// Reference to a class field
/// </summary>
public class FieldReferenceExpression: MemberReferenceExpression
{
FieldInfo fieldInfo;
public FieldInfo FieldInfo {
get { return fieldInfo; }
}
public FieldReferenceExpression(Expression targetObject, FieldInfo fieldInfo)
:base (targetObject, fieldInfo.Name)
{
this.fieldInfo = fieldInfo;
}
public override string ToString() {
return string.Format("[FieldReferenceExpression TargetObject={0} FieldName={1} TypeArguments={2}]", TargetObject, FieldName, GetCollectionString(TypeArguments));
}
}
}

36
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/LocalVariableIdentifierExpression.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision: 2285 $</version>
// </file>
using System;
using System.Collections.Generic;
using Debugger.Wrappers.CorSym;
namespace ICSharpCode.NRefactory.Ast
{
/// <summary>
/// Identifier of a local variable
/// </summary>
public class LocalVariableIdentifierExpression: IdentifierExpression
{
ISymUnmanagedVariable symVar;
public ISymUnmanagedVariable SymVar {
get { return symVar; }
}
public LocalVariableIdentifierExpression(ISymUnmanagedVariable symVar)
:base (symVar.Name)
{
this.symVar = symVar;
}
public override string ToString() {
return string.Format("[LocalVariableIdentifierExpression Identifier={0} TypeArguments={1}]", Identifier, GetCollectionString(TypeArguments));
}
}
}

34
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/ParameterIdentifierExpression.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision: 2285 $</version>
// </file>
using System;
using System.Collections.Generic;
namespace ICSharpCode.NRefactory.Ast
{
/// <summary>
/// Identifier of a method parameter
/// </summary>
public class ParameterIdentifierExpression: IdentifierExpression
{
int parameterIndex;
public int ParameterIndex {
get { return parameterIndex; }
}
public ParameterIdentifierExpression(int parameterIndex, string identifier)
:base (identifier)
{
this.parameterIndex = parameterIndex;
}
public override string ToString() {
return string.Format("[ParameterIdentifierExpression Index={0} Identifier={1} TypeArguments={2}]", ParameterIndex, Identifier, GetCollectionString(TypeArguments));
}
}
}

36
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Ast/PropertyReferenceExpression.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision: 2285 $</version>
// </file>
using System;
using System.Collections.Generic;
using Debugger;
namespace ICSharpCode.NRefactory.Ast
{
/// <summary>
/// Reference to a class property
/// </summary>
public class PropertyReferenceExpression: MemberReferenceExpression
{
PropertyInfo propertyInfo;
public PropertyInfo PropertyInfo {
get { return propertyInfo; }
}
public PropertyReferenceExpression(Expression targetObject, PropertyInfo propertyInfo)
:base (targetObject, propertyInfo.Name)
{
this.propertyInfo = propertyInfo;
}
public override string ToString() {
return string.Format("[PropertyReferenceExpression TargetObject={0} FieldName={1} TypeArguments={2}]", TargetObject, FieldName, GetCollectionString(TypeArguments));
}
}
}

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expression.cs → src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs

@ -18,7 +18,7 @@ namespace Debugger @@ -18,7 +18,7 @@ namespace Debugger
/// Represents a piece of code that can be evaluated.
/// For example "a[15] + 15".
/// </summary>
public class Expression
public class Expression: DebuggerObject
{
public static Expression Empty = null;
@ -32,7 +32,7 @@ namespace Debugger @@ -32,7 +32,7 @@ namespace Debugger
}
}
public Ast.Expression ExpressionAst {
public Ast.Expression AbstractSynatxTree {
get { return expressionAst; }
}

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/FieldInfo.cs

@ -76,9 +76,9 @@ namespace Debugger @@ -76,9 +76,9 @@ namespace Debugger
return new Value(
this.Process,
this.Name,
new Ast.MemberReferenceExpression(
new Ast.FieldReferenceExpression(
new Ast.IdentifierExpression("parent"), // TODO
this.Name
this
),
new IExpirable[] {objectInstance},
new IMutable[] {objectInstance},

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/MemberInfo.cs

@ -29,7 +29,7 @@ namespace Debugger @@ -29,7 +29,7 @@ namespace Debugger
}
/// <summary> Gets the type that declares this member element </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public DebugType DeclaringType {
get {
return declaringType;
@ -53,7 +53,7 @@ namespace Debugger @@ -53,7 +53,7 @@ namespace Debugger
public abstract string Name { get; }
/// <summary> Gets the module in which this member is defined </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public Module Module {
get {
return declaringType.Module;

4
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Types/PropertyInfo.cs

@ -98,9 +98,9 @@ namespace Debugger @@ -98,9 +98,9 @@ namespace Debugger
return new Value(
this.Process,
this.Name,
new Ast.MemberReferenceExpression(
new Ast.PropertyReferenceExpression(
new Ast.IdentifierExpression("parent"), // TODO
this.Name
this
),
dependencies.ToArray(),
dependencies.ToArray(),

3
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs

@ -111,6 +111,7 @@ namespace Debugger @@ -111,6 +111,7 @@ namespace Debugger
/// <summary> Expression that has lead to this value. </summary>
/// <returns> Expression or null if the exression can not
/// be obtained. </returns>
[Debugger.Tests.ToStringOnly]
public Expression Expression {
get { return expression; }
}
@ -242,7 +243,7 @@ namespace Debugger @@ -242,7 +243,7 @@ namespace Debugger
}
/// <summary> Returns the <see cref="Debugger.DebugType"/> of the value </summary>
[Debugger.Tests.SummaryOnly]
[Debugger.Tests.ToStringOnly]
public DebugType Type {
get {
return Cache.Type;

4
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTestsBase.cs

@ -151,7 +151,7 @@ namespace Debugger.Tests @@ -151,7 +151,7 @@ namespace Debugger.Tests
static bool ShouldExpandType(Type type)
{
return type.IsSubclassOf(typeof(DebuggerObject)) ||
return type.GetCustomAttributes(typeof(ExpandAttribute), true).Length > 0 ||
( typeof(IEnumerable).IsAssignableFrom(type) &&
type.Namespace != "System"
);
@ -193,7 +193,7 @@ namespace Debugger.Tests @@ -193,7 +193,7 @@ namespace Debugger.Tests
}
if (val == null) {
propertyNode.AppendChild(doc.CreateTextNode("null"));
} else if (!ShouldExpandType(val.GetType()) || property.GetCustomAttributes(typeof(Debugger.Tests.SummaryOnlyAttribute), true).Length > 0) {
} else if (!ShouldExpandType(val.GetType()) || property.GetCustomAttributes(typeof(Debugger.Tests.ToStringOnlyAttribute), true).Length > 0) {
// Only write ToString() text
propertyNode.AppendChild(doc.CreateTextNode(val.ToString()));
} else {

2
src/SharpDevelop.Tests.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.2745
# SharpDevelop 3.0.0.2753
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection

Loading…
Cancel
Save