From 1b7912d37fe2eb4b7f0f5b1cec33987c5c6ecfa5 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 21 Oct 2005 21:41:46 +0000 Subject: [PATCH] Fixed bugs in boo code completion. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@606 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/CodeCompletion/BooResolver.cs | 10 ++++++++-- .../Project/Src/CodeCompletion/ConvertVisitor.cs | 8 ++++---- .../Project/Src/CodeCompletion/ResolveVisitor.cs | 3 +++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs index 7385395924..9cdb18fa30 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs @@ -109,7 +109,7 @@ namespace Grunwald.BooBinding.CodeCompletion IMember ResolveCurrentMember(IClass callingClass) { - LoggingService.DebugFormatted("Getting current method... caretLine = {0}, caretColumn = {1}", caretLine, caretColumn); + //LoggingService.DebugFormatted("Getting current method... caretLine = {0}, caretColumn = {1}", caretLine, caretColumn); if (callingClass == null) return null; IMember best = null; int line = 0; @@ -178,7 +178,13 @@ namespace Grunwald.BooBinding.CodeCompletion return new NamespaceResolveResult(callingClass, callingMember, ""); } - AST.Expression expr = Boo.Lang.Parser.BooParser.ParseExpression("expression", expressionResult.Expression); + AST.Expression expr; + try { + expr = Boo.Lang.Parser.BooParser.ParseExpression("expression", expressionResult.Expression); + } catch (Exception ex) { + LoggingService.Debug("Boo expression parser: " + ex.Message); + return null; + } if (expr == null) return null; if (expr is AST.IntegerLiteralExpression) diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs index d3eeca5243..5436a996b7 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs @@ -308,7 +308,7 @@ namespace Grunwald.BooBinding.CodeCompletion private void EnterTypeDefinition(AST.TypeDefinition node, ClassType classType) { - LoggingService.Debug("Enter " + node.GetType().Name + " (" + node.FullName + ")"); + //LoggingService.Debug("Enter " + node.GetType().Name + " (" + node.FullName + ")"); DomRegion region = GetClientRegion(node); DefaultClass c = new DefaultClass(_cu, classType, GetModifier(node), region, OuterClass); c.FullyQualifiedName = node.FullName; @@ -353,12 +353,12 @@ namespace Grunwald.BooBinding.CodeCompletion private void LeaveTypeDefinition(AST.TypeDefinition node) { DefaultClass c = _currentClass.Pop(); - LoggingService.Debug("Leave "+node.GetType().Name+" "+node.FullName+" (Class = "+c.FullyQualifiedName+")"); + //LoggingService.Debug("Leave "+node.GetType().Name+" "+node.FullName+" (Class = "+c.FullyQualifiedName+")"); } public override void OnMethod(AST.Method node) { - LoggingService.Debug("Method: " + node.FullName); + //LoggingService.Debug("Method: " + node.FullName); DefaultMethod method = new DefaultMethod(node.Name, null, GetModifier(node), GetRegion(node), GetClientRegion(node), OuterClass); ConvertAttributes(node, method); ConvertTemplates(node, method); @@ -371,7 +371,7 @@ namespace Grunwald.BooBinding.CodeCompletion public override void OnConstructor(AST.Constructor node) { - if (node.Body.Statements.Count == 0) return; + if (node.IsSynthetic && node.Parameters.Count == 0) return; Constructor ctor = new Constructor(GetModifier(node), GetRegion(node), GetClientRegion(node), OuterClass); ConvertAttributes(node, ctor); ConvertParameters(node.Parameters, ctor); diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs index 7b90d4c09c..9454ec7925 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs @@ -323,6 +323,9 @@ namespace Grunwald.BooBinding.CodeCompletion methods.Add(m); } } + if (methods.Count == 0) { + methods.Add(ICSharpCode.SharpDevelop.Dom.Constructor.CreateDefault(trr.ResolvedClass)); + } ResolveInvocation(methods, node.Arguments); } else { ClearResult();