Browse Source

Fixed NullReferenceException in ProjectContentRegistry when using ICSharpCode.SharpDevelop.Dom without persistence.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2027 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
739fb0a991
  1. 96
      src/Main/Base/Test/MemberLookupHelperTests.cs
  2. 6
      src/Main/Base/Test/NRefactoryResolverTests.cs
  3. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs

96
src/Main/Base/Test/MemberLookupHelperTests.cs

@ -16,49 +16,57 @@ namespace ICSharpCode.SharpDevelop.Tests
[TestFixture] [TestFixture]
public class MemberLookupHelperTests public class MemberLookupHelperTests
{ {
// IProjectContent msc = ProjectContentRegistry.Mscorlib; IProjectContent msc; // = ProjectContentRegistry.Mscorlib;
// IProjectContent swf = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"); IProjectContent swf; // = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
//
// public IReturnType DictionaryRT { [TestFixtureSetUp]
// get { public void FixtureSetup()
// return new GetClassReturnType(msc, "System.Collections.Generic.Dictionary", 2); {
// } ProjectContentRegistry r = new ProjectContentRegistry();
// } msc = r.Mscorlib;
// swf = r.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
// public IClass EnumerableClass { }
// get {
// return msc.GetClass("System.Collections.Generic.IEnumerable", 1); public IReturnType DictionaryRT {
// } get {
// } return new GetClassReturnType(msc, "System.Collections.Generic.Dictionary", 2);
// }
// [Test] }
// public void TypeParameterPassedToBaseClassTest()
// { public IClass EnumerableClass {
// IReturnType[] stringInt = { msc.SystemTypes.String, msc.SystemTypes.Int32 }; get {
// IReturnType rrt = new ConstructedReturnType(DictionaryRT, stringInt); return msc.GetClass("System.Collections.Generic.IEnumerable", 1);
// IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0); }
// Assert.AreEqual("System.Collections.Generic.KeyValuePair", res.FullyQualifiedName); }
// ConstructedReturnType resc = res.CastToConstructedReturnType();
// Assert.AreEqual("System.String", resc.TypeArguments[0].FullyQualifiedName); [Test]
// Assert.AreEqual("System.Int32", resc.TypeArguments[1].FullyQualifiedName); public void TypeParameterPassedToBaseClassTest()
// } {
// IReturnType[] stringInt = { msc.SystemTypes.String, msc.SystemTypes.Int32 };
// [Test] IReturnType rrt = new ConstructedReturnType(DictionaryRT, stringInt);
// public void TypeParameterPassedToBaseClassSameClass() IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
// { Assert.AreEqual("System.Collections.Generic.KeyValuePair", res.FullyQualifiedName);
// IReturnType[] stringArr = { msc.SystemTypes.String }; ConstructedReturnType resc = res.CastToConstructedReturnType();
// IReturnType rrt = new ConstructedReturnType(EnumerableClass.DefaultReturnType, stringArr); Assert.AreEqual("System.String", resc.TypeArguments[0].FullyQualifiedName);
// IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0); Assert.AreEqual("System.Int32", resc.TypeArguments[1].FullyQualifiedName);
// Assert.AreEqual("System.String", res.FullyQualifiedName); }
// }
// [Test]
// [Test] public void TypeParameterPassedToBaseClassSameClass()
// public void GetCommonType() {
// { IReturnType[] stringArr = { msc.SystemTypes.String };
// IReturnType res = MemberLookupHelper.GetCommonType(msc, IReturnType rrt = new ConstructedReturnType(EnumerableClass.DefaultReturnType, stringArr);
// swf.GetClass("System.Windows.Forms.ToolStripButton").DefaultReturnType, IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
// swf.GetClass("System.Windows.Forms.ToolStripSeparator").DefaultReturnType); Assert.AreEqual("System.String", res.FullyQualifiedName);
// Assert.AreEqual("System.Windows.Forms.ToolStripItem", res.FullyQualifiedName); }
// }
[Test]
public void GetCommonType()
{
IReturnType res = MemberLookupHelper.GetCommonType(msc,
swf.GetClass("System.Windows.Forms.ToolStripButton").DefaultReturnType,
swf.GetClass("System.Windows.Forms.ToolStripSeparator").DefaultReturnType);
Assert.AreEqual("System.Windows.Forms.ToolStripItem", res.FullyQualifiedName);
}
} }
} }

6
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -82,7 +82,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{ {
AddCompilationUnit(Parse("a.cs", program), "a.cs"); AddCompilationUnit(Parse("a.cs", program), "a.cs");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC); NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.CSharp);
return resolver.Resolve(new ExpressionResult(expression), return resolver.Resolve(new ExpressionResult(expression),
line, 0, line, 0,
"a.cs", "a.cs",
@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{ {
AddCompilationUnit(ParseVB("a.vb", program), "a.vb"); AddCompilationUnit(ParseVB("a.vb", program), "a.vb");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC); NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.VBNet);
return resolver.Resolve(new ExpressionResult(expression), return resolver.Resolve(new ExpressionResult(expression),
line, 0, line, 0,
"a.vb", "a.vb",
@ -651,7 +651,7 @@ namespace Root.Child {
"; ";
AddCompilationUnit(Parse("a.cs", program), "a.cs"); AddCompilationUnit(Parse("a.cs", program), "a.cs");
NRefactoryResolver resolver = new NRefactoryResolver(lastPC); NRefactoryResolver resolver = new NRefactoryResolver(lastPC, LanguageProperties.CSharp);
ArrayList m = resolver.CtrlSpace(7, 0, "a.cs", program, ExpressionContext.Default); ArrayList m = resolver.CtrlSpace(7, 0, "a.cs", program, ExpressionContext.Default);
Assert.IsTrue(TypeExists(m, "Beta"), "Meta must exist"); Assert.IsTrue(TypeExists(m, "Beta"), "Meta must exist");
Assert.IsTrue(TypeExists(m, "Alpha"), "Alpha must exist"); Assert.IsTrue(TypeExists(m, "Alpha"), "Alpha must exist");

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs

@ -258,7 +258,9 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
if (pc == null) { if (pc == null) {
pc = new ReflectionProjectContent(assembly, this); pc = new ReflectionProjectContent(assembly, this);
persistence.SaveProjectContent(pc); if (persistence != null) {
persistence.SaveProjectContent(pc);
}
} }
} else { } else {
// find real file name for cecil: // find real file name for cecil:

Loading…
Cancel
Save