Browse Source

Fixed SD2-666: Code generation for EventHandler produces invalid code

Fixed SD2-589: Accessing disposed object on shutdown error logged

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1103 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
9caae3a9db
  1. 12
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  2. 12
      src/Main/Base/Project/Src/Services/RefactoringService/CodeGenerator.cs

12
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -287,7 +287,17 @@ namespace ICSharpCode.Core @@ -287,7 +287,17 @@ namespace ICSharpCode.Core
static void ParserUpdateStep()
{
object[] workbench = (object[])WorkbenchSingleton.SafeThreadCall(typeof(ParserService), "GetWorkbench");
object[] workbench;
try {
workbench = (object[])WorkbenchSingleton.SafeThreadCall(typeof(ParserService), "GetWorkbench");
} catch (ObjectDisposedException) {
// maybe workbench has been disposed while waiting for the SafeThreadCall
LoggingService.Warn("ObjectDisposedException while trying to invoke GetWorkbench()");
if (abortParserUpdateThread)
return; // abort this thread
else
throw; // some other error -> re-raise
}
if (workbench != null) {
IEditable editable = workbench[0] as IEditable;
if (editable != null) {

12
src/Main/Base/Project/Src/Services/RefactoringService/CodeGenerator.cs

@ -342,10 +342,14 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -342,10 +342,14 @@ namespace ICSharpCode.SharpDevelop.Refactoring
#region Generate OnEventMethod
public virtual MethodDeclaration CreateOnEventMethod(IEvent e)
{
TypeReference type = ConvertType(e.ReturnType, new ClassFinder(e));
if (type.Type.EndsWith("Handler"))
type.Type = type.Type.Substring(0, type.Type.Length - 7) + "Args";
TypeReference type;
if (e.ReturnType.TypeArguments != null && e.ReturnType.Name == "EventHandler") {
type = ConvertType(e.ReturnType.TypeArguments[0], new ClassFinder(e));
} else {
type = ConvertType(e.ReturnType, new ClassFinder(e));
if (type.Type.EndsWith("Handler"))
type.Type = type.Type.Substring(0, type.Type.Length - 7) + "Args";
}
List<ParameterDeclarationExpression> parameters = new List<ParameterDeclarationExpression>(1);
parameters.Add(new ParameterDeclarationExpression(type, "e"));
ModifierEnum modifier;

Loading…
Cancel
Save