diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj b/src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj index 69233d6392..4c75b4b706 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Test/BooBinding.Tests.csproj @@ -72,6 +72,10 @@ ICSharpCode.SharpDevelop.dll Always + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs index be6006088c..c3a91cb008 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs @@ -52,9 +52,9 @@ namespace Grunwald.BooBinding.Tests { DefaultProjectContent pc = new DefaultProjectContent(); lastPC = pc; - ParserService.ForceProjectContent(pc); + ProjectContentRegistry.CurrentProjectContent = pc; pc.ReferencedContents.Add(ProjectContentRegistry.Mscorlib); - pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(new ReferenceProjectItem(null, "System.Windows.Forms"))); + pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms")); pc.ReferencedContents.Add(booLangPC); ICompilationUnit cu = new BooParser().Parse(pc, fileName, prog); ParserService.UpdateParseInformation(cu, fileName, false, false); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Test/CSharpBinding.Tests.csproj b/src/AddIns/BackendBindings/CSharpBinding/Test/CSharpBinding.Tests.csproj index d5c2f30728..b23231b595 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Test/CSharpBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/CSharpBinding/Test/CSharpBinding.Tests.csproj @@ -51,6 +51,10 @@ ICSharpCode.SharpDevelop True + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj b/src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj index 87413ce48d..bd3ce1433b 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/VBNetBinding/Test/VBNetBinding.Tests.csproj @@ -52,6 +52,10 @@ {2748AD25-9C63-4E12-877B-4DCE96FBED54} ICSharpCode.SharpDevelop + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj index f614de88eb..848c2ac020 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj @@ -182,6 +182,10 @@ NRefactory + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj b/src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj index dcb29092c2..63124142fa 100644 --- a/src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj +++ b/src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj @@ -100,6 +100,10 @@ UnitTesting.dll Always + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj index 1de7300d16..fd24d710a3 100644 --- a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj +++ b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj @@ -124,6 +124,10 @@ + + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} + ICSharpCode.SharpDevelop.Dom + \ No newline at end of file diff --git a/src/Main/Base/Test/MemberLookupHelperTests.cs b/src/Main/Base/Test/MemberLookupHelperTests.cs index 284e3451b6..2f0af2aaa3 100644 --- a/src/Main/Base/Test/MemberLookupHelperTests.cs +++ b/src/Main/Base/Test/MemberLookupHelperTests.cs @@ -17,7 +17,7 @@ namespace ICSharpCode.SharpDevelop.Tests public class MemberLookupHelperTests { IProjectContent msc = ProjectContentRegistry.Mscorlib; - IProjectContent swf = ProjectContentRegistry.GetProjectContentForReference(new ReferenceProjectItem(null, "System.Windows.Forms")); + IProjectContent swf = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"); public IReturnType DictionaryRT { get { diff --git a/src/Main/Base/Test/NRefactoryResolverTests.cs b/src/Main/Base/Test/NRefactoryResolverTests.cs index 4363461a48..1997696a29 100644 --- a/src/Main/Base/Test/NRefactoryResolverTests.cs +++ b/src/Main/Base/Test/NRefactoryResolverTests.cs @@ -28,8 +28,8 @@ namespace ICSharpCode.SharpDevelop.Tests p.Parse(); DefaultProjectContent pc = new DefaultProjectContent(); pc.ReferencedContents.Add(ProjectContentRegistry.Mscorlib); - pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(new ReferenceProjectItem(null, "System.Windows.Forms"))); - ParserService.ForceProjectContent(pc); + pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms")); + ProjectContentRegistry.CurrentProjectContent = pc; lastPC = pc; NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc); visitor.VisitCompilationUnit(p.CompilationUnit, null); @@ -50,9 +50,9 @@ namespace ICSharpCode.SharpDevelop.Tests p.ParseMethodBodies = false; p.Parse(); DefaultProjectContent pc = new DefaultProjectContent(); - ParserService.ForceProjectContent(pc); + ProjectContentRegistry.CurrentProjectContent = pc; pc.ReferencedContents.Add(ProjectContentRegistry.Mscorlib); - pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(new ReferenceProjectItem(null, "System.Windows.Forms"))); + pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms")); pc.Language = LanguageProperties.VBNet; lastPC = pc; NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc); @@ -68,6 +68,7 @@ namespace ICSharpCode.SharpDevelop.Tests void AddCompilationUnit(ICompilationUnit parserOutput, string fileName) { + HostCallback.GetParseInformation = ParserService.GetParseInformation; ParserService.UpdateParseInformation(parserOutput, fileName, false, false); } @@ -75,7 +76,7 @@ namespace ICSharpCode.SharpDevelop.Tests { AddCompilationUnit(Parse("a.cs", program), "a.cs"); - NRefactoryResolver resolver = new NRefactoryResolver(ICSharpCode.NRefactory.SupportedLanguage.CSharp); + NRefactoryResolver resolver = new NRefactoryResolver(lastPC); return resolver.Resolve(new ExpressionResult(expression), line, 0, "a.cs", @@ -86,7 +87,7 @@ namespace ICSharpCode.SharpDevelop.Tests { AddCompilationUnit(ParseVB("a.vb", program), "a.vb"); - NRefactoryResolver resolver = new NRefactoryResolver(ICSharpCode.NRefactory.SupportedLanguage.VBNet); + NRefactoryResolver resolver = new NRefactoryResolver(lastPC); return resolver.Resolve(new ExpressionResult(expression), line, 0, "a.vb", @@ -644,7 +645,7 @@ namespace Root.Child { "; AddCompilationUnit(Parse("a.cs", program), "a.cs"); - NRefactoryResolver resolver = new NRefactoryResolver(ICSharpCode.NRefactory.SupportedLanguage.CSharp); + NRefactoryResolver resolver = new NRefactoryResolver(lastPC); ArrayList m = resolver.CtrlSpace(7, 0, "a.cs", program, ExpressionContext.Default); Assert.IsTrue(TypeExists(m, "Beta"), "Meta must exist"); Assert.IsTrue(TypeExists(m, "Alpha"), "Alpha must exist"); diff --git a/src/Main/Base/Test/ReflectionLayerTests.cs b/src/Main/Base/Test/ReflectionLayerTests.cs index ad852f50dd..b539f5419e 100644 --- a/src/Main/Base/Test/ReflectionLayerTests.cs +++ b/src/Main/Base/Test/ReflectionLayerTests.cs @@ -121,12 +121,10 @@ namespace ICSharpCode.SharpDevelop.Tests CheckClass(c); MemoryStream memory = new MemoryStream(); - DomPersistence.ReadWriteHelper helper = new DomPersistence.ReadWriteHelper(new BinaryWriter(memory)); - helper.WriteProjectContent((ReflectionProjectContent)cu.ProjectContent); + DomPersistence.WriteProjectContent((ReflectionProjectContent)cu.ProjectContent, memory); memory.Position = 0; - helper = new DomPersistence.ReadWriteHelper(new BinaryReader(memory)); - foreach (IClass c2 in helper.ReadProjectContent().Classes) { + foreach (IClass c2 in DomPersistence.LoadProjectContent(memory).Classes) { CheckClass(c2); } } diff --git a/src/Main/Base/Test/WebReferences/UnsupportedLanguageTest.cs b/src/Main/Base/Test/WebReferences/UnsupportedLanguageTest.cs index 90a8926296..98acdcf7a0 100644 --- a/src/Main/Base/Test/WebReferences/UnsupportedLanguageTest.cs +++ b/src/Main/Base/Test/WebReferences/UnsupportedLanguageTest.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences string updateFromUrl = "http://localhost/test.asmx"; [Test] - [ExpectedException(typeof(NotImplementedException))] + [ExpectedException(typeof(NotSupportedException))] public void NotSupportedProjectLanguage() { project = new MSBuildProject(); diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs index f42f96a662..eabd9eee70 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs @@ -48,9 +48,7 @@ namespace ICSharpCode.SharpDevelop.Dom + ".dat"); AddFileNameToCacheIndex(Path.GetFileName(fileName), pc); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { - using (BinaryWriter writer = new BinaryWriter(fs)) { - new ReadWriteHelper(writer).WriteProjectContent(pc); - } + WriteProjectContent(pc, fs); } return fileName; } @@ -69,21 +67,9 @@ namespace ICSharpCode.SharpDevelop.Dom public static ReflectionProjectContent LoadProjectContent(string cacheFileName) { - ReflectionProjectContent pc; using (FileStream fs = new FileStream(cacheFileName, FileMode.Open, FileAccess.Read)) { - using (BinaryReader reader = new BinaryReader(fs)) { - try { - pc = new ReadWriteHelper(reader).ReadProjectContent(); - } catch (EndOfStreamException) { - LoggingService.Warn("Read dom: EndOfStreamException"); - return null; - } - } - } - if (pc != null) { - pc.InitializeSpecialClasses(); + return LoadProjectContent(fs); } - return pc; } #endregion @@ -166,6 +152,38 @@ namespace ICSharpCode.SharpDevelop.Dom } #endregion + #region Saving / Loading without cache + /// + /// Saves the project content to the stream. + /// + public static void WriteProjectContent(ReflectionProjectContent pc, Stream stream) + { + BinaryWriter writer = new BinaryWriter(stream); + new ReadWriteHelper(writer).WriteProjectContent(pc); + // do not close the stream + } + + /// + /// Load a project content from a stream. + /// + public static ReflectionProjectContent LoadProjectContent(Stream stream) + { + ReflectionProjectContent pc; + BinaryReader reader = new BinaryReader(stream); + try { + pc = new ReadWriteHelper(reader).ReadProjectContent(); + if (pc != null) { + pc.InitializeSpecialClasses(); + } + return pc; + } catch (EndOfStreamException) { + LoggingService.Warn("Read dom: EndOfStreamException"); + return null; + } + // do not close the stream + } + #endregion + private struct ClassNameTypeCountPair { public readonly string ClassName; diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs index 94f4e2c763..9ed4b9a7f7 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/ReflectionClass.cs @@ -12,7 +12,7 @@ using System.Collections.Generic; namespace ICSharpCode.SharpDevelop.Dom.ReflectionLayer { - internal class ReflectionClass : DefaultClass + public class ReflectionClass : DefaultClass { const BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | diff --git a/src/SharpDevelop.Tests.sln b/src/SharpDevelop.Tests.sln index 504be4f655..805b820d9f 100644 --- a/src/SharpDevelop.Tests.sln +++ b/src/SharpDevelop.Tests.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.0.0.1590 +# SharpDevelop 2.1.0.1663 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}" ProjectSection(SolutionItems) = postProject EndProjectSection @@ -76,6 +76,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0 ProjectSection(SolutionItems) = postProject EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}" @@ -252,6 +254,10 @@ Global {80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Any CPU.Build.0 = Release|Any CPU {80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.Build.0 = Release|Any CPU + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -294,5 +300,6 @@ Global {4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} EndGlobalSection EndGlobal