Browse Source

Fixed SD2-828: Resolving private field with the same name in subclass

Fixed SD2-834: Searching inside a directory which does not exist throws an exception

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1446 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
30d5780ff0
  1. 18
      src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
  2. 32
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/IDocumentIterator.cs
  3. 21
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceUtilities.cs

18
src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs

@ -138,17 +138,18 @@ namespace ICSharpCode.SharpDevelop.Dom
{ {
if (getMembersBusy) return new List<IField>(); if (getMembersBusy) return new List<IField>();
getMembersBusy = true; getMembersBusy = true;
List<IField> l; List<IField> l = new List<IField>();
l.AddRange(c.Fields);
if (c.ClassType == ClassType.Interface) { if (c.ClassType == ClassType.Interface) {
l = new List<IField>();
foreach (IReturnType baseType in c.BaseTypes) { foreach (IReturnType baseType in c.BaseTypes) {
l.AddRange(baseType.GetFields()); l.AddRange(baseType.GetFields());
} }
} else { } else {
IReturnType baseType = c.BaseType; IReturnType baseType = c.BaseType;
l = baseType != null ? c.BaseType.GetFields() : new List<IField>(); if (baseType != null) {
l.AddRange(baseType.GetFields());
}
} }
l.AddRange(c.Fields);
getMembersBusy = false; getMembersBusy = false;
return l; return l;
} }
@ -157,17 +158,18 @@ namespace ICSharpCode.SharpDevelop.Dom
{ {
if (getMembersBusy) return new List<IEvent>(); if (getMembersBusy) return new List<IEvent>();
getMembersBusy = true; getMembersBusy = true;
List<IEvent> l; List<IEvent> l = new List<IEvent>();
l.AddRange(c.Events);
if (c.ClassType == ClassType.Interface) { if (c.ClassType == ClassType.Interface) {
l = new List<IEvent>();
foreach (IReturnType baseType in c.BaseTypes) { foreach (IReturnType baseType in c.BaseTypes) {
l.AddRange(baseType.GetEvents()); l.AddRange(baseType.GetEvents());
} }
} else { } else {
IReturnType baseType = c.BaseType; IReturnType baseType = c.BaseType;
l = baseType != null ? c.BaseType.GetEvents() : new List<IEvent>(); if (baseType != null) {
l.AddRange(baseType.GetEvents());
}
} }
l.AddRange(c.Events);
getMembersBusy = false; getMembersBusy = false;
return l; return l;
} }

32
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/IDocumentIterator.cs

@ -60,4 +60,36 @@ namespace SearchAndReplace
/// </remarks> /// </remarks>
void Reset(); void Reset();
} }
/// <summary>
/// A document iterator which never returns any results.
/// </summary>
public sealed class DummyDocumentIterator : IDocumentIterator
{
public ProvidedDocumentInformation Current {
get {
return null;
}
}
public string CurrentFileName {
get {
return null;
}
}
public bool MoveForward()
{
return false;
}
public bool MoveBackward()
{
return false;
}
public void Reset()
{
}
}
} }

21
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceUtilities.cs

@ -22,7 +22,7 @@ namespace SearchAndReplace
public static bool IsTextAreaSelected { public static bool IsTextAreaSelected {
get { get {
return WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null && return WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null &&
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is ITextEditorControlProvider; WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is ITextEditorControlProvider;
} }
} }
@ -38,15 +38,7 @@ namespace SearchAndReplace
public static bool IsWholeWordAt(ITextBufferStrategy document, int offset, int length) public static bool IsWholeWordAt(ITextBufferStrategy document, int offset, int length)
{ {
return (offset - 1 < 0 || Char.IsWhiteSpace(document.GetCharAt(offset - 1))) && return (offset - 1 < 0 || Char.IsWhiteSpace(document.GetCharAt(offset - 1))) &&
(offset + length + 1 >= document.Length || Char.IsWhiteSpace(document.GetCharAt(offset + length))); (offset + length + 1 >= document.Length || Char.IsWhiteSpace(document.GetCharAt(offset + length)));
}
public static int CalcCurrentOffset(IDocument document)
{
// TODO:
// int endOffset = document.Caret.Offset % document.TextLength;
// return endOffset;
return 0;
} }
public static ISearchStrategy CreateSearchStrategy(SearchStrategyType type) public static ISearchStrategy CreateSearchStrategy(SearchStrategyType type)
@ -70,6 +62,15 @@ namespace SearchAndReplace
case DocumentIteratorType.CurrentSelection: case DocumentIteratorType.CurrentSelection:
return new CurrentDocumentIterator(); return new CurrentDocumentIterator();
case DocumentIteratorType.Directory: case DocumentIteratorType.Directory:
try {
if (!Directory.Exists(SearchOptions.LookIn)) {
MessageService.ShowMessageFormatted("${res:Dialog.NewProject.SearchReplace.SearchStringNotFound.Title}", "${res:Dialog.NewProject.SearchReplace.LookIn.DirectoryNotFound}", Path.GetFullPath(SearchOptions.LookIn));
return new DummyDocumentIterator();
}
} catch (Exception ex) {
MessageService.ShowMessage(ex.Message);
return new DummyDocumentIterator();
}
return new DirectoryDocumentIterator(SearchOptions.LookIn, return new DirectoryDocumentIterator(SearchOptions.LookIn,
SearchOptions.LookInFiletypes, SearchOptions.LookInFiletypes,
SearchOptions.IncludeSubdirectories); SearchOptions.IncludeSubdirectories);

Loading…
Cancel
Save