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 @@ -16,49 +16,57 @@ namespace ICSharpCode.SharpDevelop.Tests
[TestFixture]
public class MemberLookupHelperTests
{
// IProjectContent msc = ProjectContentRegistry.Mscorlib;
// IProjectContent swf = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
//
// public IReturnType DictionaryRT {
// get {
// return new GetClassReturnType(msc, "System.Collections.Generic.Dictionary", 2);
// }
// }
//
// public IClass EnumerableClass {
// get {
// return msc.GetClass("System.Collections.Generic.IEnumerable", 1);
// }
// }
//
// [Test]
// public void TypeParameterPassedToBaseClassTest()
// {
// IReturnType[] stringInt = { msc.SystemTypes.String, msc.SystemTypes.Int32 };
// IReturnType rrt = new ConstructedReturnType(DictionaryRT, stringInt);
// 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);
// Assert.AreEqual("System.Int32", resc.TypeArguments[1].FullyQualifiedName);
// }
//
// [Test]
// public void TypeParameterPassedToBaseClassSameClass()
// {
// IReturnType[] stringArr = { msc.SystemTypes.String };
// IReturnType rrt = new ConstructedReturnType(EnumerableClass.DefaultReturnType, stringArr);
// IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
// Assert.AreEqual("System.String", 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);
// }
IProjectContent msc; // = ProjectContentRegistry.Mscorlib;
IProjectContent swf; // = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
[TestFixtureSetUp]
public void FixtureSetup()
{
ProjectContentRegistry r = new ProjectContentRegistry();
msc = r.Mscorlib;
swf = r.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
}
public IReturnType DictionaryRT {
get {
return new GetClassReturnType(msc, "System.Collections.Generic.Dictionary", 2);
}
}
public IClass EnumerableClass {
get {
return msc.GetClass("System.Collections.Generic.IEnumerable", 1);
}
}
[Test]
public void TypeParameterPassedToBaseClassTest()
{
IReturnType[] stringInt = { msc.SystemTypes.String, msc.SystemTypes.Int32 };
IReturnType rrt = new ConstructedReturnType(DictionaryRT, stringInt);
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);
Assert.AreEqual("System.Int32", resc.TypeArguments[1].FullyQualifiedName);
}
[Test]
public void TypeParameterPassedToBaseClassSameClass()
{
IReturnType[] stringArr = { msc.SystemTypes.String };
IReturnType rrt = new ConstructedReturnType(EnumerableClass.DefaultReturnType, stringArr);
IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
Assert.AreEqual("System.String", 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 @@ -82,7 +82,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
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),
line, 0,
"a.cs",
@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
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),
line, 0,
"a.vb",
@ -651,7 +651,7 @@ namespace Root.Child { @@ -651,7 +651,7 @@ namespace Root.Child {
";
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);
Assert.IsTrue(TypeExists(m, "Beta"), "Meta 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 @@ -258,7 +258,9 @@ namespace ICSharpCode.SharpDevelop.Dom
}
if (pc == null) {
pc = new ReflectionProjectContent(assembly, this);
persistence.SaveProjectContent(pc);
if (persistence != null) {
persistence.SaveProjectContent(pc);
}
}
} else {
// find real file name for cecil:

Loading…
Cancel
Save