Browse Source

Fix crash in ConvertToInitializer context action.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
6c62a05f10
  1. 4
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs
  2. 14
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertToInitializer/ConvertToInitializerTests.cs

4
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs

@ -124,12 +124,14 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -124,12 +124,14 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return false;
}
variableInitializer = variableDeclarationStatement.Variables.FirstOrNullObject();
if (variableInitializer.IsNull)
if (variableInitializer.IsNull || variableInitializer.Initializer.IsNull)
return false;
var sourceResolveResult = context.Resolve(variableInitializer.Initializer) as LocalResolveResult;
if (HasDependency(variableInitializer.Initializer) && !CanReplaceDependent(sourceResolveResult))
return false;
var targetResolveResult = context.Resolve(variableInitializer) as LocalResolveResult;
if (targetResolveResult == null)
return false;
AddNewVariable(targetResolveResult.Variable, variableInitializer.Initializer, node);
return true;
}

14
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertToInitializer/ConvertToInitializerTests.cs

@ -662,6 +662,20 @@ class TestClass @@ -662,6 +662,20 @@ class TestClass
// And another statement to make the converter even try
s = """";
}
}");
}
[Test]
public void DoesNotCrashOnVariableDeclarationWithoutInitializer()
{
TestWrongContext<ConvertToInitializerAction>(@"
class TestClass
{
void F()
{
TestClass $s1 = new TestClass();
TestClass s2;
}
}");
}
}

Loading…
Cancel
Save