Browse Source

Fix #255 InvalidOperationException: The new node 'CheckedExpression' is not valid in the role Initializer

pull/280/merge
Daniel Grunwald 14 years ago
parent
commit
70d1693e91
  1. 2
      ICSharpCode.Decompiler/Ast/Transforms/AddCheckedBlocks.cs
  2. 5
      ICSharpCode.Decompiler/Tests/CheckedUnchecked.cs

2
ICSharpCode.Decompiler/Ast/Transforms/AddCheckedBlocks.cs

@ -339,7 +339,7 @@ namespace ICSharpCode.Decompiler.Ast.Transforms @@ -339,7 +339,7 @@ namespace ICSharpCode.Decompiler.Ast.Transforms
result.NodesToInsertInCheckedContext = result.NodesToInsertInUncheckedContext + new ConvertCompoundAssignment(expr, false);
}
}
} else {
} else if (expr.Role.IsValid(Expression.Null)) {
// We use '<' so that expressions are introduced on the deepest level possible (goal 3)
if (result.CostInCheckedContext + new Cost(0, 1) < result.CostInUncheckedContext) {
result.CostInUncheckedContext = result.CostInCheckedContext + new Cost(0, 1);

5
ICSharpCode.Decompiler/Tests/CheckedUnchecked.cs

@ -109,4 +109,9 @@ public class CheckedUnchecked @@ -109,4 +109,9 @@ public class CheckedUnchecked
{
return f(t);
}
public void CheckedInArrayCreationArgument(int a, int b)
{
Console.WriteLine(new int[checked(a + b)]);
}
}

Loading…
Cancel
Save