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); }
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; }
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); } }
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; }
public ImportRoot(IImportChildrenSource childrenSource, string path) { Path = path; _childrenSource = childrenSource; }