Browse Source

Fixed SD2-813: If statement not parsed

Fixed other small bugs.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1417 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
58dfc5abce
  1. 10
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  2. 7
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  3. 18
      src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs
  4. 2070
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  5. 6
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  6. 8
      src/Libraries/NRefactory/Test/Parser/Expressions/BinaryOperatorExpressionTests.cs
  7. 2
      src/Main/Base/Project/Src/Commands/FileCommands.cs
  8. 6
      src/Main/Base/Project/Src/Dom/Implementations/AnonymousMethodReturnType.cs
  9. 2
      src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs
  10. 9
      src/Main/Base/Project/Src/Project/Solution/Solution.cs
  11. 4
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs
  12. 13
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

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

@ -103,6 +103,14 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -103,6 +103,14 @@ namespace Grunwald.BooBinding.CodeCompletion
callingMember = ResolveCurrentMember(olderClass);
}
}
if (callingMember != null) {
if (caretLine > callingMember.BodyRegion.EndLine) {
this.caretLine = callingMember.BodyRegion.EndLine;
this.caretColumn = callingMember.BodyRegion.EndColumn - 1;
} else if (caretLine == callingMember.BodyRegion.EndLine && caretColumn >= callingMember.BodyRegion.EndColumn) {
this.caretColumn = callingMember.BodyRegion.EndColumn - 1;
}
}
return true;
}
@ -197,7 +205,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -197,7 +205,7 @@ namespace Grunwald.BooBinding.CodeCompletion
return new NamespaceResolveResult(callingClass, callingMember, "");
}
ResolveResult rr = NRResolver.GetResultFromDeclarationLine(callingClass, callingMember as IMethodOrProperty, caretLine, caretColumn, expressionResult.Expression);
ResolveResult rr = NRResolver.GetResultFromDeclarationLine(callingClass, callingMember as IMethodOrProperty, this.caretLine, this.caretColumn, expressionResult.Expression);
if (rr != null) return rr;
AST.Expression expr;

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

@ -84,6 +84,13 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -84,6 +84,13 @@ namespace Grunwald.BooBinding.CodeCompletion
void MakeMethodResult(IReturnType type, string methodName)
{
resolveResult = new MethodResolveResult(callingClass, resolver.CallingMember, type, methodName);
IMethod m = (resolveResult as MethodResolveResult).GetMethodIfSingleOverload();
if (m != null) {
AnonymousMethodReturnType amrt = new AnonymousMethodReturnType(cu);
amrt.MethodReturnType = m.ReturnType;
amrt.MethodParameters = m.Parameters;
resolveResult.ResolvedType = amrt;
}
}
void MakeNamespaceResult(string namespaceName)

18
src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
*/
using System;
using System.Collections;
using System.Reflection;
using NUnit.Framework;
using ICSharpCode.Core;
@ -217,8 +218,25 @@ namespace Grunwald.BooBinding.Tests @@ -217,8 +218,25 @@ namespace Grunwald.BooBinding.Tests
"\t\tif boo640b = boo640a as FieldInfo: /*640*/\n" +
"\t\t\tprint boo640b\n" +
"\t\n" +
"\tprint 'end of method'\n" +
"\t/*1*/\n";
[Test]
public void MyMethodCompletion()
{
MethodResolveResult rr = Resolve<MethodResolveResult>(regressionProg, "MyMethod", "/*1*/");
ArrayList arr = rr.GetCompletionData(lastPC);
Assert.IsNotNull(arr);
bool beginInvoke = false;
bool invoke = false;
foreach (IMember m in arr) {
if (m.Name == "BeginInvoke") beginInvoke = true;
if (m.Name == "Invoke") invoke = true;
}
Assert.IsTrue(beginInvoke, "beginInvoke");
Assert.IsTrue(invoke, "invoke");
}
[Test]
public void Boo629VariableScope()
{

2070
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

6
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -335,7 +335,11 @@ bool SkipGeneric(ref Token pt) @@ -335,7 +335,11 @@ bool SkipGeneric(ref Token pt)
--braces;
} else if (pt.kind == Tokens.LessThan) {
++braces;
} else if (pt.kind == Tokens.Semicolon || pt.kind == Tokens.OpenCurlyBrace || pt.kind == Tokens.CloseCurlyBrace || pt.kind == Tokens.EOF) {
} else if (pt.kind != Tokens.Identifier && pt.kind != Tokens.Comma
&& pt.kind != Tokens.OpenSquareBracket && pt.kind != Tokens.CloseSquareBracket
&& pt.kind != Tokens.Question
&& !Tokens.TypeKW[pt.kind])
{
return false;
}
}

8
src/Libraries/NRefactory/Test/Parser/Expressions/BinaryOperatorExpressionTests.cs

@ -235,6 +235,14 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -235,6 +235,14 @@ namespace ICSharpCode.NRefactory.Tests.AST
{
CSharpTestBinaryOperatorExpressionTest("a ?? b", BinaryOperatorType.NullCoalescing);
}
[Test]
public void CSharpLessThanOrGreaterTest()
{
const string expr = "i1 < 0 || i1 > (Count - 1)";
BinaryOperatorExpression boe = ParseUtilCSharp.ParseExpression<BinaryOperatorExpression>(expr);
Assert.AreEqual(BinaryOperatorType.LogicalOr, boe.Op);
}
#endregion
#region VB.NET

2
src/Main/Base/Project/Src/Commands/FileCommands.cs

@ -159,7 +159,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -159,7 +159,7 @@ namespace ICSharpCode.SharpDevelop.Commands
{
public static void SaveAll()
{
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection.ToArray()) {
if (content.IsViewOnly) {
continue;
}

6
src/Main/Base/Project/Src/Dom/Implementations/AnonymousMethodReturnType.cs

@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public sealed class AnonymousMethodReturnType : ProxyReturnType
{
IReturnType returnType;
List<IParameter> parameters = new List<IParameter>();
IList<IParameter> parameters = new List<IParameter>();
ICompilationUnit cu;
public AnonymousMethodReturnType(ICompilationUnit cu)
@ -45,6 +45,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -45,6 +45,10 @@ namespace ICSharpCode.SharpDevelop.Dom
get {
return parameters;
}
set {
if (value == null) throw new ArgumentNullException("value");
parameters = value;
}
}
public override bool IsDefaultReturnType {

2
src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs

@ -167,7 +167,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -167,7 +167,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
public string Negate(string booleanString)
{
return (!bool.Parse(booleanString)).ToString();
return "false".Equals(booleanString, StringComparison.OrdinalIgnoreCase).ToString();
}
public string GetFileName(string fileName)

9
src/Main/Base/Project/Src/Project/Solution/Solution.cs

@ -213,10 +213,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -213,10 +213,15 @@ namespace ICSharpCode.SharpDevelop.Project
return null;
}
public void Save()
{
Save(fileName);
try {
Save(fileName);
} catch (IOException ex) {
MessageService.ShowError("Could not save " + fileName + ":\n" + ex.Message);
} catch (UnauthorizedAccessException ex) {
MessageService.ShowError("Could not save " + fileName + ":\n" + ex.Message + "\n\nEnsure the file is writable.");
}
}
public SolutionFolder CreateFolder(string folderName)

4
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs

@ -95,6 +95,10 @@ namespace ICSharpCode.Core @@ -95,6 +95,10 @@ namespace ICSharpCode.Core
MessageService.ShowError("Error loading " + location + ":\n" + ex.Message);
newProject = new UnknownProject(location, title);
newProject.TypeGuid = projectTypeGuid;
} catch (UnauthorizedAccessException ex) {
MessageService.ShowError("Error loading " + location + ":\n" + ex.Message);
newProject = new UnknownProject(location, title);
newProject.TypeGuid = projectTypeGuid;
}
} else {
newProject = new UnknownProject(location, title);

13
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -287,12 +287,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -287,12 +287,7 @@ namespace ICSharpCode.SharpDevelop.Project
ILanguageBinding binding = LanguageBindingService.GetBindingPerProjectFile(fileName);
IProject project;
if (binding != null) {
try {
project = LanguageBindingService.LoadProject(fileName, solution.Name);
} catch (UnauthorizedAccessException ex) {
MessageService.ShowError(ex.Message);
return;
}
project = LanguageBindingService.LoadProject(fileName, solution.Name);
} else {
MessageService.ShowError(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.OpenCombine.InvalidProjectOrCombine}", new string[,] {{"FileName", fileName}}));
return;
@ -311,9 +306,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -311,9 +306,11 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
solution.FixSolutionConfiguration(new IProject[] { project });
solution.Save(solutionFile);
LoadSolution(solutionFile);
if (FileUtility.ObservedSave((NamedFileOperationDelegate)solution.Save, solutionFile) == FileOperationResult.OK) {
// only load when saved succesfully
LoadSolution(solutionFile);
}
}
public static void SaveSolution()

Loading…
Cancel
Save