Browse Source

Fixed SD2-629: VBNetForeachLoopVariableTest.

Fixed some Boo code completion bugs.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@958 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
a2323c417a
  1. 20
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  2. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  3. 6
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  4. 4
      src/Main/Base/Project/Src/Project/MSBuildEngine.cs

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

@ -26,7 +26,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -26,7 +26,7 @@ namespace Grunwald.BooBinding.CodeCompletion
int caretLine;
int caretColumn;
IClass callingClass;
IMember callingMember;
IMethodOrProperty callingMember;
public IClass CallingClass {
get {
@ -34,7 +34,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -34,7 +34,7 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
public IMember CallingMember {
public IMethodOrProperty CallingMember {
get {
return callingMember;
}
@ -107,30 +107,34 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -107,30 +107,34 @@ namespace Grunwald.BooBinding.CodeCompletion
return callingClass;
}
IMember ResolveCurrentMember(IClass callingClass)
IMethodOrProperty ResolveCurrentMember(IClass callingClass)
{
//LoggingService.DebugFormatted("Getting current method... caretLine = {0}, caretColumn = {1}", caretLine, caretColumn);
if (callingClass == null) return null;
IMember best = null;
IMethodOrProperty best = null;
int line = 0;
foreach (IMember m in callingClass.Methods) {
foreach (IMethod m in callingClass.Methods) {
if (m.Region.BeginLine <= caretLine && m.Region.BeginLine > line) {
line = m.Region.BeginLine;
best = m;
}
}
foreach (IMember m in callingClass.Properties) {
foreach (IProperty m in callingClass.Properties) {
if (m.Region.BeginLine <= caretLine && m.Region.BeginLine > line) {
line = m.Region.BeginLine;
best = m;
}
}
if (callingClass.Region.IsEmpty) {
foreach (IMember m in callingClass.Methods) {
if (best == null || best.Region.EndLine < caretLine)
// maybe we are in Main method?
foreach (IMethod m in callingClass.Methods) {
if (m.Region.IsEmpty && !m.IsSynthetic) {
// the main method
if (best == null || best.BodyRegion.EndLine < caretLine)
return m;
}
}
}
return best;
}
#endregion

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

@ -152,7 +152,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -152,7 +152,7 @@ namespace Grunwald.BooBinding.CodeCompletion
return true;
}
IMethodOrProperty method = resolver.CallingMember as IMethodOrProperty;
IMethodOrProperty method = resolver.CallingMember;
if (method != null) {
foreach (IParameter p in method.Parameters) {
if (IsSameName(p.Name, identifier)) {

6
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -474,8 +474,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -474,8 +474,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
int endLine = bodyRegion.EndLine;
// Fix for SD2-511 (Code completion in inserted line)
if (language == SupportedLanguage.CSharp) {
// Do not do this for VB: the parser does not correct create the
// ForEachStatement when the method in truncated in the middle
// VB does not have the "inserted line looks like variable declaration"-problem
// anyways.
if (caretLine > startLine && caretLine < endLine)
endLine = caretLine;
}
int offset = 0;
for (int i = 0; i < startLine - 1; ++i) { // -1 because the startLine must be included

4
src/Main/Base/Project/Src/Project/MSBuildEngine.cs

@ -198,8 +198,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -198,8 +198,12 @@ namespace ICSharpCode.SharpDevelop.Project
engine.RegisterLogger(logger);
Microsoft.Build.BuildEngine.Project project = engine.CreateNewProject();
try {
project.Load(buildFile);
engine.BuildProject(project, targets);
} catch (InvalidProjectFileException ex) {
results.Errors.Add(new CompilerError(ex.ProjectFile, ex.LineNumber, ex.ColumnNumber, ex.ErrorCode, ex.Message));
}
LoggingService.Debug("MSBuild finished");
MSBuildEngine.isRunning = false;

Loading…
Cancel
Save