Browse Source

Fixed bugs in boo code completion.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@606 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
1b7912d37f
  1. 10
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  2. 8
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  3. 3
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

10
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs

@ -109,7 +109,7 @@ namespace Grunwald.BooBinding.CodeCompletion
IMember ResolveCurrentMember(IClass callingClass) 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; if (callingClass == null) return null;
IMember best = null; IMember best = null;
int line = 0; int line = 0;
@ -178,7 +178,13 @@ namespace Grunwald.BooBinding.CodeCompletion
return new NamespaceResolveResult(callingClass, callingMember, ""); 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) if (expr == null)
return null; return null;
if (expr is AST.IntegerLiteralExpression) if (expr is AST.IntegerLiteralExpression)

8
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) 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); DomRegion region = GetClientRegion(node);
DefaultClass c = new DefaultClass(_cu, classType, GetModifier(node), region, OuterClass); DefaultClass c = new DefaultClass(_cu, classType, GetModifier(node), region, OuterClass);
c.FullyQualifiedName = node.FullName; c.FullyQualifiedName = node.FullName;
@ -353,12 +353,12 @@ namespace Grunwald.BooBinding.CodeCompletion
private void LeaveTypeDefinition(AST.TypeDefinition node) private void LeaveTypeDefinition(AST.TypeDefinition node)
{ {
DefaultClass c = _currentClass.Pop(); 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) 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); DefaultMethod method = new DefaultMethod(node.Name, null, GetModifier(node), GetRegion(node), GetClientRegion(node), OuterClass);
ConvertAttributes(node, method); ConvertAttributes(node, method);
ConvertTemplates(node, method); ConvertTemplates(node, method);
@ -371,7 +371,7 @@ namespace Grunwald.BooBinding.CodeCompletion
public override void OnConstructor(AST.Constructor node) 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); Constructor ctor = new Constructor(GetModifier(node), GetRegion(node), GetClientRegion(node), OuterClass);
ConvertAttributes(node, ctor); ConvertAttributes(node, ctor);
ConvertParameters(node.Parameters, ctor); ConvertParameters(node.Parameters, ctor);

3
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

@ -323,6 +323,9 @@ namespace Grunwald.BooBinding.CodeCompletion
methods.Add(m); methods.Add(m);
} }
} }
if (methods.Count == 0) {
methods.Add(ICSharpCode.SharpDevelop.Dom.Constructor.CreateDefault(trr.ResolvedClass));
}
ResolveInvocation(methods, node.Arguments); ResolveInvocation(methods, node.Arguments);
} else { } else {
ClearResult(); ClearResult();

Loading…
Cancel
Save