|
|
@ -386,14 +386,16 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms |
|
|
|
|
|
|
|
|
|
|
|
bool IsMatchingAssignment(VariableToDeclare v, out AssignmentExpression assignment) |
|
|
|
bool IsMatchingAssignment(VariableToDeclare v, out AssignmentExpression assignment) |
|
|
|
{ |
|
|
|
{ |
|
|
|
assignment = v.InsertionPoint.nextNode as AssignmentExpression ?? (v.InsertionPoint.nextNode as ExpressionStatement)?.Expression as AssignmentExpression; |
|
|
|
assignment = v.InsertionPoint.nextNode as AssignmentExpression; |
|
|
|
Expression expectedExpr = new IdentifierExpression(v.Name); |
|
|
|
if (assignment == null) { |
|
|
|
if (v.Type.Kind == TypeKind.ByReference) { |
|
|
|
assignment = (v.InsertionPoint.nextNode as ExpressionStatement)?.Expression as AssignmentExpression; |
|
|
|
expectedExpr = new DirectionExpression(FieldDirection.Ref, expectedExpr); |
|
|
|
if (assignment == null) |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
if (assignment != null && assignment.Operator == AssignmentOperatorType.Assign && assignment.Left.IsMatch(expectedExpr)) |
|
|
|
return assignment.Operator == AssignmentOperatorType.Assign |
|
|
|
return true; |
|
|
|
&& assignment.Left is IdentifierExpression identExpr |
|
|
|
return false; |
|
|
|
&& identExpr.Identifier == v.Name |
|
|
|
|
|
|
|
&& identExpr.TypeArguments.Count == 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void InsertVariableDeclarations(TransformContext context) |
|
|
|
void InsertVariableDeclarations(TransformContext context) |
|
|
|