diff --git a/src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo b/src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo
index 4d807e55ef..d617e17c04 100644
--- a/src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo
+++ b/src/AddIns/BackendBindings/Boo/Boo.InterpreterAddIn/Project/CodeCompletionData.boo
@@ -118,6 +118,7 @@ internal class GlobalsCompletionDataProvider(ICSharpCode.SharpDevelop.DefaultEdi
override def GenerateCompletionData(fileName as string, textArea as TextArea, charTyped as System.Char) as (ICompletionData):
globals = _interpreter.GetGlobals()
+ return array(ICompletionData, 0) if globals is null
data = array(ICompletionData, len(globals))
for index, key in enumerate(globals):
value = null #_interpreter.GetValue(key) TODO
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
index d8e8f76493..6efac20361 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
@@ -15,6 +15,7 @@
+
-
+
+
+
-
+
+
+
+
+
+
-
+
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
index 19973e98ea..fc29204930 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
@@ -18,17 +18,11 @@ namespace Grunwald.BooBinding
{
public class BooProject : CompilableProject
{
- static bool initialized = false;
public static readonly string BooBinPath = Path.GetDirectoryName(typeof(BooProject).Assembly.Location);
void Init()
{
reparseCodeSensitiveProperties.Add("Ducky");
-
- if (!initialized) {
- initialized = true;
- MSBuildEngine.MSBuildProperties.Add("BooBinPath", BooBinPath);
- }
}
public override string Language {
@@ -89,19 +83,19 @@ namespace Grunwald.BooBinding
protected override ParseProjectContent CreateProjectContent()
{
- ParseProjectContent pc = base.CreateProjectContent();
- ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
- pc.AddReferencedContent(ParserService.GetProjectContentForReference(systemItem));
- ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
- pc.AddReferencedContent(ParserService.GetProjectContentForReference(booLangItem));
if (BooCompilerPC == null) {
ReferenceProjectItem booCompilerItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Compiler.AbstractAstAttribute).Assembly.Location);
BooCompilerPC = ParserService.GetProjectContentForReference(booCompilerItem);
}
if (BooUsefulPC == null) {
ReferenceProjectItem booUsefulItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Useful.Attributes.SingletonAttribute).Assembly.Location);
- BooUsefulPC = ParserService.GetProjectContentForReference(booUsefulItem);
+ BooUsefulPC = ParserService.GetRegistryForReference(booUsefulItem).GetProjectContentForReference("Boo.Lang.Useful", booUsefulItem.Include);
}
+ ParseProjectContent pc = base.CreateProjectContent();
+ ReferenceProjectItem systemItem = new ReferenceProjectItem(this, "System");
+ pc.AddReferencedContent(ParserService.GetProjectContentForReference(systemItem));
+ ReferenceProjectItem booLangItem = new ReferenceProjectItem(this, typeof(Boo.Lang.Builtins).Assembly.Location);
+ pc.AddReferencedContent(ParserService.GetProjectContentForReference(booLangItem));
pc.DefaultImports = new DefaultUsing(pc);
pc.DefaultImports.Usings.Add("Boo.Lang");
pc.DefaultImports.Usings.Add("Boo.Lang.Builtins");
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
index 4d64ad0ff8..9a74d5a9ff 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
@@ -351,7 +351,7 @@ namespace VBNetBinding.FormattingStrategy
if (Regex.IsMatch(texttoreplace.Trim(), statement.StartRegex, RegexOptions.IgnoreCase)) {
string indentation = GetIndentation(textArea, lineNr - 1);
if (isEndStatementNeeded(textArea, ref statement, lineNr)) {
- textArea.Document.Insert(textArea.Caret.Offset, terminator + indentation + statement.EndStatement);
+ textArea.Document.Replace(curLine.Offset, curLine.Length, terminator + indentation + statement.EndStatement);
++undoCount;
}
for (int i = 0; i < statement.IndentPlus; i++) {
diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Templates/EmptyWixProject.xpt b/src/AddIns/BackendBindings/WixBinding/Project/Templates/EmptyWixProject.xpt
index 1634def44a..80684d4f95 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Templates/EmptyWixProject.xpt
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Templates/EmptyWixProject.xpt
@@ -20,6 +20,7 @@
Name=""
Language="1033"
Version="1.0.0.0"
+ UpgradeCode="${GUID}"
Manufacturer="">
/// Loads the string content into the view.
///
diff --git a/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs b/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs
index afb5a65cc3..019de021f7 100644
--- a/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs
+++ b/src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/AutostartCommands.cs
@@ -23,6 +23,9 @@ namespace ICSharpCode.Svn.Commands
///
public sealed class RegisterEventsCommand : AbstractCommand
{
+ const int CannotDeleteFileWithLocalModifications = 195006;
+ const int CannotDeleteFileNotUnderVersionControl = 200005;
+
public override void Run()
{
FileService.FileRemoving += FileRemoving;
@@ -65,12 +68,12 @@ namespace ICSharpCode.Svn.Commands
void FileCreated(object sender, FileEventArgs e)
{
+ if (e.IsDirectory) return;
if (!AddInOptions.AutomaticallyAddFiles) return;
if (!Path.IsPathRooted(e.FileName)) return;
string fullName = Path.GetFullPath(e.FileName);
if (!CanBeVersionControlledFile(fullName)) return;
- if (e.IsDirectory) return;
try {
Status status = SvnClient.Instance.Client.SingleStatus(fullName);
switch (status.TextStatus) {
@@ -91,7 +94,9 @@ namespace ICSharpCode.Svn.Commands
if (e.Cancel) return;
string fullName = Path.GetFullPath(e.FileName);
if (!CanBeVersionControlledFile(fullName)) return;
+
if (e.IsDirectory) {
+
// show "cannot delete directories" message even if
// AutomaticallyDeleteFiles (see below) is off!
Status status = SvnClient.Instance.Client.SingleStatus(fullName);
@@ -100,12 +105,45 @@ namespace ICSharpCode.Svn.Commands
case StatusKind.Unversioned:
break;
default:
- MessageService.ShowMessage("SubversionAddIn cannot delete directories, the directory is only removed from the project.");
+ // must be done using the subversion client, even if
+ // AutomaticallyDeleteFiles is off, because we don't want to corrupt the
+ // working copy
e.OperationAlreadyDone = true;
+ try {
+ SvnClient.Instance.Client.Delete(new string[] { fullName }, false);
+ } catch (SvnClientException ex) {
+ LoggingService.Warn("SVN Error code " + ex.ErrorCode);
+ LoggingService.Warn(ex);
+
+ if (ex.ErrorCode == CannotDeleteFileWithLocalModifications
+ || ex.ErrorCode == CannotDeleteFileNotUnderVersionControl)
+ {
+ if (MessageService.ShowCustomDialog("Delete directory",
+ "Error deleting " + fullName + ":\n" +
+ ex.Message, 0, 1,
+ "Force delete", "${res:Global.CancelButtonText}")
+ == 0)
+ {
+ try {
+ SvnClient.Instance.Client.Delete(new string[] { fullName }, true);
+ } catch (SvnClientException ex2) {
+ e.Cancel = true;
+ MessageService.ShowError(ex2.Message);
+ }
+ } else {
+ e.Cancel = true;
+ }
+ } else {
+ e.Cancel = true;
+ MessageService.ShowError(ex.Message);
+ }
+ }
break;
}
return;
}
+ // not a directory, but a file:
+
if (!AddInOptions.AutomaticallyDeleteFiles) return;
try {
Status status = SvnClient.Instance.Client.SingleStatus(fullName);
diff --git a/src/Libraries/DockPanel_Src/patchnotes.txt b/src/Libraries/DockPanel_Src/patchnotes.txt
index f11fdf2a26..2311008dc8 100644
--- a/src/Libraries/DockPanel_Src/patchnotes.txt
+++ b/src/Libraries/DockPanel_Src/patchnotes.txt
@@ -11,6 +11,8 @@ Patch #2:
Fixed CREATESTRUCT, MDICREATESTRUCT and WINDOWPOS P/Invoke structure declarations:
use IntPtr instead of int - we have to use a pointer-size integers here for 64-bit systems
Committed in revision 1335.
+ Reported to SF: http://sourceforge.net/tracker/index.php?func=detail&aid=1438642&group_id=110642&atid=659401
+ The fix was accepted and will be in the next release of the library.
Patch #3:
Activate the autohide pad explicitly - in DockContentHandler.cs
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets
index 1828bd35cd..0d1c071b0b 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.CSharp.targets
@@ -7,46 +7,50 @@
to work around a problem in Microsoft's C# targets
-->
$(TargetFrameworkVersion)
+ unknown
-
- $(SystemRoot)\Microsoft.NET\Framework\v1.0.3705
- true
- true
-
-
- $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322
- true
- true
-
-
-
+
v1.0
-
-
+
+
+ $(SystemRoot)\Microsoft.NET\Framework\v1.0.3705
+ $(SystemRoot)\Microsoft.NET\Framework\v1.1.4322
false
+ v1
-
- true
+
+ v2.0
+ v2
-
+
v1.0
true
+ CF
-
+
v2.0
true
+ CF
+
+
+ Mono
+
+
+
+
-
+
-
+
{CandidateAssemblyFiles};
$(ReferencePath);
@@ -60,7 +64,7 @@
$(CscToolPath)
-
+
false
@@ -68,16 +72,16 @@
-
-
+
-
+
-
+
@@ -87,15 +91,24 @@
-
-
+
+
+
+
PocketPC
- WinCE
+ WinCE
+
+ true
+ true
+
+
+
+
-
-
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
index a95ba0c385..1fed152b06 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/SharpDevelop.Build.VisualBasic.targets
@@ -28,8 +28,9 @@
-
- true
+
+ v2.0
+ true
@@ -157,12 +158,21 @@
-
-
+
+
+
+
PocketPC
- WinCE
+ WinCE
+
+ true
+ true
+
+
+
+
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd b/src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd
index f4a0947917..5ca4ec47ac 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Resources/HTML-Mode.xshd
@@ -32,7 +32,7 @@
</script>
- <script
+ <script@C
</script>
diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
index dec810b845..572ef20134 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
@@ -820,9 +820,28 @@ namespace ICSharpCode.SharpDevelop.Project
internal static void InitializeMSBuildProject(MSBuild.Project project)
{
- project.GlobalProperties.SetProperty("BuildingInsideVisualStudio", "true");
- foreach (KeyValuePair pair in MSBuildEngine.MSBuildProperties) {
- project.GlobalProperties.SetProperty(pair.Key, pair.Value, true);
+ InitializeMSBuildProjectProperties(project.GlobalProperties);
+ }
+
+ ///
+ /// Set compilation properties (MSBuildProperties and AddInTree/AdditionalPropertiesPath).
+ ///
+ internal static void InitializeMSBuildProjectProperties(MSBuild.BuildPropertyGroup propertyGroup)
+ {
+ foreach (KeyValuePair entry in MSBuildEngine.MSBuildProperties) {
+ propertyGroup.SetProperty(entry.Key, entry.Value);
+ }
+ // re-load these properties from AddInTree every time because "text" might contain
+ // SharpDevelop properties resolved by the StringParser (e.g. ${property:FxCopPath})
+ AddInTreeNode node = AddInTree.GetTreeNode(MSBuildEngine.AdditionalPropertiesPath, false);
+ if (node != null) {
+ foreach (Codon codon in node.Codons) {
+ object item = codon.BuildItem(null, new System.Collections.ArrayList());
+ if (item != null) {
+ bool escapeValue = !codon.Properties.Get("text", "").Contains("$(");
+ propertyGroup.SetProperty(codon.Id, item.ToString(), escapeValue);
+ }
+ }
}
}
diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
index e347421dcb..5adce7d3d5 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs
@@ -30,7 +30,7 @@ namespace ICSharpCode.SharpDevelop.Project
const string CompileTaskNamesPath = "/SharpDevelop/MSBuildEngine/CompileTaskNames";
const string AdditionalTargetFilesPath = "/SharpDevelop/MSBuildEngine/AdditionalTargetFiles";
const string AdditionalLoggersPath = "/SharpDevelop/MSBuildEngine/AdditionalLoggers";
- const string AdditionalPropertiesPath = "/SharpDevelop/MSBuildEngine/AdditionalProperties";
+ internal const string AdditionalPropertiesPath = "/SharpDevelop/MSBuildEngine/AdditionalProperties";
///
/// Gets a list of the task names that cause a "Compiling ..." log message.
@@ -69,6 +69,7 @@ namespace ICSharpCode.SharpDevelop.Project
MSBuildProperties = new SortedList();
MSBuildProperties.Add("SharpDevelopBinPath", Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location));
+ MSBuildProperties.Add("BuildingInsideVisualStudio", "true");
}
#region Properties
@@ -373,21 +374,9 @@ namespace ICSharpCode.SharpDevelop.Project
internal Engine CreateEngine()
{
Engine engine = MSBuildInternals.CreateEngine();
- foreach (KeyValuePair entry in MSBuildProperties) {
- engine.GlobalProperties.SetProperty(entry.Key, entry.Value);
- }
- // re-load these properties from AddInTree every time because "text" might contain
- // SharpDevelop properties resolved by the StringParser (e.g. ${property:FxCopPath})
- AddInTreeNode node = AddInTree.GetTreeNode(AdditionalPropertiesPath, false);
- if (node != null) {
- foreach (Codon codon in node.Codons) {
- object item = codon.BuildItem(null, new System.Collections.ArrayList());
- if (item != null) {
- bool escapeValue = !codon.Properties.Get("text", "").Contains("$(");
- engine.GlobalProperties.SetProperty(codon.Id, item.ToString(), escapeValue);
- }
- }
- }
+
+ MSBuildBasedProject.InitializeMSBuildProjectProperties(engine.GlobalProperties);
+
if (options.AdditionalProperties != null) {
foreach (KeyValuePair entry in options.AdditionalProperties) {
engine.GlobalProperties.SetProperty(entry.Key, entry.Value);
@@ -398,8 +387,6 @@ namespace ICSharpCode.SharpDevelop.Project
engine.GlobalProperties.SetProperty("SolutionFileName", Path.GetFileName(solution.FileName));
engine.GlobalProperties.SetProperty("SolutionPath", solution.FileName);
- engine.GlobalProperties.SetProperty("BuildingInsideVisualStudio", "true");
-
return engine;
}
diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIterator.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIterator.cs
index 2f95c9b90e..27c473589e 100644
--- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIterator.cs
+++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/TextIterator/ForwardTextIterator.cs
@@ -85,6 +85,10 @@ namespace SearchAndReplace
switch (state) {
case TextIteratorState.Resetted:
+ if (textBuffer.Length == 0) {
+ state = TextIteratorState.Done;
+ return false;
+ }
Position = endOffset;
state = TextIteratorState.Iterating;
return true;
diff --git a/src/Main/Base/Test/ForwardIteratorWithEmptyTextBufferTestFixture.cs b/src/Main/Base/Test/ForwardIteratorWithEmptyTextBufferTestFixture.cs
new file mode 100644
index 0000000000..b45b549c34
--- /dev/null
+++ b/src/Main/Base/Test/ForwardIteratorWithEmptyTextBufferTestFixture.cs
@@ -0,0 +1,47 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using ICSharpCode.SharpDevelop.Tests.Utils;
+using ICSharpCode.TextEditor.Document;
+using SearchAndReplace;
+using NUnit.Framework;
+
+namespace ICSharpCode.SharpDevelop.Tests
+{
+ ///
+ /// The fix for SD2-857 highlighted another bug (SD2-1312) in the
+ /// ForwardTextIterator where it does not handle the case where
+ /// the ITextBufferStrategy has a length of zero.
+ ///
+ [TestFixture]
+ public class ForwardIteratorWithEmptyTextBufferTestFixture
+ {
+ ForwardTextIterator forwardTextIterator;
+
+ [SetUp]
+ public void SetUp()
+ {
+ // Create the document to be iterated through.
+ MockDocument doc = new MockDocument();
+ StringTextBufferStrategy textBufferStrategy = new StringTextBufferStrategy();
+ doc.TextBufferStrategy = textBufferStrategy;
+ ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc,
+ @"C:\Temp\test.txt",
+ 0);
+
+ // Create the forward iterator.
+ forwardTextIterator = new ForwardTextIterator(docInfo);
+ }
+
+ [Test]
+ public void CannotMoveAhead()
+ {
+ Assert.IsFalse(forwardTextIterator.MoveAhead(1));
+ }
+ }
+}
diff --git a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
index 24917d5c6c..4d77837806 100644
--- a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
+++ b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
@@ -54,6 +54,7 @@
+
diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
index 81e20a2061..a299d4e047 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CecilReader.cs
@@ -256,6 +256,7 @@ namespace ICSharpCode.SharpDevelop.Dom
DefaultField f = new DefaultField(this, field.Name);
f.Modifiers = TranslateModifiers(field);
f.ReturnType = CreateType(this.ProjectContent, this, field.FieldType);
+ AddAttributes(CompilationUnit.ProjectContent, f.Attributes, field.CustomAttributes);
Fields.Add(f);
}
}
@@ -277,6 +278,7 @@ namespace ICSharpCode.SharpDevelop.Dom
p.IsIndexer = true;
}
AddParameters(p, property.Parameters);
+ AddAttributes(CompilationUnit.ProjectContent, p.Attributes, property.CustomAttributes);
Properties.Add(p);
}
}
@@ -290,6 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom
e.Modifiers = TranslateModifiers(eventDef);
}
e.ReturnType = CreateType(this.ProjectContent, this, eventDef.EventType);
+ AddAttributes(CompilationUnit.ProjectContent, e.Attributes, eventDef.CustomAttributes);
Events.Add(e);
}
}
@@ -320,6 +323,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
m.ReturnType = CreateType(this.ProjectContent, m, method.ReturnType.ReturnType);
+ AddAttributes(CompilationUnit.ProjectContent, m.Attributes, method.CustomAttributes);
if (this.ClassType == ClassType.Interface) {
m.Modifiers = ModifierEnum.Public | ModifierEnum.Abstract;
} else {
diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ConstructedReturnType.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ConstructedReturnType.cs
index a765f24170..ff13f06f66 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ConstructedReturnType.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/ConstructedReturnType.cs
@@ -81,17 +81,21 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
+ ///
+ /// Gets if is/contains a generic return type referring to a class type parameter.
+ ///
bool CheckReturnType(IReturnType t)
{
+ if (t == null) {
+ return false;
+ }
if (t.IsGenericReturnType) {
return t.CastToGenericReturnType().TypeParameter.Method == null;
} else if (t.IsArrayReturnType) {
return CheckReturnType(t.CastToArrayReturnType().ArrayElementType);
} else if (t.IsConstructedReturnType) {
foreach (IReturnType para in t.CastToConstructedReturnType().TypeArguments) {
- if (para != null) {
- if (CheckReturnType(para)) return true;
- }
+ if (CheckReturnType(para)) return true;
}
return false;
} else {
diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs
index 475b840f72..1866fac8f5 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/SearchClassReturnType.cs
@@ -108,14 +108,16 @@ namespace ICSharpCode.SharpDevelop.Dom
lock (cache) {
if (cache.TryGetValue(this, out type))
return type;
- try {
- isSearching = true;
- type = pc.SearchType(new SearchTypeRequest(name, typeParameterCount, declaringClass, caretLine, caretColumn)).Result;
+ }
+ try {
+ isSearching = true;
+ type = pc.SearchType(new SearchTypeRequest(name, typeParameterCount, declaringClass, caretLine, caretColumn)).Result;
+ lock (cache) {
cache[this] = type;
- return type;
- } finally {
- isSearching = false;
}
+ return type;
+ } finally {
+ isSearching = false;
}
}
}