Browse Source

fix bug in AssemblyParserService's caching logic -> request for internal members was ignored when loading assemblies from disk

newNRILSpyDebugger
Siegfried Pammer 12 years ago
parent
commit
85d8128d98
  1. 8
      src/Main/SharpDevelop/Parser/AssemblyParserService.cs

8
src/Main/SharpDevelop/Parser/AssemblyParserService.cs

@ -128,8 +128,10 @@ namespace ICSharpCode.SharpDevelop.Parser
DateTime lastWriteTime = File.GetLastWriteTimeUtc(fileName); DateTime lastWriteTime = File.GetLastWriteTimeUtc(fileName);
string cacheFileName = GetCacheFileName(fileName); string cacheFileName = GetCacheFileName(fileName);
LoadedAssembly pc = TryReadFromCache(cacheFileName, lastWriteTime); LoadedAssembly pc = TryReadFromCache(cacheFileName, lastWriteTime);
if (pc != null) if (pc != null) {
return pc; if (!includeInternalMembers || includeInternalMembers == pc.HasInternalMembers)
return pc;
}
//LoggingService.Debug("Loading " + fileName); //LoggingService.Debug("Loading " + fileName);
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
@ -309,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Parser
var references = assembly.References var references = assembly.References
.Select(searcher.FindAssembly) .Select(searcher.FindAssembly)
.Where(f => f != null); .Where(f => f != null);
return new SimpleCompilation(mainAssembly, references.Select(fn => GetAssembly(fn))); return new SimpleCompilation(mainAssembly, references.Select(fn => GetAssembly(fn, includeInternalMembers)));
} }
public ICompilation CreateCompilationForAssembly(FileName assembly, bool includeInternalMembers = false) public ICompilation CreateCompilationForAssembly(FileName assembly, bool includeInternalMembers = false)

Loading…
Cancel
Save