diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index f9b57fad1c..660b699fe3 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -702,6 +702,8 @@
+
+
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/AnonymousMethodReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/AnonymousMethodReturnType.cs
new file mode 100644
index 0000000000..62ecb43bf2
--- /dev/null
+++ b/src/Main/Base/Project/Src/Dom/Implementations/AnonymousMethodReturnType.cs
@@ -0,0 +1,55 @@
+//
+// 2002-2005 AlphaSierraPapa
+// GNU General Public License
+//
+// $Revision$
+//
+
+using System;
+using System.Collections.Generic;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Dom
+{
+ ///
+ /// The return type of anonymous method expressions or lambda expressions.
+ ///
+ public sealed class AnonymousMethodReturnType : ProxyReturnType
+ {
+ public override bool IsDefaultReturnType {
+ get {
+ return false;
+ }
+ }
+
+ public override IReturnType BaseType {
+ get {
+ return ReflectionReturnType.Delegate;
+ }
+ }
+
+ public override string Name {
+ get {
+ return "delegate";
+ }
+ }
+
+ public override string FullyQualifiedName {
+ get {
+ return Name;
+ }
+ }
+
+ public override string Namespace {
+ get {
+ return "";
+ }
+ }
+
+ public override string DotNetName {
+ get {
+ return Name;
+ }
+ }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
new file mode 100644
index 0000000000..35903dbd77
--- /dev/null
+++ b/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
@@ -0,0 +1,42 @@
+//
+// 2002-2005 AlphaSierraPapa
+// GNU General Public License
+//
+// $Revision$
+//
+
+using System;
+using System.Collections.Generic;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Dom
+{
+ /// The type of the 'null'/'nothing' literal.
+ [Serializable]
+ public sealed class NullReturnType : AbstractReturnType
+ {
+ public static readonly NullReturnType Instance = new NullReturnType();
+
+ public override bool Equals(object o)
+ {
+ return o is NullReturnType;
+ }
+
+ public override int GetHashCode()
+ {
+ return 0;
+ }
+
+ public override bool IsDefaultReturnType {
+ get {
+ return false;
+ }
+ }
+
+ public override IClass GetUnderlyingClass() { return null; }
+ public override List GetMethods() { return new List(); }
+ public override List GetProperties() { return new List(); }
+ public override List GetFields() { return new List(); }
+ public override List GetEvents() { return new List(); }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
index d3d00c9723..2f2775e16a 100644
--- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
+++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
@@ -30,10 +30,11 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object Visit(PrimitiveExpression primitiveExpression, object data)
{
- if (primitiveExpression.Value != null) {
+ if (primitiveExpression.Value == null) {
+ return NullReturnType.Instance;
+ } else {
return ReflectionReturnType.CreatePrimitive(primitiveExpression.Value.GetType());
}
- return null;
}
public override object Visit(BinaryOperatorExpression binaryOperatorExpression, object data)
@@ -444,7 +445,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object Visit(AnonymousMethodExpression anonymousMethodExpression, object data)
{
- return ReflectionReturnType.Delegate;
+ return new AnonymousMethodReturnType();
}
public override object Visit(ArrayInitializerExpression arrayInitializerExpression, object data)
diff --git a/src/Main/Base/Project/Src/Services/Debugger/DefaultDebugger.cs b/src/Main/Base/Project/Src/Services/Debugger/DefaultDebugger.cs
index f10aeeafca..d485138567 100644
--- a/src/Main/Base/Project/Src/Services/Debugger/DefaultDebugger.cs
+++ b/src/Main/Base/Project/Src/Services/Debugger/DefaultDebugger.cs
@@ -57,8 +57,8 @@ namespace ICSharpCode.Core
{
attachedProcess.Exited -= new EventHandler(AttachedProcessExited);
attachedProcess.Dispose();
- attachedProcess = null;
- OnDebugStopped(EventArgs.Empty);
+ attachedProcess = null;
+ WorkbenchSingleton.SafeThreadAsyncCall(this, "OnDebugStopped", EventArgs.Empty);
}
public void StartWithoutDebugging(ProcessStartInfo processStartInfo)