private void ReplaceImportStatements()
        {
            HashSet <string> alreadyAddedImportsStatements             = new HashSet <string>();
            IEnumerable <ImportsStatementSyntax> importsStatementNodes = tree.GetRoot().DescendantNodes().OfType <ImportsStatementSyntax>();

            foreach (ImportsStatementSyntax oldImportsStatementNode in importsStatementNodes) // iterate over all qualified names in the file
            {
                // could be problems if this import statement isn't simple, however even if an alias is used in the import it's still simple
                SimpleImportsClauseSyntax oldSimpleImportsNode = oldImportsStatementNode.DescendantNodes().OfType <SimpleImportsClauseSyntax>().First();
                var oldNamespace = oldSimpleImportsNode.WithoutTrivia().Name.GetText().ToString();
                List <namespace_map> namespaces = NSMappingSQLConnector.GetInstance().GetNamespaceMapsFromOldNamespace(TransformProject.sdkId, oldNamespace);
                if (namespaces != null)
                {
                    foreach (namespace_map nsMap in namespaces)
                    {
                        var newNamespace = nsMap.new_namespace;
                        if (!alreadyAddedImportsStatements.Contains(newNamespace))
                        {
                            alreadyAddedImportsStatements.Add(newNamespace);
                            NameSyntax newIdentifierNode    = IdentifierName(newNamespace);
                            var        newSimpleImportsNode = oldSimpleImportsNode.WithName(newIdentifierNode);
                            SeparatedSyntaxList <ImportsClauseSyntax> simpleImportsList = new SeparatedSyntaxList <ImportsClauseSyntax>().Add(newSimpleImportsNode);
                            ImportsStatementSyntax newImportsStatementNode = ImportsStatement(simpleImportsList).WithTriviaFrom(oldImportsStatementNode);
                            newImportsStatementNode = newImportsStatementNode.WithImportsKeyword(oldImportsStatementNode.ImportsKeyword);
                            documentEditor.InsertAfter(oldImportsStatementNode, newImportsStatementNode);
                        }
                    }
                    documentEditor.RemoveNode(oldImportsStatementNode);
                }
            }
        }
예제 #2
0
        public override void VisitImportsStatement(ImportsStatementSyntax node)
        {
            if (node.DescendantNodes().Any(x => x is ImportAliasClauseSyntax))
            {
                var simpleNode = node.ChildNodes().FirstOrDefault(x => x is SimpleImportsClauseSyntax);
                var ns         = simpleNode.ChildNodes().LastOrDefault().ToString();

                var aliasNode = simpleNode.ChildNodes().FirstOrDefault(x => x is ImportAliasClauseSyntax);
                var alternate = aliasNode.ChildTokens().FirstOrDefault(x => x.Kind() == SyntaxKind.IdentifierToken).ToString();

                ImportsNamespaces.Add(new NamespaceInfo
                {
                    Namespace = ns,
                    Alternate = alternate,
                });
            }
            else
            {
                var ns = node.ChildNodes().FirstOrDefault().ToString();
                ImportsNamespaces.Add(new NamespaceInfo
                {
                    Namespace = ns,
                    Alternate = string.Empty,
                });
            }

            base.VisitImportsStatement(node);
        }
예제 #3
0
        public override void VisitImportsStatement(ImportsStatementSyntax node)
        {
            long startTicks = Log.APPLICATIONSERVICES("Enter", Common.LOG_CATEGORY);

            if (_targetPatternRegEx.Match(node.ImportsClauses.ToString()).Success)
            {
                RecordMatchAndContext(node, BlockType.None);
            }

            base.VisitImportsStatement(node);

            Log.APPLICATIONSERVICES("Exit", Common.LOG_CATEGORY, startTicks);
        }
예제 #4
0
        public override Microsoft.CodeAnalysis.SyntaxNode VisitImportsStatement(ImportsStatementSyntax node)
        {
            var newImportsStatement = SyntaxFactory.ImportsStatement();

            newImportsStatement = newImportsStatement.AddImportsClauses(SyntaxFactory.SimpleImportsClause(SyntaxFactory.ParseName(importsName)));

            CompilationUnitSyntax cu = (CompilationUnitSyntax)node.Parent;

            cu = cu.AddImports(newImportsStatement);

            ImportsStatementSyntax newNode = null;

            if (_targetPatternRegEx.Match(node.ImportsClauses.ToString()).Success)
            {
                var existingImports = node.Parent.DescendantNodes().OfType <ImportsStatementSyntax>();

                //newNode = node.AddImportsClauses(new)
                //RecordMatchAndContext(node, BlockType.None);
            }

            return(newNode);
        }
예제 #5
0
 public override void VisitImportsStatement(ImportsStatementSyntax node)
 {
     LogicalLineCount++;
     base.VisitImportsStatement(node);
 }
예제 #6
0
 public override void VisitImportsStatement(ImportsStatementSyntax node)
 {
 }
예제 #7
0
 public VbImportedNamespace(INamespaceSymbol namespaceSymbol, ImportsStatementSyntax syntaxNode)
     : base(namespaceSymbol)
 {
     _syntaxNode = syntaxNode;
 }