From 23ad0a61fc61db088bceeeb180178eaf5c47f55c Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 17 Mar 2007 13:20:54 +0000 Subject: [PATCH] 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 --- .../Src/NRefactoryResolver/NRefactoryResolver.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs index 726d7fd66f..731635c7b3 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver IClass callingClass; IMember callingMember; ICSharpCode.NRefactory.Visitors.LookupTableVisitor lookupTableVisitor; - IProjectContent projectContent = null; + IProjectContent projectContent; NR.SupportedLanguage language; @@ -40,6 +40,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver return projectContent; } set { + if (value == null) + throw new ArgumentNullException("value"); projectContent = value; } } @@ -981,6 +983,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver IClass GetPrimitiveClass(string systemType, string newName) { IClass c = projectContent.GetClass(systemType); + if (c == null) + return null; DefaultClass c2 = new DefaultClass(c.CompilationUnit, newName); c2.ClassType = c.ClassType; c2.Modifiers = c.Modifiers; @@ -999,14 +1003,16 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver if (language == NR.SupportedLanguage.VBNet) { foreach (KeyValuePair pair in TypeReference.PrimitiveTypesVB) { 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("New"); } else { foreach (KeyValuePair 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);