private static long HashModuleFileSizes(IImportChildrenSource source)
        {
            var hash  = 0L;
            var names = source.GetChildrenNames();

            foreach (var name in names)
            {
                if (source.TryGetChildImport(name, out var child))
                {
                    if (child is ModuleImport moduleImport)
                    {
                        if (moduleImport.ModuleFileSize == 0)
                        {
                            continue; // Typically test case, memory-only module.
                        }
                        hash = unchecked (hash * 31 ^ moduleImport.ModuleFileSize);
                    }

                    if (child is IImportChildrenSource childSource)
                    {
                        hash = unchecked (hash * 31 ^ HashModuleFileSizes(childSource));
                    }
                }
            }

            return(hash);
        }
Пример #2
0
 public ModuleImport(IImportChildrenSource childrenSource, string name, string fullName, string rootPath, string modulePath, bool isCompiled, bool isLibrary)
 {
     _childrenSource = childrenSource;
     Name            = name;
     FullName        = fullName;
     RootPath        = rootPath;
     ModulePath      = modulePath;
     IsCompiled      = isCompiled;
     IsLibrary       = isLibrary;
 }
Пример #3
0
        private IMember GetValueFromImports(PythonVariableModule parentModule, IImportChildrenSource childrenSource, string memberName)
        {
            if (childrenSource == null || !childrenSource.TryGetChildImport(memberName, out var childImport))
            {
                return(Interpreter.UnknownType);
            }

            switch (childImport)
            {
            case ModuleImport moduleImport:
                var module = ModuleResolution.GetOrLoadModule(moduleImport.FullName);
                return(module != null?GetOrCreateVariableModule(module, parentModule, moduleImport.Name) : Interpreter.UnknownType);

            case ImplicitPackageImport packageImport:
                return(GetOrCreateVariableModule(packageImport.FullName, parentModule, memberName));

            default:
                return(Interpreter.UnknownType);
            }
        }
Пример #4
0
        private static long HashModuleFileSizes(IImportChildrenSource source)
        {
            var hash  = 0L;
            var names = source.GetChildrenNames();

            foreach (var name in names)
            {
                if (source.TryGetChildImport(name, out var child))
                {
                    if (child is ModuleImport moduleImport)
                    {
                        hash = unchecked (hash * 31 ^ moduleImport.ModuleFileSize);
                    }

                    if (child is IImportChildrenSource childSource)
                    {
                        hash = unchecked (hash * 31 ^ HashModuleFileSizes(childSource));
                    }
                }
            }

            return(hash);
        }
 public ImplicitPackageImport(IImportChildrenSource childrenSource, string name, string fullName)
 {
     _childrenSource = childrenSource;
     Name            = name;
     FullName        = fullName;
 }
Пример #6
0
 public ImportRoot(IImportChildrenSource childrenSource, string path)
 {
     Path            = path;
     _childrenSource = childrenSource;
 }