[mono/monodevelop] 50e8653c: Fixed 'Bug 15150 - Exception in text editor chain'.

Mike Krüger ([email protected]) <[email protected]>
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <000001418251e5e6-c25f307b-5f66-4eb2-9751-9323c2123d43-000000@email.amazonses.com>
   Branch: refs/heads/master
     Home: https://github.com/mono/monodevelop
  Compare: https://github.com/mono/monodevelop/compare/26871acc772a...50e8653c5ead

   Commit: 50e8653c5ead8ae82449064e3183eb1169abb52c
   Author: Mike Krüger <[email protected]> (mkrueger)
     Date: 2013-10-04 07:13:10 GMT
      URL: https://github.com/mono/monodevelop/commit/50e8653c5ead8ae82449064e3183eb1169abb52c

Fixed 'Bug 15150 - Exception in text editor chain'.

Changed paths:
  M main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs

Modified: main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs
===================================================================
@@ -284,6 +284,8 @@ ICompletionContextProvider CreateContextProvider ()
 		CSharpTypeResolveContext CreateTypeResolveContext ()
 		{
 			var compilation = UnresolvedFileCompilation;
+			if (compilation == null)
+				return null;
 			var rctx = new CSharpTypeResolveContext (compilation.MainAssembly);
 			var loc = TextEditorData.Caret.Location;
 			rctx = rctx.WithUsingScope (CSharpUnresolvedFile.GetUsingScope (loc).Resolve (compilation));
@@ -320,7 +322,8 @@ ICompletionDataList InternalHandleCodeCompletion (CodeCompletionContext completi
 			var list = new CSharpCompletionDataList ();
 			list.Resolver = CSharpUnresolvedFile != null ? CSharpUnresolvedFile.GetResolver (UnresolvedFileCompilation, Document.Editor.Caret.Location) : new CSharpResolver (Compilation);
 			var ctx = CreateTypeResolveContext ();
-
+			if (ctx == null)
+				return null;
 			var completionDataFactory = new CompletionDataFactory (this, new CSharpResolver (ctx));
 			var engine = new CSharpCompletionEngine (
 				data.Document,
@@ -392,12 +395,15 @@ static bool HasAllUsedParameters (IParameterDataProvider provider, List<string>
 		}
 		public override int GuessBestMethodOverload (IParameterDataProvider provider, int currentOverload)
 		{
+			var ctx = CreateTypeResolveContext ();
+			if (ctx == null)
+				return -1;
 			var engine = new CSharpParameterCompletionEngine (
 				TextEditorData.Document,
 				CreateContextProvider (),
 				this,
 				Document.GetProjectContext (),
-				CreateTypeResolveContext ()
+				ctx
 				);
 			List<string> list;
 			int cparam = engine.GetCurrentParameterIndex (provider.StartOffset, document.Editor.Caret.Offset, out list);
@@ -550,13 +556,17 @@ public override ParameterDataProvider HandleParameterCompletion (CodeCompletionC
 //				return null;
 			if (Unit == null || CSharpUnresolvedFile == null)
 				return null;
+			var ctx = CreateTypeResolveContext ();
+			if (ctx == null)
+				return null;
+
 			try {
 				var engine = new CSharpParameterCompletionEngine (
 					TextEditorData.Document,
 					CreateContextProvider (),
 					this,
 					Document.GetProjectContext (),
-					CreateTypeResolveContext ()
+					ctx
 				);
 				return engine.GetParameterDataProvider (completionContext.TriggerOffset, completionChar) as ParameterDataProvider;
 			} catch (Exception e) {
@@ -592,12 +602,18 @@ List<string> GetUsedNamespaces ()
 
 		public override bool GetParameterCompletionCommandOffset (out int cpos)
 		{
+			var ctx = CreateTypeResolveContext ();
+			if (ctx == null) {
+				cpos = -1;
+				return false;
+			}
+
 			var engine = new CSharpParameterCompletionEngine (
 				TextEditorData.Document,
 				CreateContextProvider (),
 				this,
 				Document.GetProjectContext (),
-				CreateTypeResolveContext ()
+				ctx
 			);
 			engine.SetOffset (document.Editor.Caret.Offset);
 			return engine.GetParameterCompletionCommandOffset (out cpos);
@@ -605,13 +621,17 @@ public override bool GetParameterCompletionCommandOffset (out int cpos)
 
 		public override int GetCurrentParameterIndex (int startOffset)
 		{
+			var ctx = CreateTypeResolveContext ();
+			if (ctx == null)
+				return -1;
+
 			var engine = new CSharpParameterCompletionEngine (
 				TextEditorData.Document,
 				CreateContextProvider (),
 				this,
 				Document.GetProjectContext (),
-				CreateTypeResolveContext ()
-				);
+				ctx
+			);
 			List<string> list;
 			return engine.GetCurrentParameterIndex (startOffset, document.Editor.Caret.Offset, out list);
 		}
_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.