Esempio n. 1
0
 private static bool IsNamespaceImportedClass(TypeScriptClass classToMatch, Identifier identifier,
                                              ImportedModule namespaceImport)
 {
     return(IsNamespaceImportedClass(classToMatch.Name, identifier, namespaceImport));
 }
Esempio n. 2
0
        public static IEnumerable <Usage> FindUsages(this TsProject <TypescriptCompilation> tsProject, TypeScriptClass first)
        {
            var compilations = tsProject.Compiled.Where(c => c.Imports != null &&
                                                        c.Imports
                                                        .Where(i => i.IsLocalImport)
                                                        .Any(i => (i.AbsolutePath.Equals(first.FileName) && i.ImportedModules.Any(m => m.Name.Equals(first.Name))) ||
                                                             i.AbsolutePath.Equals(first.FileName) && i.ImportedModules.Any(m => m.Name.Equals("*"))
                                                             )).ToList();
            List <Usage> positions = new List <Usage>();

            foreach (var compilation in compilations)
            {
                var import = compilation.FindImport(first);
                if (import.ImportedModules.Count == 1 && import.ImportedModules.First().IsNamespaceImport)
                {
                    var namespaceImport = import.ImportedModules.First();
                    var potentialUsages = compilation.Ast.RootNode.GetDescendants().OfType <Identifier>()
                                          .Where(i => IsNamespaceImportedClass(first, i, namespaceImport));

                    var usages = potentialUsages.Where(p => p.Parent is NewExpression || p.Parent.Parent is NewExpression).Select(p => p.Parent is NewExpression ? p.Parent : p.Parent.Parent);
                    positions.AddRange(usages.Select(usage => new Usage
                    {
                        Compilation       = compilation,
                        Node              = usage,
                        Lookup            = first,
                        IsNamespaceImport = true
                    }));
                }
                else
                {
                    var potentialUsages = compilation.Ast.RootNode.GetDescendants().OfType <Identifier>()
                                          .Where(i => i.IdentifierStr.Equals(first.Name));
                    var usages = potentialUsages.Where(p => p.Parent is NewExpression || p.Parent.Parent is NewExpression).Select(p => p.Parent is NewExpression ? p.Parent : p.Parent.Parent);
                    positions.AddRange(usages.Select(usage => new Usage
                    {
                        Compilation = compilation,
                        Node        = usage,
                        Lookup      = first
                    }));
                }
            }

            return(positions);
        }
Esempio n. 3
0
 public Imports FindImport(TypeScriptClass cls)
 {
     return(FindImport(cls.FileName, cls.Name));
 }