Browse Source

Prevent NRefactoryResolver crash when mscorlib project content is not referenced correctly.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2448 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
23ad0a61fc
  1. 12
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

12
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IClass callingClass; IClass callingClass;
IMember callingMember; IMember callingMember;
ICSharpCode.NRefactory.Visitors.LookupTableVisitor lookupTableVisitor; ICSharpCode.NRefactory.Visitors.LookupTableVisitor lookupTableVisitor;
IProjectContent projectContent = null; IProjectContent projectContent;
NR.SupportedLanguage language; NR.SupportedLanguage language;
@ -40,6 +40,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return projectContent; return projectContent;
} }
set { set {
if (value == null)
throw new ArgumentNullException("value");
projectContent = value; projectContent = value;
} }
} }
@ -981,6 +983,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IClass GetPrimitiveClass(string systemType, string newName) IClass GetPrimitiveClass(string systemType, string newName)
{ {
IClass c = projectContent.GetClass(systemType); IClass c = projectContent.GetClass(systemType);
if (c == null)
return null;
DefaultClass c2 = new DefaultClass(c.CompilationUnit, newName); DefaultClass c2 = new DefaultClass(c.CompilationUnit, newName);
c2.ClassType = c.ClassType; c2.ClassType = c.ClassType;
c2.Modifiers = c.Modifiers; c2.Modifiers = c.Modifiers;
@ -999,14 +1003,16 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (language == NR.SupportedLanguage.VBNet) { if (language == NR.SupportedLanguage.VBNet) {
foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesVB) { foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesVB) {
if ("System." + pair.Key != pair.Value) { if ("System." + pair.Key != pair.Value) {
result.Add(GetPrimitiveClass(pair.Value, pair.Key)); IClass c = GetPrimitiveClass(pair.Value, pair.Key);
if (c != null) result.Add(c);
} }
} }
result.Add("Global"); result.Add("Global");
result.Add("New"); result.Add("New");
} else { } else {
foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesCSharp) { foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesCSharp) {
result.Add(GetPrimitiveClass(pair.Value, pair.Key)); IClass c = GetPrimitiveClass(pair.Value, pair.Key);
if (c != null) result.Add(c);
} }
} }
ParseInformation parseInfo = HostCallback.GetParseInformation(fileName); ParseInformation parseInfo = HostCallback.GetParseInformation(fileName);

Loading…
Cancel
Save