Esempio n. 1
0
        protected SyntaxList<ExpressionSyntax> RewritePostfixUnarys(SyntaxList<ExpressionSyntax> nodes)
        {
            if (nodes.Count == 0)
                return nodes;

            return Syntax.List (nodes.Select (RewritePostfixUnarys));
        }
        public CodeActionEdit GetEdit(CancellationToken cancellationToken = new CancellationToken())
        {
            var newReturnType = Syntax.ParseTypeName("HttpResponseMessage").WithTrailingTrivia(Syntax.Space);
            var exp = Syntax.ParseExpression("new HttpResponseMessage(HttpStatusCode.Created)").WithLeadingTrivia(Syntax.Space);

            var returnStatement = Syntax.ReturnStatement(Syntax.Token(SyntaxKind.ReturnKeyword), exp ,Syntax.Token(SyntaxKind.SemicolonToken));
            var oldBody = _method.Body;

            var statements = oldBody.Statements.Where(x => x.GetType() != typeof (ReturnStatementSyntax)).ToList();
            var syntaxListStatements = new SyntaxList<StatementSyntax>();
            syntaxListStatements = statements.Aggregate(syntaxListStatements, (current, syntaxListStatement) => current.Add(syntaxListStatement));
            syntaxListStatements = syntaxListStatements.Add(returnStatement);

            var newBody = Syntax.Block(Syntax.Token(SyntaxKind.OpenBraceToken), syntaxListStatements, Syntax.Token(SyntaxKind.CloseBraceToken));

            var newmethod = Syntax.MethodDeclaration(_method.AttributeLists, _method.Modifiers, newReturnType,
                                                     _method.ExplicitInterfaceSpecifier, _method.Identifier,
                                                     _method.TypeParameterList, _method.ParameterList,
                                                     _method.ConstraintClauses, newBody);

            var oldRoot = _document.GetSyntaxRoot(cancellationToken);
            var newRoot = oldRoot.ReplaceNode(_method,newmethod);

            var newDoc = _document.UpdateSyntaxRoot(newRoot.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot());
            return new CodeActionEdit(newDoc);

        }
        /// <summary>
        /// Initializes a new instance of the <see cref="UvssInvalidSelectorPartSyntax"/> class.
        /// </summary>
        internal UvssInvalidSelectorPartSyntax(
            SyntaxList<SyntaxToken> components)
            : base(SyntaxKind.InvalidSelectorPart)
        {
            this.Components = components;
            ChangeParent(components.Node);

            SlotCount = 1;
            UpdateIsMissing();
        }
Esempio n. 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UvssSelectorSyntax"/> class.
        /// </summary>
        internal UvssSelectorSyntax(
            SyntaxList<SyntaxNode> components)
            : base(SyntaxKind.Selector)
        {
            this.Components = components;
            ChangeParent(components.Node);

            SlotCount = 1;
            UpdateIsMissing();
        }
        public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node)
        {
            node = (ClassDeclarationSyntax)base.VisitClassDeclaration(node);
            MethodDeclarationSyntax prector = Syntax.MethodDeclaration(Syntax.PredefinedType(Syntax.Token(SyntaxKind.VoidKeyword)), ".prector");
            List<StatementSyntax> Initializers = new List<StatementSyntax>();
            foreach (MemberDeclarationSyntax member in node.Members)
            {
                if (member.Kind == SyntaxKind.FieldDeclaration)
                {
                    FieldDeclarationSyntax fds = (FieldDeclarationSyntax)member;
                    foreach (VariableDeclaratorSyntax vds in fds.Declaration.Variables)
                    {
                        if (vds.Initializer != null)
                        {
                            Initializers.Add(Syntax.ExpressionStatement(Syntax.BinaryExpression(SyntaxKind.AssignExpression, Syntax.IdentifierName(vds.Identifier), vds.Initializer.Value)));
                        }
                    }
                }
            }

            if (Initializers.Count == 0)
                return node;

            int constructors = node.Members.Count((m) => (m is ConstructorDeclarationSyntax));

            prector = prector.AddBodyStatements(Initializers.ToArray());
            node = node.AddMembers(prector);

            if (constructors == 0)
            {
                ConstructorDeclarationSyntax ctor = Syntax.ConstructorDeclaration(node.Identifier);
                ctor = ctor.AddBodyStatements(Syntax.ExpressionStatement(Syntax.InvocationExpression(Syntax.IdentifierName(".prector"))));
                ctor = ctor.AddModifiers(Syntax.Token(SyntaxKind.PublicKeyword));
                return node.AddMembers(ctor);
            }

            SyntaxList<MemberDeclarationSyntax> newMembers = new SyntaxList<MemberDeclarationSyntax>();

            foreach (MemberDeclarationSyntax member in node.Members)
            {
                if (member.Kind == SyntaxKind.ConstructorDeclaration)
                {
                    newMembers = newMembers.Add((MemberDeclarationSyntax)ConstructorPrefixerDeclaration((ConstructorDeclarationSyntax)member));
                }
                else
                {
                    newMembers = newMembers.Add(member);
                }
            }

            return node.WithMembers(newMembers);
        }
        public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node)
        {
            node = (ClassDeclarationSyntax)base.VisitClassDeclaration(node);
            SyntaxList<MemberDeclarationSyntax> newMembers = new SyntaxList<MemberDeclarationSyntax>();
            foreach (MemberDeclarationSyntax member in node.Members)
            {
                if (member.Kind == SyntaxKind.PropertyDeclaration)
                {
                    PropertyDeclarationSyntax prop = (PropertyDeclarationSyntax)member;
                    SyntaxList<AccessorDeclarationSyntax> newAccessors = new SyntaxList<AccessorDeclarationSyntax>();
                    bool implementfield = false;
                    foreach (AccessorDeclarationSyntax accessor in prop.AccessorList.Accessors)
                    {
                        if (accessor.Body == null)
                        {
                            switch (accessor.Kind)
                            {
                                case SyntaxKind.GetAccessorDeclaration:
                                    implementfield = true;
                                    newAccessors = newAccessors.Add(accessor.WithBody(Syntax.Block(Syntax.ReturnStatement(Syntax.IdentifierName("_" + prop.Identifier.ValueText)))));
                                    break;
                                case SyntaxKind.SetAccessorDeclaration:
                                    implementfield = true;
                                    newAccessors = newAccessors.Add(accessor.WithBody(Syntax.Block(Syntax.ExpressionStatement(Syntax.BinaryExpression(SyntaxKind.AssignExpression, Syntax.IdentifierName("_" + prop.Identifier.ValueText), Syntax.IdentifierName("value"))))));
                                    break;
                                default:
                                    newAccessors = newAccessors.Add(accessor);
                                    break;
                            }
                        }
                        else
                        {
                            newAccessors = newAccessors.Add(accessor);
                        }
                    }
                    if (implementfield)
                    {
                        SeparatedSyntaxList<VariableDeclaratorSyntax> variables = new SeparatedSyntaxList<VariableDeclaratorSyntax>();
                        variables = variables.Add(Syntax.VariableDeclarator("_" + prop.Identifier.ValueText));
                        newMembers = newMembers.Add(Syntax.FieldDeclaration(Syntax.VariableDeclaration(prop.Type, variables)));
                    }

                    newMembers = newMembers.Add(prop.WithAccessorList(prop.AccessorList.WithAccessors(newAccessors)));
                }
                else
                {
                    newMembers = newMembers.Add(member);
                }
            }
            return node.WithMembers(newMembers);
        }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UvssDocumentSyntax"/> class.
        /// </summary>
        internal UvssDocumentSyntax(
            SyntaxList<SyntaxNode> content,
            SyntaxToken endOfFileToken)
            : base(SyntaxKind.Document)
        {
            this.Content = content;
            ChangeParent(content.Node);

            this.EndOfFileToken = endOfFileToken;
            ChangeParent(endOfFileToken);

            SlotCount = 2;
            UpdateIsMissing();
        }
        public static bool AreEquivalent(SyntaxList<SyntaxNode> nodeList1, SyntaxList<SyntaxNode> nodeList2)
        {
            if (nodeList1.Count != nodeList2.Count)
            {
                return false;
            }

            for (var i = 0; i < nodeList1.Count; i++)
            {
                if (!SyntaxFactory.AreEquivalent(nodeList1[i], nodeList2[i]))
                {
                    return false;
                }
            }

            return true;
        }
Esempio n. 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UvssBlockSyntax"/> class.
        /// </summary>
        internal UvssBlockSyntax(
            SyntaxToken openCurlyBraceToken,
            SyntaxList<SyntaxNode> content,
            SyntaxToken closeCurlyBraceToken)
            : base(SyntaxKind.Block)
        {
            this.OpenCurlyBraceToken = openCurlyBraceToken;
            ChangeParent(openCurlyBraceToken);

            this.Content = content;
            ChangeParent(content.Node);

            this.CloseCurlyBraceToken = closeCurlyBraceToken;
            ChangeParent(closeCurlyBraceToken);

            SlotCount = 3;
            UpdateIsMissing();
        }
Esempio n. 10
0
        public static bool AreEquivalent(SyntaxList<SyntaxNode> nodeList1, SyntaxList<SyntaxNode> nodeList2,
            Func<SyntaxNode, SyntaxNode, bool> nodeComparator)
        {
            if (nodeList1.Count != nodeList2.Count)
            {
                return false;
            }

            for (var i = 0; i < nodeList1.Count; i++)
            {
                if (!AreEquivalent(nodeList1[i], nodeList2[i], nodeComparator))
                {
                    return false;
                }
            }

            return true;
        }
Esempio n. 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UvssSelectorPartSyntax"/> class.
        /// </summary>
        internal UvssSelectorPartSyntax(
            UvssSelectorPartTypeSyntax selectedType,
            UvssSelectorPartNameSyntax selectedName,
            SyntaxList<UvssSelectorPartClassSyntax> selectedClasses,
            UvssPseudoClassSyntax pseudoClass)
            : base(SyntaxKind.SelectorPart)
        {
            this.SelectedType = selectedType;
            ChangeParent(selectedType);

            this.SelectedName = selectedName;
            ChangeParent(selectedName);

            this.SelectedClasses = selectedClasses;
            ChangeParent(selectedClasses.Node);

            this.PseudoClass = pseudoClass;
            ChangeParent(pseudoClass);

            SlotCount = 4;
            UpdateIsMissing();
        }
Esempio n. 12
0
        private void WriteGlobalNodes(SyntaxList<UsingDirectiveSyntax> usings, SyntaxList<ExternAliasDirectiveSyntax> externs, SyntaxList<MemberDeclarationSyntax> members, SyntaxList<AttributeListSyntax> attributeLists)
        {
            string lastUsingGroup = null;

            foreach (var @using in usings)
            {
                string usingGroup;

                var name = @using.Name;

                while (name.SyntaxKind == SyntaxKind.QualifiedName)
                {
                    name = ((QualifiedNameSyntax)name).Left;
                }

                if (name.SyntaxKind == SyntaxKind.IdentifierName)
                    usingGroup = ((IdentifierNameSyntax)name).Identifier;
                else
                    usingGroup = null;

                if (lastUsingGroup != null && usingGroup != lastUsingGroup)
                    _writer.WriteLine(_writer.Configuration.BlankLines.BetweenDifferentUsingGroups);

                @using.Accept(this);

                lastUsingGroup = usingGroup;
            }

            foreach (var @extern in externs)
            {
                @extern.Accept(this);
            }

            if (attributeLists != null && attributeLists.Count > 0)
            {
                if (usings.Count > 0 || externs.Count > 0)
                    _writer.WriteLine();

                foreach (var attribute in attributeLists)
                {
                    _writer.WriteIndent();
                    attribute.Accept(this);
                    _writer.WriteLine();
                }
            }

            int newlines;

            if (
                usings.Count > 0 ||
                externs.Count > 0 ||
                (attributeLists != null && attributeLists.Count > 0)
            )
                newlines = _writer.Configuration.BlankLines.AfterUsingList;
            else
                newlines = 0;

            if (members.Count > 0)
            {
                for (int i = 0; i < members.Count; i++)
                {
                    var member = members[i];

                    if (i > 0 || newlines > 0)
                    {
                        if (member.SyntaxKind == SyntaxKind.NamespaceDeclaration)
                            newlines = Math.Max(newlines, _writer.Configuration.BlankLines.AroundNamespace);
                        else if (member is BaseTypeDeclarationSyntax)
                            newlines = Math.Max(newlines, _writer.Configuration.BlankLines.AroundType);
                        else
                            newlines = Math.Max(newlines, 1);

                        _writer.WriteLine(newlines);
                    }

                    member.Accept(this);

                    if (member.SyntaxKind == SyntaxKind.NamespaceDeclaration)
                        newlines = _writer.Configuration.BlankLines.AroundNamespace;
                    else if (member is BaseTypeDeclarationSyntax)
                        newlines = _writer.Configuration.BlankLines.AroundType;
                    else
                        newlines = 1;
                }
            }
        }
 static SyntaxList<StatementSyntax> GenerateNewTrueStatement(SyntaxList<StatementSyntax> falseStatements)
 {
     if (falseStatements.Count == 1)
     {
         var stmt = falseStatements.First();
         if (stmt.GetLeadingTrivia().All(triva => triva.IsKind(SyntaxKind.WhitespaceTrivia)))
             return new SyntaxList<StatementSyntax>().Add(stmt);
     }
     return falseStatements;
 }
Esempio n. 14
0
        public static bool TryGetContainingList(TypeParameterConstraintClauseSyntax constraintClause, out SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses)
        {
            SyntaxNode parent = constraintClause.Parent;

            switch (parent?.Kind())
            {
            case SyntaxKind.ClassDeclaration:
            {
                constraintClauses = ((ClassDeclarationSyntax)parent).ConstraintClauses;
                return(true);
            }

            case SyntaxKind.DelegateDeclaration:
            {
                constraintClauses = ((DelegateDeclarationSyntax)parent).ConstraintClauses;
                return(true);
            }

            case SyntaxKind.InterfaceDeclaration:
            {
                constraintClauses = ((InterfaceDeclarationSyntax)parent).ConstraintClauses;
                return(true);
            }

            case SyntaxKind.LocalFunctionStatement:
            {
                constraintClauses = ((LocalFunctionStatementSyntax)parent).ConstraintClauses;
                return(true);
            }

            case SyntaxKind.MethodDeclaration:
            {
                constraintClauses = ((MethodDeclarationSyntax)parent).ConstraintClauses;
                return(true);
            }

            case SyntaxKind.StructDeclaration:
            {
                constraintClauses = ((StructDeclarationSyntax)parent).ConstraintClauses;
                return(true);
            }
            }

            constraintClauses = default(SyntaxList <TypeParameterConstraintClauseSyntax>);
            return(false);
        }
Esempio n. 15
0
        public static SyntaxNode RemoveConstraintClauses(SyntaxNode node)
        {
            switch (node.Kind())
            {
            case SyntaxKind.ClassDeclaration:
            {
                var classDeclaration = (ClassDeclarationSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = classDeclaration.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(classDeclaration
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }

            case SyntaxKind.InterfaceDeclaration:
            {
                var interfaceDeclaration = (InterfaceDeclarationSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = interfaceDeclaration.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(interfaceDeclaration
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }

            case SyntaxKind.StructDeclaration:
            {
                var structDeclaration = (StructDeclarationSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = structDeclaration.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(structDeclaration
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }

            case SyntaxKind.DelegateDeclaration:
            {
                var delegateDeclaration = (DelegateDeclarationSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = delegateDeclaration.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(delegateDeclaration
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }

            case SyntaxKind.MethodDeclaration:
            {
                var methodDeclaration = (MethodDeclarationSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = methodDeclaration.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(methodDeclaration
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }

            case SyntaxKind.LocalFunctionStatement:
            {
                var localFunctionStatement = (LocalFunctionStatementSyntax)node;

                SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses = localFunctionStatement.ConstraintClauses;

                if (!constraintClauses.Any())
                {
                    break;
                }

                TypeParameterConstraintClauseSyntax first = constraintClauses.First();

                SyntaxToken token = first.WhereKeyword.GetPreviousToken();

                SyntaxTriviaList trivia = token.TrailingTrivia.EmptyIfWhitespace()
                                          .AddRange(first.GetLeadingTrivia().EmptyIfWhitespace())
                                          .AddRange(constraintClauses.Last().GetTrailingTrivia());

                return(localFunctionStatement
                       .ReplaceToken(token, token.WithTrailingTrivia(trivia))
                       .WithConstraintClauses(default(SyntaxList <TypeParameterConstraintClauseSyntax>)));
            }
            }

            return(node);
        }
        Document PerformAction(Document document, SemanticModel model, SyntaxNode root, PropertyBlockSyntax propertyDeclaration, bool needsSetter)
        {
            AccessorBlockSyntax accessor = null;
            PropertyBlockSyntax newProp = null;
            if (needsSetter)
            {
                accessor = SyntaxFactory.AccessorBlock(
                    SyntaxKind.SetAccessorBlock,
                    SyntaxFactory.AccessorStatement(SyntaxKind.SetAccessorStatement, SyntaxFactory.Token(SyntaxKind.SetKeyword))
                        .WithParameterList(SyntaxFactory.ParameterList(SyntaxFactory.SeparatedList(new[] {
                            SyntaxFactory.Parameter(SyntaxFactory.List<AttributeListSyntax>(), SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.ByValKeyword)), SyntaxFactory.ModifiedIdentifier("value"), SyntaxFactory.SimpleAsClause(propertyDeclaration.PropertyStatement.AsClause.Type().WithoutTrailingTrivia()), null)
                        }))),
                    SyntaxFactory.EndBlockStatement(SyntaxKind.EndSetStatement, SyntaxFactory.Token(SyntaxKind.SetKeyword)));

                var getter = propertyDeclaration.Accessors.FirstOrDefault(m => m.IsKind(SyntaxKind.GetAccessorBlock));
                if (getter != null)
                {
                    var getField = getter.ScanGetter(model);
                    if (getField == null || getField.IsReadOnly)
                    {
                        // Readonly or no field can be found
                        accessor = accessor.WithStatements(SyntaxFactory.List<StatementSyntax>(new[] { GetNotImplementedThrowStatement() }));
                    }
                    else
                    {
                        // Now we add a 'field = value'.
                        accessor = accessor.WithStatements(SyntaxFactory.List<StatementSyntax>(new[] {
                                SyntaxFactory.AssignmentStatement(SyntaxKind.SimpleAssignmentStatement, SyntaxFactory.IdentifierName(getField.Name), SyntaxFactory.Token(SyntaxKind.EqualsToken), SyntaxFactory.IdentifierName("value")) }));
                    }
                }
                var modifierList = SyntaxFactory.TokenList(propertyDeclaration.PropertyStatement.Modifiers.Where(m => !m.IsKind(SyntaxKind.ReadOnlyKeyword)));
                newProp = propertyDeclaration
                    .WithAccessors(propertyDeclaration.Accessors.Add(accessor))
                    .WithPropertyStatement(propertyDeclaration.PropertyStatement.WithModifiers(modifierList));
            }
            else
            {
                accessor = SyntaxFactory.AccessorBlock(SyntaxKind.GetAccessorBlock,
                    SyntaxFactory.AccessorStatement(SyntaxKind.GetAccessorStatement, SyntaxFactory.Token(SyntaxKind.GetKeyword)),
                    SyntaxFactory.EndBlockStatement(SyntaxKind.EndGetStatement, SyntaxFactory.Token(SyntaxKind.GetKeyword)));

                var setter = propertyDeclaration.Accessors.FirstOrDefault(m => m.IsKind(SyntaxKind.SetAccessorBlock));
                var accessorDeclList = new SyntaxList<AccessorBlockSyntax>();
                if (setter != null)
                {
                    var setField = setter.ScanSetter(model);
                    if (setField == null)
                    {
                        // No field can be found
                        accessor = accessor.WithStatements(SyntaxFactory.List<StatementSyntax>(new[] { GetNotImplementedThrowStatement() }));
                    }
                    else
                    {
                        // Add a 'Return field'.
                        accessor = accessor.WithStatements(SyntaxFactory.List<StatementSyntax>(
                            new[] { SyntaxFactory.ReturnStatement(SyntaxFactory.IdentifierName(setField.Name)) }));
                    }
                    accessorDeclList = accessorDeclList.Add(propertyDeclaration.Accessors.First(m => m.IsKind(SyntaxKind.SetAccessorBlock)));
                }
                accessorDeclList = accessorDeclList.Insert(0, accessor);
                var accessorList = SyntaxFactory.List(accessorDeclList);
                var modifierList = SyntaxFactory.TokenList(propertyDeclaration.PropertyStatement.Modifiers.Where(m => !m.IsKind(SyntaxKind.WriteOnlyKeyword)));
                newProp = propertyDeclaration
                    .WithAccessors(accessorList)
                    .WithPropertyStatement(propertyDeclaration.PropertyStatement.WithModifiers(modifierList));
            }
            var newRoot = root.ReplaceNode(propertyDeclaration, newProp).WithAdditionalAnnotations(Formatter.Annotation);
            return document.WithSyntaxRoot(newRoot);
        }
Esempio n. 17
0
 public SyntaxList <TItem> Add(SyntaxList <TItem> list, TItem item)
 {
     return(list.Add(item));
 }
 private static SwitchSectionSyntax CreateSwitchSection(ISymbol symbol, TypeSyntax enumType, SyntaxList <StatementSyntax> statements)
 {
     return(SwitchSection(
                SingletonList <SwitchLabelSyntax>(
                    CaseSwitchLabel(
                        SimpleMemberAccessExpression(
                            enumType,
                            IdentifierName(symbol.Name)))),
                statements));
 }
		public static MethodBlockBaseSyntax WithStatements(this MethodBlockBaseSyntax syntax, SyntaxList<StatementSyntax> statements)
        {
            if (syntax == null)
                throw new System.ArgumentNullException(nameof(syntax));
            if (syntax is MethodBlockSyntax)
                return ((MethodBlockSyntax)syntax).WithStatements(statements);
            if (syntax is ConstructorBlockSyntax)
                return ((ConstructorBlockSyntax)syntax).WithStatements(statements);
            if (syntax is AccessorBlockSyntax)
                return ((AccessorBlockSyntax)syntax).WithStatements(statements);
            if (syntax is OperatorBlockSyntax)
                return ((OperatorBlockSyntax)syntax).WithStatements(statements);
            throw new System.NotSupportedException(syntax.GetType() + " is not supported!");
        }
Esempio n. 20
0
 public SyntaxList <TItem> Replace(SyntaxList <TItem> list, TItem oldItem, TItem newItem)
 {
     return(list.Replace(oldItem, newItem));
 }
        public static void ComputeRefactoring(
            RefactoringContext context,
            SwitchStatementSyntax switchStatement,
            SemanticModel semanticModel)
        {
            ExpressionSyntax expression = switchStatement.Expression;

            if (expression?.IsMissing != false)
            {
                return;
            }

            SyntaxList <SwitchSectionSyntax> sections = switchStatement.Sections;

            ISymbol symbol = semanticModel.GetSymbol(expression, context.CancellationToken);

            if (symbol?.IsErrorType() != false)
            {
                return;
            }

            ITypeSymbol typeSymbol = semanticModel.GetTypeSymbol(expression, context.CancellationToken);

            if (typeSymbol?.TypeKind != TypeKind.Enum)
            {
                return;
            }

            if (!typeSymbol.ContainsMember <IFieldSymbol>())
            {
                return;
            }

            if (sections.Any() && !ContainsOnlyDefaultSection(sections))
            {
                if (context.Span.IsEmptyAndContainedInSpan(switchStatement.SwitchKeyword))
                {
                    ImmutableArray <ISymbol> members = typeSymbol.GetMembers();

                    if (members.Length == 0)
                    {
                        return;
                    }

                    var fieldsToValue = new Dictionary <object, IFieldSymbol>(members.Length);

                    foreach (ISymbol member in members)
                    {
                        if (member.Kind == SymbolKind.Field)
                        {
                            var fieldSymbol = (IFieldSymbol)member;

                            if (fieldSymbol.HasConstantValue)
                            {
                                object constantValue = fieldSymbol.ConstantValue;

                                if (!fieldsToValue.ContainsKey(constantValue))
                                {
                                    fieldsToValue.Add(constantValue, fieldSymbol);
                                }
                            }
                        }
                    }

                    foreach (SwitchSectionSyntax section in sections)
                    {
                        foreach (SwitchLabelSyntax label in section.Labels)
                        {
                            if (label is CaseSwitchLabelSyntax caseLabel)
                            {
                                ExpressionSyntax value = caseLabel.Value.WalkDownParentheses();

                                if (value?.IsMissing == false)
                                {
                                    Optional <object> optional = semanticModel.GetConstantValue(value, context.CancellationToken);

                                    if (optional.HasValue &&
                                        fieldsToValue.Remove(optional.Value) &&
                                        fieldsToValue.Count == 0)
                                    {
                                        return;
                                    }
                                }
                            }
                        }
                    }

                    Document document = context.Document;

                    context.RegisterRefactoring(
                        Title,
                        ct => AddCasesAsync(document, switchStatement, fieldsToValue.Select(f => f.Value), ct),
                        RefactoringDescriptors.AddMissingCasesToSwitchStatement);
                }
            }
            else if (context.IsRefactoringEnabled(RefactoringDescriptors.AddMissingCasesToSwitchStatement))
            {
                Document document = context.Document;

                context.RegisterRefactoring(
                    Title,
                    ct => AddCasesAsync(document, switchStatement, semanticModel, ct),
                    RefactoringDescriptors.AddMissingCasesToSwitchStatement);
            }
        }
Esempio n. 22
0
 public SyntaxList <TItem> RemoveAt(SyntaxList <TItem> list, int index)
 {
     return(list.RemoveAt(index));
 }
Esempio n. 23
0
 public SyntaxList <TItem> Remove(SyntaxList <TItem> list, TItem item)
 {
     return(list.Remove(item));
 }
Esempio n. 24
0
 public SyntaxList <TItem> Insert(SyntaxList <TItem> list, int index, TItem item)
 {
     return(list.Insert(index, item));
 }
Esempio n. 25
0
        private static void ReplaceMethodTextCSharp(SyntaxNode node, IDocument document, string textToSearch)
        {
            string methodText = node.GetText().ToString();
            bool isMethod = node is MethodDeclarationSyntax;
            string methodOrPropertyDefinition = isMethod ? "Method: " : " Invalid - not Method ";

            object methodName = ((MethodDeclarationSyntax)node).Identifier.Value;
            var body = (node as MethodDeclarationSyntax).Body;
            var statements = body.Statements;
            var originalTrailingTrivia = body.GetTrailingTrivia();
            SyntaxList<StatementSyntax> newStatements = new SyntaxList<StatementSyntax>();
            StatementSyntax statementNewTestmap = Syntax.ParseStatement("var testmap = new Dictionary<string, object>();");
            newStatements = newStatements.Add(statementNewTestmap);
            SyntaxList<StatementSyntax> flattenedStmts = Flatten(statements);
            foreach (var statement in flattenedStmts)
            {
                //string stmtString = RemoveComments(statement).ToString();

                string stmtString = statement.ToString();
                stmtString = RemoveComments(stmtString);

                if (Regex.IsMatch(stmtString, "\\b" + textToSearch + "\\b"))
                {
                    StatementSyntax newStatement = null;
                    //string[] parameters = stmtString.Split(new char[] { '(', ',', ')' });
                    //if(parameters.Length == 4)
                    //{
                    //    if(parameters.Last() == "1")
                    //    {
                    //        Console.WriteLine(stmtString);
                    //    }
                    //}
                    //stmtString = TestmapAdd + "(" + parameters.ElementAt(1) + ", " + parameters.ElementAt(2) + ");" ;
                    var invocation = Syntax.ParseExpression(RemoveComments(stmtString)) as InvocationExpressionSyntax;
                    var args = invocation.ArgumentList.Arguments;
                    //var args = GetParams(stmtString);
                    if (args.Count() > 3)
                    {
                        throw new Exception();
                    }
                    if (args.Count() == 3)
                    {
#if DEBUG
                        if (args.Last().ToString() != "0")
                            Console.WriteLine(stmtString);
#endif
                        // Console.WriteLine(stmtString);
                        //stmtString = TestmapAdd + "(" + args.ElementAt(0) + ", " + args.ElementAt(1) + ");";
                        try
                        {
                            var registerArgs = new List<ArgumentSyntax>
                            {
                                args.ElementAt(0),
                                    args.ElementAt(1)
                            };
                            var argSeparators = Enumerable.Repeat(Syntax.Token(SyntaxKind.CommaToken), registerArgs.Count - 1).ToList();
                            ArgumentListSyntax newArgList = Syntax.ArgumentList(
                                arguments: Syntax.SeparatedList(
                                    registerArgs,
                                    argSeparators));

                            InvocationExpressionSyntax newInvokationNode = Syntax.InvocationExpression(
                                Syntax.MemberAccessExpression(
                                    kind: SyntaxKind.MemberAccessExpression,
                                    expression: Syntax.ParseName("testmap"),
                                    name: Syntax.IdentifierName("Add"),
                                    operatorToken: Syntax.Token(SyntaxKind.DotToken)),
                                newArgList);
                            stmtString = newInvokationNode.ToString() + ";";
                            newStatement = Syntax.ParseStatement(stmtString);
                        }
                        catch(Exception e)
                        {
                            Console.WriteLine(e);
                        }


                    }
                    if(args.Count() == 2)
                    {
                        stmtString = stmtString.Replace(textToSearch, TestmapAdd);
                    }
                    Console.WriteLine(stmtString);
                    newStatement = Syntax.ParseStatement(stmtString);
                    try
                    {
                        newStatements = newStatements.Add(newStatement);

                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                    //stmtString.Replace(textToSearch, "thisTest.GenericVerify");
                }
                else
                    newStatements = newStatements.Add(statement);
            }
            newStatements = newStatements.Add(Syntax.ParseStatement("thisTest.GenericVerify(testmap);"));
            FileRoot = FileRoot.ReplaceNode(body,
                Syntax.Block(newStatements).WithTrailingTrivia(originalTrailingTrivia)).NormalizeWhitespace();

        }
Esempio n. 26
0
        internal override IEnumerable <KeyValuePair <string, string> > StringifyAttributes(SyntaxList <RazorSyntaxNode> attributes)
        {
            var stringifiedAttributes = new List <KeyValuePair <string, string> >();

            for (var i = 0; i < attributes.Count; i++)
            {
                var attribute = attributes[i];
                if (attribute is MarkupTagHelperAttributeSyntax tagHelperAttribute)
                {
                    var name  = tagHelperAttribute.Name.GetContent();
                    var value = tagHelperAttribute.Value?.GetContent() ?? string.Empty;
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, value));
                }
                else if (attribute is MarkupMinimizedTagHelperAttributeSyntax minimizedTagHelperAttribute)
                {
                    var name = minimizedTagHelperAttribute.Name.GetContent();
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, string.Empty));
                }
                else if (attribute is MarkupAttributeBlockSyntax markupAttribute)
                {
                    var name  = markupAttribute.Name.GetContent();
                    var value = markupAttribute.Value?.GetContent() ?? string.Empty;
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, value));
                }
                else if (attribute is MarkupMinimizedAttributeBlockSyntax minimizedMarkupAttribute)
                {
                    var name = minimizedMarkupAttribute.Name.GetContent();
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, string.Empty));
                }
                else if (attribute is MarkupTagHelperDirectiveAttributeSyntax directiveAttribute)
                {
                    var name  = directiveAttribute.FullName;
                    var value = directiveAttribute.Value?.GetContent() ?? string.Empty;
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, value));
                }
                else if (attribute is MarkupMinimizedTagHelperDirectiveAttributeSyntax minimizedDirectiveAttribute)
                {
                    var name = minimizedDirectiveAttribute.FullName;
                    stringifiedAttributes.Add(new KeyValuePair <string, string>(name, string.Empty));
                }
            }

            return(stringifiedAttributes);
        }
Esempio n. 27
0
 private static SyntaxList<StatementSyntax> Flatten(StatementSyntax stmt,  SyntaxList<StatementSyntax> result)
 {
     if (!(stmt is BlockSyntax))
         result = result.Add(stmt);
     else
     {
         foreach(var item in (stmt as BlockSyntax).Statements)
         {
             result = Flatten(item, result);
         }
     }
     return result;
 }
Esempio n. 28
0
        private static Task <Document> IfToReturnWithCoalesceExpressionAsync(
            Document document,
            IfToReturnWithCoalesceExpressionAnalysis analysis,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            IfStatementSyntax ifStatement = analysis.IfStatement;
            int position = ifStatement.SpanStart;

            ITypeSymbol targetType = GetTargetType();

            BinaryExpressionSyntax coalesceExpression = CreateCoalesceExpression(
                analysis.Left.WithoutTrivia(),
                analysis.Right.WithoutTrivia(),
                targetType,
                position,
                analysis.SemanticModel);

            StatementSyntax statement;

            if (analysis.IsYield)
            {
                statement = YieldReturnStatement(coalesceExpression);
            }
            else
            {
                statement = ReturnStatement(coalesceExpression);
            }

            if (ifStatement.IsSimpleIf())
            {
                StatementListInfo statementsInfo = SyntaxInfo.StatementListInfo(ifStatement);

                SyntaxList <StatementSyntax> statements = statementsInfo.Statements;

                int index = statements.IndexOf(ifStatement);

                StatementSyntax newNode = statement
                                          .WithLeadingTrivia(ifStatement.GetLeadingTrivia())
                                          .WithTrailingTrivia(statements[index + 1].GetTrailingTrivia())
                                          .WithFormatterAnnotation();

                SyntaxList <StatementSyntax> newStatements = statements
                                                             .RemoveAt(index)
                                                             .ReplaceAt(index, newNode);

                return(document.ReplaceStatementsAsync(statementsInfo, newStatements, cancellationToken));
            }
            else
            {
                StatementSyntax newNode = statement
                                          .WithTriviaFrom(ifStatement)
                                          .WithFormatterAnnotation();

                return(document.ReplaceNodeAsync(ifStatement, newNode, cancellationToken));
            }

            ITypeSymbol GetTargetType()
            {
                IMethodSymbol methodSymbol = analysis.SemanticModel.GetEnclosingSymbol <IMethodSymbol>(position, cancellationToken);

                Debug.Assert(methodSymbol != null, "");

                if (methodSymbol?.IsErrorType() == false)
                {
                    ITypeSymbol returnType = methodSymbol.ReturnType;

                    if (!returnType.IsErrorType())
                    {
                        if (methodSymbol.IsAsync)
                        {
                            if (returnType.OriginalDefinition.EqualsOrInheritsFrom(MetadataNames.System_Threading_Tasks_Task_T))
                            {
                                return(((INamedTypeSymbol)returnType).TypeArguments[0]);
                            }
                        }
                        else if (!analysis.IsYield)
                        {
                            return(returnType);
                        }
                        else if (returnType.SpecialType == SpecialType.System_Collections_IEnumerable)
                        {
                            return(analysis.SemanticModel.Compilation.ObjectType);
                        }
                        else if (returnType.OriginalDefinition.IsIEnumerableOfT())
                        {
                            return(((INamedTypeSymbol)returnType).TypeArguments[0]);
                        }
                    }
                }

                return(null);
            }
        }
Esempio n. 29
0
        private PropertyDeclarationSyntax CreateChildPropertyDeclaration(string propertyIdentifierName, string targetFieldName, SyntaxList<MemberDeclarationSyntax> syntaxList, Type returnType)
        {
            //OpenPorts
            //nmaprunHostsPorts
            string name = "";
            foreach (PropertyDeclarationSyntax prop in syntaxList.Where(m => m is PropertyDeclarationSyntax))
            {
                if (prop.Type.ToString().Contains(targetFieldName))
                {
                    name = prop.Identifier.ToString();
                    break;
                }
            }
            MemberAccessExpressionSyntax memAcc = Syntax.MemberAccessExpression(SyntaxKind.MemberAccessExpression, Syntax.ThisExpression(), Syntax.IdentifierName(name));
            ReturnStatementSyntax rs = Syntax.ReturnStatement(memAcc);
            SyntaxList<ReturnStatementSyntax> list = Syntax.List(rs);
            BlockSyntax block = Syntax.Block(list);
            AccessorDeclarationSyntax acc = Syntax.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration, block);

            PropertyDeclarationSyntax pd = Syntax.PropertyDeclaration(null,
                Syntax.TokenList(new SyntaxToken[] { Syntax.Token(SyntaxKind.PublicKeyword), Syntax.Token(SyntaxKind.OverrideKeyword) }),
                Syntax.ParseTypeName(returnType.FullName + "[]"),
                null,
                Syntax.Identifier(propertyIdentifierName),
                Syntax.AccessorList(Syntax.List(acc)));

            return pd;
        }
        private static bool IsFixableSimpleIfInsideWhileOrDo(
            IfStatementSyntax ifStatement,
            SemanticModel semanticModel,
            CancellationToken cancellationToken)
        {
            SyntaxNode parent = ifStatement.Parent;

            if (parent.Kind() != SyntaxKind.Block)
            {
                return(false);
            }

            if (ifStatement.SingleNonBlockStatementOrDefault()?.Kind() != SyntaxKind.BreakStatement)
            {
                return(false);
            }

            var block = (BlockSyntax)parent;

            SyntaxList <StatementSyntax> statements = block.Statements;

            int count = statements.Count;

            if (count == 1)
            {
                return(false);
            }

            int index = statements.IndexOf(ifStatement);

            if (index != 0 &&
                index != count - 1)
            {
                return(false);
            }

            parent = block.Parent;

            SyntaxKind kind = parent.Kind();

            if (kind == SyntaxKind.WhileStatement)
            {
                var whileStatement = (WhileStatementSyntax)parent;

                if (whileStatement.SpanContainsDirectives())
                {
                    return(false);
                }

                if (whileStatement.Condition?.WalkDownParentheses().Kind() != SyntaxKind.TrueLiteralExpression)
                {
                    return(false);
                }

                if (index == count - 1 &&
                    ContainsLocalDefinedInLoopBody(
                        ifStatement.Condition,
                        TextSpan.FromBounds(block.SpanStart, ifStatement.SpanStart),
                        semanticModel,
                        cancellationToken))
                {
                    return(false);
                }

                return(true);
            }
            else if (kind == SyntaxKind.DoStatement)
            {
                var doStatement = (DoStatementSyntax)parent;

                if (doStatement.SpanContainsDirectives())
                {
                    return(false);
                }

                if (doStatement.Condition?.WalkDownParentheses().Kind() != SyntaxKind.TrueLiteralExpression)
                {
                    return(false);
                }

                if (index == count - 1 &&
                    ContainsLocalDefinedInLoopBody(
                        ifStatement.Condition,
                        TextSpan.FromBounds(block.SpanStart, ifStatement.SpanStart),
                        semanticModel,
                        cancellationToken))
                {
                    return(false);
                }

                return(true);
            }

            return(false);
        }
 internal TypeDeclarationSyntax(SyntaxKind syntaxKind)
     : base(syntaxKind)
 {
     ConstraintClauses = new SyntaxList<TypeParameterConstraintClauseSyntax>(this);
     Members = new SyntaxList<MemberDeclarationSyntax>(this);
 }
Esempio n. 32
0
        private static SyntaxNode Refactor(MemberDeclarationSyntax member)
        {
            switch (member.Parent.Kind())
            {
            case SyntaxKind.CompilationUnit:
            {
                var parent = (CompilationUnitSyntax)member.Parent;
                SyntaxList <MemberDeclarationSyntax> members = parent.Members;
                int index = members.IndexOf(member);

                return(parent.WithMembers(members.Insert(index + 1, member.WithNavigationAnnotation())));
            }

            case SyntaxKind.NamespaceDeclaration:
            {
                var parent = (NamespaceDeclarationSyntax)member.Parent;
                SyntaxList <MemberDeclarationSyntax> members = parent.Members;
                int index = members.IndexOf(member);

                if (index == 0 &&
                    parent.OpenBraceToken.GetFullSpanEndLine() == member.GetFullSpanStartLine())
                {
                    member = member.WithLeadingTrivia(member.GetLeadingTrivia().Insert(0, NewLine()));
                }

                return(parent.WithMembers(members.Insert(index + 1, member.WithNavigationAnnotation())));
            }

            case SyntaxKind.ClassDeclaration:
            {
                var parent = (ClassDeclarationSyntax)member.Parent;
                SyntaxList <MemberDeclarationSyntax> members = parent.Members;
                int index = members.IndexOf(member);

                if (index == 0 &&
                    parent.OpenBraceToken.GetFullSpanEndLine() == member.GetFullSpanStartLine())
                {
                    member = member.WithLeadingTrivia(member.GetLeadingTrivia().Insert(0, NewLine()));
                }

                return(parent.WithMembers(members.Insert(index + 1, member.WithNavigationAnnotation())));
            }

            case SyntaxKind.StructDeclaration:
            {
                var parent = (StructDeclarationSyntax)member.Parent;
                SyntaxList <MemberDeclarationSyntax> members = parent.Members;
                int index = members.IndexOf(member);

                if (index == 0 &&
                    parent.OpenBraceToken.GetFullSpanEndLine() == member.GetFullSpanStartLine())
                {
                    member = member.WithLeadingTrivia(member.GetLeadingTrivia().Insert(0, NewLine()));
                }

                return(parent.WithMembers(members.Insert(index + 1, member.WithNavigationAnnotation())));
            }

            case SyntaxKind.InterfaceDeclaration:
            {
                var parent = (InterfaceDeclarationSyntax)member.Parent;
                SyntaxList <MemberDeclarationSyntax> members = parent.Members;
                int index = members.IndexOf(member);

                if (index == 0 &&
                    parent.OpenBraceToken.GetFullSpanEndLine() == member.GetFullSpanStartLine())
                {
                    member = member.WithLeadingTrivia(member.GetLeadingTrivia().Insert(0, NewLine()));
                }

                return(parent.WithMembers(members.Insert(index + 1, member.WithNavigationAnnotation())));
            }
            }

            return(null);
        }
Esempio n. 33
0
 public static IEnumerable <AttributeSyntax> GetAttributes(this SyntaxList <AttributeListSyntax> attributeLists,
                                                           ImmutableArray <KnownType> attributeKnownTypes, SemanticModel semanticModel) =>
 attributeLists.SelectMany(list => list.Attributes)
 .Where(a => semanticModel.GetTypeInfo(a).Type.IsAny(attributeKnownTypes));
Esempio n. 34
0
        public static void AnalyzeWhileStatement(SyntaxNodeAnalysisContext context)
        {
            var whileStatement = (WhileStatementSyntax)context.Node;

            ExpressionSyntax condition = whileStatement.Condition;

            if (condition.IsMissing)
            {
                return;
            }

            if (!condition.IsSingleLine())
            {
                return;
            }

            StatementSyntax statement = whileStatement.Statement;

            if (!statement.IsKind(SyntaxKind.Block))
            {
                return;
            }

            var block = (BlockSyntax)statement;

            SyntaxList <StatementSyntax> innerStatements = block.Statements;

            if (innerStatements.Count <= 1)
            {
                return;
            }

            ExpressionSyntax incrementedExpression = GetIncrementedExpression(innerStatements.Last());

            if (!incrementedExpression.IsKind(SyntaxKind.IdentifierName))
            {
                return;
            }

            SyntaxList <StatementSyntax> outerStatements = SyntaxInfo.StatementListInfo(whileStatement).Statements;

            int index = outerStatements.IndexOf(whileStatement);

            if (index <= 0)
            {
                return;
            }

            SingleLocalDeclarationStatementInfo localInfo = GetLocalInfo(outerStatements[index - 1]);

            if (!localInfo.Success)
            {
                return;
            }

            if (index > 1)
            {
                SingleLocalDeclarationStatementInfo localInfo2 = GetLocalInfo(outerStatements[index - 2]);

                if (localInfo2.Success)
                {
                    ExpressionSyntax incrementedExpression2 = GetIncrementedExpression(innerStatements[innerStatements.Count - 2]);

                    if (incrementedExpression2.IsKind(SyntaxKind.IdentifierName))
                    {
                        var identifierName2 = (IdentifierNameSyntax)incrementedExpression2;

                        if (string.Equals(localInfo2.Identifier.ValueText, identifierName2.Identifier.ValueText, StringComparison.Ordinal))
                        {
                            return;
                        }
                    }
                }
            }

            var identifierName = (IdentifierNameSyntax)incrementedExpression;

            if (!string.Equals(localInfo.Identifier.ValueText, identifierName.Identifier.ValueText, StringComparison.Ordinal))
            {
                return;
            }

            if (ContainsContinueStatement())
            {
                return;
            }

            SemanticModel     semanticModel     = context.SemanticModel;
            CancellationToken cancellationToken = context.CancellationToken;

            ISymbol symbol = semanticModel.GetDeclaredSymbol(localInfo.Declarator, cancellationToken);

            if (symbol?.Kind != SymbolKind.Local)
            {
                return;
            }

            if (IsLocalVariableReferencedAfterWhileStatement())
            {
                return;
            }

            DiagnosticHelpers.ReportDiagnostic(context, DiagnosticDescriptors.UseForStatementInsteadOfWhileStatement, whileStatement.WhileKeyword);

            bool ContainsContinueStatement()
            {
                ContainsContinueStatementWalker walker = ContainsContinueStatementWalker.GetInstance();

                bool containsContinueStatement = false;

                foreach (StatementSyntax innerStatement in innerStatements)
                {
                    walker.Visit(innerStatement);

                    if (walker.ContainsContinueStatement)
                    {
                        containsContinueStatement = true;
                        break;
                    }
                }

                ContainsContinueStatementWalker.Free(walker);

                return(containsContinueStatement);
            }

            bool IsLocalVariableReferencedAfterWhileStatement()
            {
                ContainsLocalOrParameterReferenceWalker walker = ContainsLocalOrParameterReferenceWalker.GetInstance(symbol, semanticModel, cancellationToken);

                walker.VisitList(outerStatements, index + 1);

                return(ContainsLocalOrParameterReferenceWalker.GetResultAndFree(walker));
            }
        }
 internal BaseArgumentListSyntax(SyntaxKind syntaxKind)
     : base(syntaxKind)
 {
     Arguments = new SyntaxList<ArgumentSyntax>(this);
 }
 public static LocalFunctionStatementSyntax LocalFunctionStatement(SyntaxTokenList modifiers, TypeSyntax returnType, SyntaxToken identifier, TypeParameterListSyntax typeParameterList, ParameterListSyntax parameterList, SyntaxList <TypeParameterConstraintClauseSyntax> constraintClauses, BlockSyntax body, ArrowExpressionClauseSyntax expressionBody)
 {
     return(LocalFunctionStatement(attributeLists: default, modifiers, returnType, identifier, typeParameterList, parameterList, constraintClauses, body, expressionBody, semicolonToken: default));
Esempio n. 37
0
 public static SyntaxNode WithMembers(this SyntaxNode node, SyntaxList<MemberDeclarationSyntax> members)
 {
     MethodInfo method = node.GetType().GetMethod("WithMembers");
     return (SyntaxNode)method.Invoke(node, new object[] { members });
 }
Esempio n. 38
0
        private static void ReportIssue(SyntaxList <StatementSyntax> statementsToReport, SyntaxList <StatementSyntax> locationProvider,
                                        SyntaxNodeAnalysisContext context, string constructType)
        {
            var firstStatement = statementsToReport.FirstOrDefault();

            if (firstStatement == null)
            {
                return;
            }

            var lastStatement = statementsToReport.Last();

            var location = Location.Create(context.Node.SyntaxTree,
                                           TextSpan.FromBounds(firstStatement.SpanStart, lastStatement.Span.End));

            context.ReportDiagnostic(Diagnostic.Create(rule,
                                                       location, locationProvider.First().GetLineNumberToReport(), constructType));
        }
Esempio n. 39
0
        private PropertyDeclarationSyntax CreateStringProperty(string propertyIdentifierName, string targetFieldName, string startType, SyntaxList<MemberDeclarationSyntax> syntaxList, DynamicPlugin dp)
        {
            List<string> path = dp.FindStringPath(targetFieldName, startType);
            string name = "";
            if (path.Count == 1)
            {
                name = path.First();
            }
            else if (path.Count > 1)
            {
                foreach (string obj in path.Skip(1).Take(path.Count - 1))
                {
                    string val = "";
                    foreach (ClassDeclarationSyntax classes in syntaxList.Where(m => m is ClassDeclarationSyntax))
                    {
                        foreach (PropertyDeclarationSyntax prop in classes.Members.Where(m => m is PropertyDeclarationSyntax))
                        {
                            if (prop.Type.ToString().Contains(obj + "[]"))
                            {
                                val = prop.Identifier.ToString();
                                break;
                            }
                        }
                        if (val != "")
                            break;
                    }
                    if (val != "")
                        name += val + "[0].";
                }
                name += path.Last();
            }
            ExpressionSyntax expr;
            if (name != "")
                expr = Syntax.MemberAccessExpression(SyntaxKind.MemberAccessExpression, Syntax.ThisExpression(), Syntax.IdentifierName(name));
            else
                expr = Syntax.BaseExpression(Syntax.Token(SyntaxKind.NullKeyword));
            ReturnStatementSyntax rs = Syntax.ReturnStatement(expr);
            SyntaxList<ReturnStatementSyntax> list = Syntax.List(rs);
            BlockSyntax block = Syntax.Block(list);
            AccessorDeclarationSyntax acc = Syntax.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration, block);
            PropertyDeclarationSyntax pd2 = Syntax.PropertyDeclaration(null,
                Syntax.TokenList(new SyntaxToken[] { Syntax.Token(SyntaxKind.PublicKeyword), Syntax.Token(SyntaxKind.OverrideKeyword) }),
                Syntax.ParseTypeName("string"),
                null,
                Syntax.Identifier(propertyIdentifierName),
                Syntax.AccessorList(Syntax.List(acc)));

            return pd2;
        }
Esempio n. 40
0
        private static void ProcessUsings(List <Dictionary <string, string> > aliasMaps, SyntaxList <UsingDirectiveSyntax> usings)
        {
            Dictionary <string, string> aliasMap = null;

            foreach (var usingDecl in usings)
            {
                if (usingDecl.Alias != null)
                {
                    var mappedName = GetTypeName(usingDecl.Name);
                    if (mappedName != null)
                    {
                        aliasMap ??= AllocateAliasMap();

                        // If we have:  using X = Goo, then we store a mapping from X -> Goo
                        // here.  That way if we see a class that inherits from X we also state
                        // that it inherits from Goo as well.
                        aliasMap[usingDecl.Alias.Name.Identifier.ValueText] = mappedName;
                    }
                }
            }

            if (aliasMap != null)
            {
                aliasMaps.Add(aliasMap);
            }
        }
 static bool IsLastStatement(SyntaxList<StatementSyntax> statements, MultiLineIfBlockSyntax ifBlock)
 {
     return statements.IndexOf(ifBlock) + 1 >= statements.Count;
 }
Esempio n. 42
0
 private static void Analyze(
     SyntaxNodeAnalysisContext context,
     SyntaxList <StatementSyntax> statements,
     in SingleLocalDeclarationStatementInfo localDeclarationInfo,
Esempio n. 43
0
 private static SyntaxList<StatementSyntax> Flatten(SyntaxList<StatementSyntax> statements)
 {
     SyntaxList<StatementSyntax> result = new SyntaxList<StatementSyntax>();
     foreach(var stmt in statements)
     {
         if (!(stmt is BlockSyntax))
             result = result.Add(stmt);
         else
             result = Flatten(stmt,  result);
     }
     return result;
 }
Esempio n. 44
0
        private SyntaxList <StatementSyntax> CreateNewStatements(List <string> statinfos, SyntaxList <StatementSyntax> statements)
        {
            var outStatements = new SyntaxList <StatementSyntax>()
            {
            };

            foreach (var statinfo in statinfos)
            {
                if (IsOriginalStatement(statinfo))
                {
                    int origId    = int.Parse(statinfo);
                    var newStment = statements[origId];
                    outStatements = outStatements.Add(newStment);
                }
                else
                {
                    var newStmt = SyntaxFactory.ParseStatement(statinfo);
                    outStatements = outStatements.Add(newStmt);
                }
            }
            return(outStatements);
        }
 internal BaseParameterListSyntax(SyntaxKind syntaxKind)
     : base(syntaxKind)
 {
     Parameters = new SyntaxList<ParameterSyntax>(this);
 }
Esempio n. 46
0
 internal Enumerator(SyntaxList <TNode> list)
 {
     _list  = list;
     _index = -1;
 }
Esempio n. 47
0
 public static bool AreEquivalent(SyntaxList<SyntaxNode> nodeList1, SyntaxList<SyntaxNode> nodeList2)
 {
     return Common.EquivalenceChecker.AreEquivalent(nodeList1, nodeList2,
         (n1, n2) => SyntaxFactory.AreEquivalent(n1, n2));
 }
Esempio n. 48
0
        private static void AnalyzeLocalDeclarationStatement(SyntaxNodeAnalysisContext context)
        {
            if (context.Node.ContainsDiagnostics)
            {
                return;
            }

            var localDeclaration = (LocalDeclarationStatementSyntax)context.Node;

            if (localDeclaration.IsConst)
            {
                return;
            }

            StatementListInfo statementsInfo = SyntaxInfo.StatementListInfo(localDeclaration);

            if (!statementsInfo.Success)
            {
                return;
            }

            SyntaxList <StatementSyntax> statements = statementsInfo.Statements;

            if (statements.Count <= 1)
            {
                return;
            }

            int index = statements.IndexOf(localDeclaration);

            if (index == statements.Count - 1)
            {
                return;
            }

            LocalDeclarationStatementInfo localInfo = SyntaxInfo.LocalDeclarationStatementInfo(localDeclaration);

            if (!localInfo.Success)
            {
                return;
            }

            ITypeSymbol typeSymbol = context.SemanticModel.GetTypeSymbol(localInfo.Type, context.CancellationToken);

            if (typeSymbol?.SupportsConstantValue() != true)
            {
                return;
            }

            if (localInfo.Type.IsVar && !typeSymbol.SupportsExplicitDeclaration())
            {
                return;
            }

            foreach (VariableDeclaratorSyntax declarator in localInfo.Variables)
            {
                if (!HasConstantValue(declarator.Initializer?.Value, typeSymbol, context.SemanticModel, context.CancellationToken))
                {
                    return;
                }
            }

            if (!CanBeMarkedAsConst(localInfo.Variables, statements, index + 1))
            {
                return;
            }

            DiagnosticHelpers.ReportDiagnostic(context, DiagnosticRules.MarkLocalVariableAsConst, localInfo.Type);
        }
 internal BasePropertyDeclarationSyntax(SyntaxKind syntaxKind)
     : base(syntaxKind)
 {
     AttributeLists = new SyntaxList<AttributeListSyntax>(this);
 }
Esempio n. 50
0
        public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context)
        {
            var document = context.Document;

            if (document.Project.Solution.Workspace.Kind == WorkspaceKind.MiscellaneousFiles)
            {
                return;
            }
            var span = context.Span;

            if (!span.IsEmpty)
            {
                return;
            }
            var cancellationToken = context.CancellationToken;

            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }
            var model = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            if (model.IsFromGeneratedCode(cancellationToken))
            {
                return;
            }
            var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);

            var property = root.FindNode(span) as PropertyDeclarationSyntax;

            if (property == null || !property.Identifier.Span.Contains(span))
            {
                return;
            }

            if (property.AccessorList?.Accessors.Any(b => !IsEmptyOrNotImplemented(b.Body)) != false) //ignore properties with >=1 accessor body
            {
                return;
            }

            TypeDeclarationSyntax enclosingTypeDeclaration = property.Ancestors().OfType <TypeDeclarationSyntax>().FirstOrDefault();

            if (enclosingTypeDeclaration == null || enclosingTypeDeclaration is InterfaceDeclarationSyntax)
            {
                return;
            }
            context.RegisterRefactoring(
                CodeActionFactory.Create(
                    property.Identifier.Span,
                    DiagnosticSeverity.Info,
                    GettextCatalog.GetString("To property with backing field"),
                    t2 =>
            {
                string name = GetNameProposal(property.Identifier.ValueText, model, root);

                //create our backing store
                var backingStore = SyntaxFactory.FieldDeclaration(
                    SyntaxFactory.VariableDeclaration(
                        property.Type,
                        SyntaxFactory.SingletonSeparatedList <VariableDeclaratorSyntax>(SyntaxFactory.VariableDeclarator(name)))
                    ).WithModifiers(!property.Modifiers.Any(m => m.IsKind(SyntaxKind.StaticKeyword)) ?
                                    SyntaxFactory.TokenList() :
                                    SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.StaticKeyword)))
                                   .WithAdditionalAnnotations(Formatter.Annotation);

                //create our new property
                var fieldExpression = name == "value" ?
                                      (ExpressionSyntax)SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.ThisExpression(), SyntaxFactory.IdentifierName("value")) :
                                      SyntaxFactory.IdentifierName(name);

                var newPropAnno = new SyntaxAnnotation();
                var syntaxList  = new SyntaxList <AccessorDeclarationSyntax>();
                var hasSetter   = property.AccessorList.Accessors.Any(acc => acc.IsKind(SyntaxKind.SetAccessorDeclaration));
                var hasGetter   = property.AccessorList.Accessors.Any(acc => acc.IsKind(SyntaxKind.GetAccessorDeclaration));

                if (hasGetter)
                {
                    var getBody = SyntaxFactory.Block(SyntaxFactory.ReturnStatement(fieldExpression));
                    var getter  = SyntaxFactory.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration, getBody);
                    getter      = getter.WithModifiers(property.AccessorList.Accessors.First(acc => acc.IsKind(SyntaxKind.GetAccessorDeclaration)).Modifiers);
                    syntaxList  = syntaxList.Add(getter);
                    if (!hasSetter)
                    {
                        backingStore = backingStore.WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword)));
                    }
                }

                if (hasSetter)
                {
                    var setBody = SyntaxFactory.Block(SyntaxFactory.ExpressionStatement(
                                                          SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, fieldExpression,
                                                                                             SyntaxFactory.IdentifierName("value"))));
                    var setter = SyntaxFactory.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration, setBody);
                    setter     = setter.WithModifiers(property.AccessorList.Accessors.First(acc => acc.IsKind(SyntaxKind.SetAccessorDeclaration)).Modifiers);
                    syntaxList = syntaxList.Add(setter);
                }
                var newProperty = property.WithAccessorList(SyntaxFactory.AccessorList(syntaxList))
                                  .WithAdditionalAnnotations(newPropAnno, Formatter.Annotation);

                var newRoot = root.ReplaceNode((SyntaxNode)property, newProperty);
                return(Task.FromResult(document.WithSyntaxRoot(newRoot.InsertNodesBefore(newRoot.GetAnnotatedNodes(newPropAnno).First(), new List <SyntaxNode>()
                {
                    backingStore
                }))));
            })
                );
        }
        private static void AnalyzeInterpolatedStringExpression(SyntaxNodeAnalysisContext context)
        {
            SyntaxNode node = context.Node;

            if (node.ContainsDiagnostics)
            {
                return;
            }

            if (node.ContainsDirectives)
            {
                return;
            }

            var interpolatedString = (InterpolatedStringExpressionSyntax)node;

            SyntaxList <InterpolatedStringContentSyntax> contents = interpolatedString.Contents;

            if (ConvertInterpolatedStringToStringLiteralAnalysis.IsFixable(contents))
            {
                ReportDiagnostic(context,
                                 DiagnosticDescriptors.UnnecessaryInterpolatedString,
                                 Location.Create(interpolatedString.SyntaxTree, GetDollarSpan(interpolatedString)));
            }
            else
            {
                if (!(contents.SingleOrDefault(shouldThrow: false) is InterpolationSyntax interpolation))
                {
                    return;
                }

                if (interpolation.AlignmentClause != null)
                {
                    return;
                }

                if (interpolation.FormatClause != null)
                {
                    return;
                }

                ExpressionSyntax expression = interpolation.Expression?.WalkDownParentheses();

                if (expression == null)
                {
                    return;
                }

                if (!IsNonNullStringExpression(expression))
                {
                    return;
                }

                ReportDiagnostic(context, DiagnosticDescriptors.UnnecessaryInterpolatedString, interpolatedString);

                ReportToken(context, DiagnosticDescriptors.UnnecessaryInterpolatedStringFadeOut, interpolatedString.StringStartToken);
                ReportToken(context, DiagnosticDescriptors.UnnecessaryInterpolatedStringFadeOut, interpolation.OpenBraceToken);
                ReportToken(context, DiagnosticDescriptors.UnnecessaryInterpolatedStringFadeOut, interpolation.CloseBraceToken);
                ReportToken(context, DiagnosticDescriptors.UnnecessaryInterpolatedStringFadeOut, interpolatedString.StringEndToken);
            }

            bool IsNonNullStringExpression(ExpressionSyntax expression)
            {
                if (expression.IsKind(SyntaxKind.StringLiteralExpression, SyntaxKind.InterpolatedStringExpression))
                {
                    return(true);
                }

                Optional <object> constantValue = context.SemanticModel.GetConstantValue(expression, context.CancellationToken);

                return(constantValue.HasValue &&
                       constantValue.Value is string value &&
                       value != null);
            }
        }
Esempio n. 52
0
 public abstract bool TryGetElementInfo(SyntaxNode element, out SyntaxToken containingTagNameToken, out SyntaxList <RazorSyntaxNode> attributeNodes);
 public static bool Contains <T>(this SyntaxList <T> list, SyntaxKind kind) where T : SyntaxNode
 {
     return(list.IndexOf(kind) != -1);
 }
Esempio n. 54
0
        private static void AnalyzeLocalDeclarationStatement(SyntaxNodeAnalysisContext context)
        {
            var localDeclarationStatement = (LocalDeclarationStatementSyntax)context.Node;

            if (localDeclarationStatement.ContainsDiagnostics)
            {
                return;
            }

            if (localDeclarationStatement.SpanOrTrailingTriviaContainsDirectives())
            {
                return;
            }

            SingleLocalDeclarationStatementInfo localDeclarationInfo = SyntaxInfo.SingleLocalDeclarationStatementInfo(localDeclarationStatement);

            if (!localDeclarationInfo.Success)
            {
                return;
            }

            ExpressionSyntax value = localDeclarationInfo.Value;

            if (value == null)
            {
                return;
            }

            SyntaxList <StatementSyntax> statements = SyntaxInfo.StatementListInfo(localDeclarationStatement).Statements;

            if (!statements.Any())
            {
                return;
            }

            int index = statements.IndexOf(localDeclarationStatement);

            if (index == statements.Count - 1)
            {
                return;
            }

            StatementSyntax nextStatement = statements[index + 1];

            if (nextStatement.ContainsDiagnostics)
            {
                return;
            }

            switch (nextStatement.Kind())
            {
            case SyntaxKind.ExpressionStatement:
            {
                Analyze(context, statements, localDeclarationInfo, index, (ExpressionStatementSyntax)nextStatement);
                break;
            }

            case SyntaxKind.LocalDeclarationStatement:
            {
                Analyze(context, statements, localDeclarationInfo, index, (LocalDeclarationStatementSyntax)nextStatement);
                break;
            }

            case SyntaxKind.ReturnStatement:
            {
                var returnStatement = (ReturnStatementSyntax)nextStatement;

                if (!returnStatement.SpanOrLeadingTriviaContainsDirectives())
                {
                    ExpressionSyntax expression = returnStatement.Expression;

                    if (expression?.Kind() == SyntaxKind.IdentifierName)
                    {
                        var identifierName = (IdentifierNameSyntax)expression;

                        if (string.Equals(localDeclarationInfo.IdentifierText, identifierName.Identifier.ValueText, StringComparison.Ordinal))
                        {
                            ReportDiagnostic(context, localDeclarationInfo, expression);
                        }
                    }
                }

                break;
            }

            case SyntaxKind.YieldReturnStatement:
            {
                var yieldStatement = (YieldStatementSyntax)nextStatement;

                if (index == statements.Count - 2 &&
                    !yieldStatement.SpanOrLeadingTriviaContainsDirectives())
                {
                    ExpressionSyntax expression = yieldStatement.Expression;

                    if (expression?.Kind() == SyntaxKind.IdentifierName)
                    {
                        var identifierName = (IdentifierNameSyntax)expression;

                        if (string.Equals(localDeclarationInfo.IdentifierText, identifierName.Identifier.ValueText, StringComparison.Ordinal))
                        {
                            ReportDiagnostic(context, localDeclarationInfo, expression);
                        }
                    }
                }

                break;
            }

            case SyntaxKind.ForEachStatement:
            {
                if (value.WalkDownParentheses().IsKind(SyntaxKind.AwaitExpression))
                {
                    return;
                }

                if (!value.IsSingleLine())
                {
                    return;
                }

                if (value.IsKind(SyntaxKind.ArrayInitializerExpression))
                {
                    return;
                }

                var forEachStatement = (ForEachStatementSyntax)nextStatement;

                ISymbol localSymbol = GetLocalSymbol(localDeclarationInfo, forEachStatement.Expression, context.SemanticModel, context.CancellationToken);

                if (localSymbol?.IsErrorType() != false)
                {
                    return;
                }

                ContainsLocalOrParameterReferenceWalker walker = ContainsLocalOrParameterReferenceWalker.GetInstance(localSymbol, context.SemanticModel, context.CancellationToken);

                walker.Visit(forEachStatement.Statement);

                if (!walker.Result &&
                    index < statements.Count - 2)
                {
                    walker.VisitList(statements, index + 2);
                }

                if (ContainsLocalOrParameterReferenceWalker.GetResultAndFree(walker))
                {
                    return;
                }

                ReportDiagnostic(context, localDeclarationInfo, forEachStatement.Expression);

                break;
            }

            case SyntaxKind.SwitchStatement:
            {
                if (value.WalkDownParentheses().IsKind(SyntaxKind.AwaitExpression))
                {
                    return;
                }

                if (!value.IsSingleLine())
                {
                    return;
                }

                var switchStatement = (SwitchStatementSyntax)nextStatement;

                ISymbol localSymbol = GetLocalSymbol(localDeclarationInfo, switchStatement.Expression, context.SemanticModel, context.CancellationToken);

                if (localSymbol?.IsErrorType() != false)
                {
                    return;
                }

                ContainsLocalOrParameterReferenceWalker walker = ContainsLocalOrParameterReferenceWalker.GetInstance(localSymbol, context.SemanticModel, context.CancellationToken);

                walker.VisitList(switchStatement.Sections);

                if (!walker.Result &&
                    index < statements.Count - 2)
                {
                    walker.VisitList(statements, index + 2);
                }

                if (ContainsLocalOrParameterReferenceWalker.GetResultAndFree(walker))
                {
                    return;
                }

                ReportDiagnostic(context, localDeclarationInfo, switchStatement.Expression);

                break;
            }
            }
        }
 private static SyntaxList <AttributeListSyntax> FixRemappedAttributes(
     SyntaxList <AttributeListSyntax> existingAttrList,
     List <AttributeSyntax> remappedListAttributes)
 {
     return(FixRemappedAttributes(existingAttrList, remappedListAttributes, null));
 }
        private ImmutableArray <BoundPatternSwitchSection> BindPatternSwitchSections(BoundExpression boundSwitchExpression, SyntaxList <SwitchSectionSyntax> sections, Binder originalBinder, ref DefaultSwitchLabelSyntax defaultLabel, DiagnosticBag diagnostics)
        {
            // Bind match sections
            var boundPatternSwitchSectionsBuilder = ArrayBuilder <BoundPatternSwitchSection> .GetInstance();

            foreach (var sectionSyntax in sections)
            {
                boundPatternSwitchSectionsBuilder.Add(BindPatternSwitchSection(boundSwitchExpression, sectionSyntax, originalBinder, ref defaultLabel, diagnostics));
            }

            return(boundPatternSwitchSectionsBuilder.ToImmutableAndFree());
        }
 public StructDeclarationSyntax Update(SyntaxList<AttributeListSyntax> attributeLists, SyntaxTokenList modifiers, SyntaxToken keyword, SyntaxToken identifier, TypeParameterListSyntax typeParameterList, BaseListSyntax baseList, SyntaxList<TypeParameterConstraintClauseSyntax> constraintClauses, SyntaxToken openBraceToken, SyntaxList<MemberDeclarationSyntax> members, SyntaxToken closeBraceToken, SyntaxToken semicolonToken)
 {
     return this.Update(attributeLists, modifiers, keyword, identifier, typeParameterList, this.ParameterList, baseList, constraintClauses, openBraceToken, members, closeBraceToken, semicolonToken);
 }
Esempio n. 58
0
 public bool Equals(SyntaxList <TNode> other)
 {
     return(_node == other._node);
 }