Browse Source

Try to fix NullReferenceException in UnreachableCodeIssue.

pull/474/head
Daniel Grunwald 11 years ago
parent
commit
04a076956d
  1. 18
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/UnreachableCodeIssue.cs

18
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/UnreachableCodeIssue.cs

@ -133,6 +133,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -133,6 +133,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (statement == null || !AddStatement(statement))
base.VisitChildren(node);
}
static TextLocation GetPrevEnd(AstNode node)
{
var prev = node.GetPrevNode(n => !(n is NewLineNode));
return prev != null ? prev.EndLocation : node.StartLocation;
}
static TextLocation GetNextStart(AstNode node)
{
var next = node.GetNextNode(n => !(n is NewLineNode));
return next != null ? next.StartLocation : node.EndLocation;
}
bool AddStatement(Statement statement)
{
@ -147,7 +159,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -147,7 +159,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
}
var prevEnd = statement.GetPrevNode(n => !(n is NewLineNode)).EndLocation;
var prevEnd = GetPrevEnd(statement);
TextLocation start;
TextLocation end;
@ -159,12 +171,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -159,12 +171,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
collectedStatements.Add(statement);
visitor.unreachableNodes.Add(statement);
collectedStatements.Add(ife.ElseToken);
end = ife.ElseToken.GetNextNode(n => !(n is NewLineNode)).StartLocation;
end = GetNextStart(ife.ElseToken);
} else if (statement.Role == IfElseStatement.FalseRole) {
var ife = (IfElseStatement)statement.Parent;
start = ife.ElseToken.StartLocation;
collectedStatements.Add(ife.ElseToken);
prevEnd = ife.ElseToken.GetPrevNode(n => !(n is NewLineNode)).EndLocation;
prevEnd = GetPrevEnd(ife.ElseToken);
collectedStatements.Add(statement);
visitor.unreachableNodes.Add(statement);
end = statement.EndLocation;

Loading…
Cancel
Save