private ISet <string> GetVariables(Expression expression)
        {
            var variableCollector = new DependencyCollector();

            variableCollector.Collect(expression);
            return(variableCollector.Dependencies);
        }
        internal async Task CompareBaselineAndRestoreAsync(ModuleModel model, IPythonModule m)
        {
            //var json = ToJson(model);
            //Baseline.CompareToFile(BaselineFileName, json);

            // In real case dependency analysis will restore model dependencies.
            // Here we don't go through the dependency analysis so we have to
            // manually restore dependent modules.
            var dc = new DependencyCollector(m);

            dc.AddImports(model.Imports);
            dc.AddFromImports(model.FromImports);
            foreach (var dep in dc.Dependencies)
            {
                m.Interpreter.ModuleResolution.GetOrLoadModule(dep.Name);
            }

            var dcs = new DependencyCollector(m, true);

            dcs.AddImports(model.StubImports);
            dcs.AddFromImports(model.StubFromImports);
            foreach (var dep in dcs.Dependencies)
            {
                m.Interpreter.TypeshedResolution.GetOrLoadModule(dep.Name);
            }

            var analyzer = Services.GetService <IPythonAnalyzer>();
            await analyzer.WaitForCompleteAnalysisAsync();

            using (var dbModule = CreateDbModule(model, m.FilePath)) {
                dbModule.Should().HaveSameMembersAs(m);
            }
        }
Exemple #3
0
        public static void Calculate()
        {
            dependencyList      = Database.objects.CreateMapping <DependencyList[]>();
            reverseDependencies = Database.objects.CreateMapping <List <FactorioId> >();
            foreach (var obj in Database.objects.all)
            {
                reverseDependencies[obj] = new List <FactorioId>();
            }

            var collector = new DependencyCollector();
            var temp      = new List <FactorioObject>();

            foreach (var obj in Database.objects.all)
            {
                obj.GetDependencies(collector, temp);
                var packed = collector.Pack();
                dependencyList[obj] = packed;

                foreach (var group in packed)
                {
                    foreach (var req in group.elements)
                    {
                        if (!reverseDependencies[req].Contains(obj.id))
                        {
                            reverseDependencies[req].Add(obj.id);
                        }
                    }
                }
            }
        }
        private ISet <string> GetVariables(Statement statement)
        {
            var variableCollector = new DependencyCollector();

            variableCollector.Collect(statement);
            return(variableCollector.Dependencies);
        }
 public static void AddFromImports(this DependencyCollector dc, IEnumerable <FromImportModel> imports)
 {
     foreach (var imp in imports)
     {
         dc.AddFromImport(imp.RootNames, imp.MemberNames, imp.DotCount, imp.ForceAbsolute);
     }
 }
Exemple #6
0
            public DependencyProvider(IPythonModule module, ModuleModel model)
            {
                var dc = new DependencyCollector(module);

                dc.AddImports(model.Imports);
                dc.AddFromImports(model.FromImports);
                _dependencies = dc.Dependencies;
            }
 public DependencyCollectorForm(DependencyCollector depColl)
 {
     InitializeComponent();
     this.DependencyCollector       = depColl;
     this.depComTextBox.Text        = this.DependencyCollector.DependencyCombination;
     this.depFcnCheckBox.Checked    = false;
     this.depFcnRichTextBox.Enabled = false;
 }
        public void ShouldCollectNotifiableRootAsDependency()
        {
            var source     = new Source();
            var expression = (Expression <Func <string> >)(() => source.Name);
            var root       = new DependencyCollector(expression).Dependencies.Single();

            Assert.AreEqual("Name", root.PropertyName);
            Assert.IsEmpty(root.SubDependencies);
        }
        public void ShouldCollectLinksAsDependenciesIfNotifiable()
        {
            var source     = new Source();
            var expression = (Expression <Func <string> >)(() => source.Inner.Name);
            var root       = new DependencyCollector(expression).Dependencies.Single();

            Assert.AreEqual("Inner", root.PropertyName);

            var subDependency = root.SubDependencies.Single();

            Assert.AreEqual("Name", subDependency.PropertyName);
        }
 public static void AddImports(this DependencyCollector dc, IEnumerable <ImportModel> imports)
 {
     foreach (var imp in imports)
     {
         foreach (var dottedName in imp.ModuleNames)
         {
             var importNames = ImmutableArray <string> .Empty;
             foreach (var part in dottedName.NameParts)
             {
                 importNames = importNames.Add(part);
                 dc.AddImport(importNames, imp.ForceAbsolute);
             }
         }
     }
 }
 public ComputedProperty(Expression <Func <TObj, TResult> > expression)
 {
     _func = DependencyCollector.Create(expression);
 }