private static bool WasFirstVariable(CSharp.Syntax.VariableDeclaratorSyntax variable) { var parent = GetOldParent(variable) as CSharp.Syntax.VariableDeclarationSyntax; if (parent != null) { return(parent.Variables[0] == variable); } return(false); }
private static bool CanReuseVariableDeclarator(CSharp.Syntax.VariableDeclaratorSyntax old, VariableFlags flags, bool isFirst) { if (old == null) { return(false); } SyntaxKind oldKind; return((flags == GetOriginalVariableFlags(old)) && (isFirst == WasFirstVariable(old)) && old.RankSpecifiers.Count == 0 && old.Initializer == null && // can't reuse node that possibly ends in an expression (oldKind = GetOldParent(old).Kind) != SyntaxKind.VariableDeclaration && // or in a method body oldKind != SyntaxKind.LocalDeclarationStatement); }
private static VariableFlags GetOriginalVariableFlags(CSharp.Syntax.VariableDeclaratorSyntax old) { var parent = GetOldParent(old); var mods = GetOriginalModifiers(parent); VariableFlags flags = default(VariableFlags); if (mods.Any(SyntaxKind.FinalKeyword)) { flags |= VariableFlags.Final; } if (parent != null && (parent.Kind == SyntaxKind.VariableDeclaration || parent.Kind == SyntaxKind.LocalDeclarationStatement)) { flags |= VariableFlags.Local; } return(flags); }