예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }