Browse Source

remove unnecessary properties and clear the code.

pull/19/head
Eusebiu Marcu 14 years ago committed by Daniel Grunwald
parent
commit
9f4a336bdd
  1. 4
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  2. 7
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs
  3. 2
      src/AddIns/DisplayBindings/ILSpyAddIn/DebuggerDecompilerService.cs
  4. 26
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
  5. 8
      src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs
  6. 16
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  7. 7
      src/Main/Base/Project/Src/Gui/AbstractViewContentWithoutFile.cs
  8. 1
      src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs
  9. 33
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  10. 13
      src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs

4
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -774,8 +774,6 @@ namespace ICSharpCode.SharpDevelop.Services
int[] ilRanges; int[] ilRanges;
int methodToken; int methodToken;
if (debuggerDecompilerService.GetILAndTokenByLineNumber(token, dbb.LineNumber, out ilRanges, out methodToken)) { if (debuggerDecompilerService.GetILAndTokenByLineNumber(token, dbb.LineNumber, out ilRanges, out methodToken)) {
dbb.ILFrom = ilRanges[0];
dbb.ILTo = ilRanges[1];
// create BP // create BP
breakpoint = new ILBreakpoint( breakpoint = new ILBreakpoint(
debugger, debugger,
@ -783,7 +781,7 @@ namespace ICSharpCode.SharpDevelop.Services
dbb.LineNumber, dbb.LineNumber,
memberReference.MetadataToken.ToInt32(), memberReference.MetadataToken.ToInt32(),
methodToken, methodToken,
dbb.ILFrom, ilRanges[0],
dbb.IsEnabled); dbb.IsEnabled);
debugger.Breakpoints.Add(breakpoint); debugger.Breakpoints.Add(breakpoint);

7
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs

@ -235,17 +235,16 @@ namespace ICSharpCode.AvalonEdit.AddIn
// no bookmark on the line: create a new breakpoint // no bookmark on the line: create a new breakpoint
ITextEditor textEditor = TextView.Services.GetService(typeof(ITextEditor)) as ITextEditor; ITextEditor textEditor = TextView.Services.GetService(typeof(ITextEditor)) as ITextEditor;
if (textEditor != null) { if (textEditor != null) {
DebuggerService.ToggleBreakpointAt(textEditor, line); DebuggerService.ToggleBreakpointAt(textEditor, line, typeof(BreakpointBookmark));
return; return;
} }
// create breakpoint for the other posible active contents // create breakpoint for the other posible active contents
var viewContent = WorkbenchSingleton.Workbench.ActiveContent as AbstractViewContentWithoutFile; var viewContent = WorkbenchSingleton.Workbench.ActiveContent as AbstractViewContentWithoutFile;
if (viewContent != null && viewContent.Tag is MemberReference) { if (viewContent != null) {
var memberReference = (MemberReference)viewContent.Tag;
textEditor = viewContent.Services.GetService(typeof(ITextEditor)) as ITextEditor; textEditor = viewContent.Services.GetService(typeof(ITextEditor)) as ITextEditor;
if (textEditor != null) { if (textEditor != null) {
DebuggerService.ToggleBreakpointAt(memberReference, textEditor, line); DebuggerService.ToggleBreakpointAt(textEditor, line, typeof(DecompiledBreakpointBookmark));
return; return;
} }
} }

2
src/AddIns/DisplayBindings/ILSpyAddIn/DebuggerDecompilerService.cs

@ -10,6 +10,7 @@ using ICSharpCode.Decompiler.Ast;
using ICSharpCode.Decompiler.ILAst; using ICSharpCode.Decompiler.ILAst;
using ICSharpCode.ILSpyAddIn.LaunchILSpy; using ICSharpCode.ILSpyAddIn.LaunchILSpy;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Project;
using Mono.Cecil; using Mono.Cecil;
namespace ICSharpCode.ILSpyAddIn namespace ICSharpCode.ILSpyAddIn
@ -24,6 +25,7 @@ namespace ICSharpCode.ILSpyAddIn
static DebuggerDecompilerService() static DebuggerDecompilerService()
{ {
DebugInformation = new ConcurrentDictionary<int, DecompileInformation>(); DebugInformation = new ConcurrentDictionary<int, DecompileInformation>();
ProjectService.SolutionClosed += delegate { DebugInformation.Clear(); };
} }
internal static IDebuggerDecompilerService Instance { get; private set; } internal static IDebuggerDecompilerService Instance { get; private set; }

26
src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs

@ -11,8 +11,6 @@ using ICSharpCode.Decompiler;
using ICSharpCode.Decompiler.Ast; using ICSharpCode.Decompiler.Ast;
using ICSharpCode.ILSpyAddIn.LaunchILSpy; using ICSharpCode.ILSpyAddIn.LaunchILSpy;
using ICSharpCode.ILSpyAddIn.ViewContent; using ICSharpCode.ILSpyAddIn.ViewContent;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
@ -41,6 +39,8 @@ namespace ICSharpCode.ILSpyAddIn
readonly CodeView codeView; readonly CodeView codeView;
readonly CancellationTokenSource cancellation = new CancellationTokenSource(); readonly CancellationTokenSource cancellation = new CancellationTokenSource();
MemberReference decompiledType;
#region Constructor #region Constructor
public DecompiledViewContent(string assemblyFile, string fullTypeName, string entityTag) public DecompiledViewContent(string assemblyFile, string fullTypeName, string entityTag)
{ {
@ -86,14 +86,6 @@ namespace ICSharpCode.ILSpyAddIn
get { return true; } get { return true; }
} }
public MemberReference MemberReference {
get; private set;
}
public override object Tag {
get { return MemberReference; }
}
#endregion #endregion
#region Dispose #region Dispose
@ -176,17 +168,13 @@ namespace ICSharpCode.ILSpyAddIn
astBuilder.GenerateCode(textOutput); astBuilder.GenerateCode(textOutput);
// save decompilation data // save decompilation data
var nodes = TreeTraversal decompiledType = typeDefinition;
.PreOrder((AstNode)astBuilder.CompilationUnit, n => n.Children)
.Where(n => n is AttributedNode && n.Annotation<Tuple<int, int>>() != null);
MemberReference = typeDefinition;
int token = MemberReference.MetadataToken.ToInt32(); int token = decompiledType.MetadataToken.ToInt32();
var info = new DecompileInformation { var info = new DecompileInformation {
CodeMappings = astBuilder.CodeMappings, CodeMappings = astBuilder.CodeMappings,
LocalVariables = astBuilder.LocalVariables, LocalVariables = astBuilder.LocalVariables,
DecompiledMemberReferences = astBuilder.DecompiledMemberReferences, DecompiledMemberReferences = astBuilder.DecompiledMemberReferences
AstNodes = nodes
}; };
// save the data // save the data
@ -227,10 +215,10 @@ namespace ICSharpCode.ILSpyAddIn
{ {
if (!DebuggerService.IsDebuggerStarted) if (!DebuggerService.IsDebuggerStarted)
return; return;
if (MemberReference == null || MemberReference.MetadataToken == null) if (decompiledType == null || decompiledType.MetadataToken == null)
return; return;
int typeToken = MemberReference.MetadataToken.ToInt32(); int typeToken = decompiledType.MetadataToken.ToInt32();
if (!DebuggerDecompilerService.DebugInformation.ContainsKey(typeToken)) if (!DebuggerDecompilerService.DebugInformation.ContainsKey(typeToken))
return; return;
var decompilerService = DebuggerDecompilerService.Instance; var decompilerService = DebuggerDecompilerService.Instance;

8
src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs

@ -56,10 +56,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
action = (Debugging.BreakpointAction)Enum.Parse(typeof(Debugging.BreakpointAction), v[5]); action = (Debugging.BreakpointAction)Enum.Parse(typeof(Debugging.BreakpointAction), v[5]);
scriptLanguage = v[6]; scriptLanguage = v[6];
script = v[7]; script = v[7];
int ilfrom = Convert.ToInt32(v[8]);
int ilto = Convert.ToInt32(v[9]);
bbm = new DecompiledBreakpointBookmark(null, ilfrom, ilto, fileName, new Location(columnNumber, lineNumber), action, scriptLanguage, script); bbm = new DecompiledBreakpointBookmark(fileName, new Location(columnNumber, lineNumber), action, scriptLanguage, script);
bbm.IsEnabled = bool.Parse(v[4]); bbm.IsEnabled = bool.Parse(v[4]);
bbm.Action = action; bbm.Action = action;
bbm.ScriptLanguage = scriptLanguage; bbm.ScriptLanguage = scriptLanguage;
@ -126,10 +124,6 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
b.Append(bbm.ScriptLanguage); b.Append(bbm.ScriptLanguage);
b.Append('|'); b.Append('|');
b.Append(bbm.Condition); b.Append(bbm.Condition);
b.Append('|');
b.Append(bbm.ILFrom);
b.Append('|');
b.Append(bbm.ILTo);
} else if (bookmark is Debugging.BreakpointBookmark) { } else if (bookmark is Debugging.BreakpointBookmark) {
var bbm = (Debugging.BreakpointBookmark)bookmark; var bbm = (Debugging.BreakpointBookmark)bookmark;
b.Append('|'); b.Append('|');

16
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -121,18 +121,20 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{ {
var viewContent = WorkbenchSingleton.Workbench.ActiveContent; var viewContent = WorkbenchSingleton.Workbench.ActiveContent;
ITextEditorProvider provider = viewContent as ITextEditorProvider; ITextEditorProvider provider = viewContent as ITextEditorProvider;
ITextEditor editor = null;
if (provider != null) { if (provider != null) {
ITextEditor editor = provider.TextEditor; editor = provider.TextEditor;
if (!string.IsNullOrEmpty(editor.FileName)) { if (!string.IsNullOrEmpty(editor.FileName)) {
DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line); DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(BreakpointBookmark));
} }
} else { } else {
if (viewContent is AbstractViewContentWithoutFile) { var view = viewContent as AbstractViewContentWithoutFile;
dynamic codeView = ((AbstractViewContentWithoutFile)viewContent).Control; if (view != null) {
var editor = codeView.TextEditor as ITextEditor; editor = view.GetService(typeof(ITextEditor)) as ITextEditor;
if (editor != null && !string.IsNullOrEmpty(editor.FileName)) if (editor != null) {
DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line); DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(DecompiledBreakpointBookmark));
}
} }
} }
} }

7
src/Main/Base/Project/Src/Gui/AbstractViewContentWithoutFile.cs

@ -16,13 +16,6 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary> /// </summary>
public abstract class AbstractViewContentWithoutFile : AbstractViewContent, ICustomizedCommands public abstract class AbstractViewContentWithoutFile : AbstractViewContent, ICustomizedCommands
{ {
/// <summary>
/// Gets specific information (from implementations) regarding this view content.
/// </summary>
public virtual object Tag {
get { return null; }
}
public override bool IsViewOnly { public override bool IsViewOnly {
get { return false; } get { return false; }
} }

1
src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs

@ -3,7 +3,6 @@
using System; using System;
using System.Windows.Media; using System.Windows.Media;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Bookmarks;

33
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -3,9 +3,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Text; using System.Text;
using System.Windows;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -226,22 +224,29 @@ namespace ICSharpCode.SharpDevelop.Debugging
} }
} }
public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber) /// <summary>
/// Toggles a breakpoint bookmark.
/// </summary>
/// <param name="editor">Text editor where the bookmark is toggled.</param>
/// <param name="lineNumber">Line number.</param>
/// <param name="breakpointType">Type of breakpoint bookmark.</param>
/// <param name="parameters">Optional constructor parameters.</param>
public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber, Type breakpointType, object[] parameters = null)
{ {
BookmarkManager.ToggleBookmark( if (editor == null)
editor, lineNumber, throw new ArgumentNullException("editor");
b => b.CanToggle && b is BreakpointBookmark,
location => new BreakpointBookmark(editor.FileName, location, BreakpointAction.Break, "", "")); if (breakpointType == null)
} throw new ArgumentNullException("breakpointType");
if (!typeof(BreakpointBookmark).IsAssignableFrom(breakpointType))
throw new ArgumentException("breakpointType is not a BreakpointBookmark");
public static void ToggleBreakpointAt(MemberReference memberReference, ITextEditor editor, int lineNumber)
{
// no bookmark on the line: create a new breakpoint
BookmarkManager.ToggleBookmark( BookmarkManager.ToggleBookmark(
editor, lineNumber, editor, lineNumber,
b => b.CanToggle, b => b.CanToggle && b is BreakpointBookmark,
location => new DecompiledBreakpointBookmark( location => (BreakpointBookmark)Activator.CreateInstance(breakpointType,
memberReference, 0, 0, editor.FileName, location, BreakpointAction.Break, "", "")); parameters ?? new object[] { editor.FileName, location, BreakpointAction.Break, "", ""}));
} }
/* TODO: reimplement this stuff /* TODO: reimplement this stuff

13
src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs

@ -15,19 +15,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
MemberReference memberReference; MemberReference memberReference;
string assemblyFile; string assemblyFile;
public DecompiledBreakpointBookmark(MemberReference member, int ilFrom, int ilTo, FileName fileName, Location location, BreakpointAction action, string scriptLanguage, string script) : base(fileName, location, action, scriptLanguage, script) public DecompiledBreakpointBookmark(FileName fileName, Location location, BreakpointAction action, string scriptLanguage, string script)
: base(fileName, location, action, scriptLanguage, script)
{ {
this.memberReference = member;
this.ILFrom = ilFrom;
this.ILTo = ILTo;
}
public int ILFrom {
get; set;
}
public int ILTo {
get; set;
} }
public MemberReference MemberReference { public MemberReference MemberReference {

Loading…
Cancel
Save