Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2011-11-15 02:10:25 +0400
committerMike Krüger <mkrueger@xamarin.com>2011-11-15 02:10:25 +0400
commitb972d73fce7887ec03006527ca46eb5fbd574b6f (patch)
tree95cfb1620b7a86ddc90e45c454eae698b86e7b85 /main/contrib
parent3a218a784bb512283cb3427f613b2b78a8261a77 (diff)
[NRefactory] Merged with new nrefactory.
Diffstat (limited to 'main/contrib')
-rw-r--r--main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs17
-rw-r--r--main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs17
-rw-r--r--main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs83
3 files changed, 62 insertions, 55 deletions
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
index 8c168f3c81..3e3b18150e 100644
--- a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
+++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
@@ -91,7 +91,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
{
if (type is PrimitiveType) {
var pt = (PrimitiveType)type;
- Console.WriteLine (pt.Keyword);
switch (pt.Keyword) {
case "object":
yield return "o";
@@ -413,7 +412,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
var contextList = new CompletionDataWrapper (this);
-
var identifierStart = GetExpressionAtCursor ();
if (identifierStart != null && identifierStart.Item2 is VariableInitializer && location <= ((VariableInitializer)identifierStart.Item2).NameToken.EndLocation) {
return controlSpace ? HandleAccessorContext () ?? DefaultControlSpaceItems () : null;
@@ -421,8 +419,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (!(char.IsLetter (completionChar) || completionChar == '_') && (!controlSpace || identifierStart == null || !(identifierStart.Item2 is ArrayInitializerExpression))) {
return controlSpace ? HandleAccessorContext () ?? DefaultControlSpaceItems () : null;
}
-
- char prevCh = offset > 2 ? document.GetCharAt (offset - 2) : '\0';
+ char prevCh = offset > 2 ? document.GetCharAt (offset - 2) : ';';
char nextCh = offset < document.TextLength ? document.GetCharAt (offset) : ' ';
const string allowedChars = ";,[](){}+-*/%^?:&|~!<>=";
if (!Char.IsWhiteSpace (nextCh) && allowedChars.IndexOf (nextCh) < 0)
@@ -435,7 +432,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (identifierStart == null && !string.IsNullOrEmpty (token) && !(IsInsideComment (tokenIndex) || IsInsideString (tokenIndex))) {
char last = token [token.Length - 1];
if (char.IsLetterOrDigit (last) || last == '_' || token == ">") {
- return null;
+ return controlSpace ? DefaultControlSpaceItems () : null;
}
}
if (identifierStart == null)
@@ -607,7 +604,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
IEnumerable<ICompletionData> DefaultControlSpaceItems ()
{
var wrapper = new CompletionDataWrapper (this);
- while (offset > 0 && char.IsWhiteSpace (document.GetCharAt (offset))) {
+ while (offset > 1 && char.IsWhiteSpace (document.GetCharAt (offset))) {
offset--;
}
location = document.GetLocation (offset);
@@ -630,10 +627,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
void AddContextCompletion (CompletionDataWrapper wrapper, CSharpResolver state, AstNode node)
{
- if (state == null)
- return;
- foreach (var variable in state.LocalVariables) {
- wrapper.AddVariable (variable);
+ if (state != null) {
+ foreach (var variable in state.LocalVariables) {
+ wrapper.AddVariable (variable);
+ }
}
if (currentMember is IParameterizedMember) {
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
index 0f268ccc0a..b9570aca58 100644
--- a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
+++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
@@ -293,7 +293,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
bool wrapInClass = mt.Item2;
var wrapper = new StringBuilder ();
+
if (wrapInClass) {
+/* foreach (var child in Unit.Children) {
+ if (child is UsingDeclaration) {
+ var offset = document.GetOffset (child.StartLocation);
+ wrapper.Append (document.GetText (offset, document.GetOffset (child.EndLocation) - offset));
+ }
+ }*/
wrapper.Append ("class Stub {");
wrapper.AppendLine ();
}
@@ -313,7 +320,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else {
memberLocation = new TextLocation (1, 1);
}
-
using (var stream = new System.IO.StringReader (wrapper.ToString ())) {
var parser = new CSharpParser ();
return parser.Parse (stream, wrapInClass ? memberLocation.Line - 2 : 0);
@@ -337,6 +343,12 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else {
startOffset = 0;
}
+ while (startOffset > 0) {
+ char ch = document.GetCharAt (startOffset - 1);
+ if (ch != ' ' && ch != '\t')
+ break;
+ --startOffset;
+ }
if (cachedText == null)
cachedText = document.GetText (startOffset, offset - startOffset);
@@ -374,7 +386,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else {
return null;
}
-
+// Print (baseUnit);
/* var member = Unit.GetNodeAt<AttributedNode> (memberLocation);
var member2 = baseUnit.GetNodeAt<AttributedNode> (memberLocation);
member2.Remove ();
@@ -450,7 +462,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var visitor = new ResolveVisitor (csResolver, file, navigator);
visitor.Scan (unit);
-// Print (unit);
var state = visitor.GetResolverStateBefore (resolveNode);
var result = visitor.GetResolveResult (resolveNode);
if (ProjectContent is SimpleProjectContent)
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
index fdb57190a7..4722cf9b15 100644
--- a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
+++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
@@ -98,22 +98,21 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return null;
return factory.CreateConstructorProvider (attribute.Item1.Type);
}
-
var invocationExpression = ResolveExpression (invoke.Item1, invoke.Item2, invoke.Item3);
-
if (invocationExpression == null || invocationExpression.Item1 == null || invocationExpression.Item1.IsError)
return null;
resolveResult = invocationExpression.Item1;
if (resolveResult is MethodGroupResolveResult)
return factory.CreateMethodDataProvider (resolveResult as MethodGroupResolveResult);
if (resolveResult is MemberResolveResult) {
- if (resolveResult.Type.Kind == TypeKind.Delegate)
- return factory.CreateDelegateDataProvider (resolveResult.Type);
var mr = resolveResult as MemberResolveResult;
if (mr.Member is IMethod)
return factory.CreateMethodDataProvider ((IMethod)mr.Member);
}
+ if (resolveResult.Type.Kind == TypeKind.Delegate)
+ return factory.CreateDelegateDataProvider (resolveResult.Type);
+
//
// if (result.ExpressionContext == ExpressionContext.BaseConstructorCall) {
// if (resolveResult is ThisResolveResult)
@@ -188,44 +187,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
return result;
}
- /*
- public override bool GetParameterCompletionCommandOffset (out int cpos)
- {
- // Start calculating the parameter offset from the beginning of the
- // current member, instead of the beginning of the file.
- cpos = textEditorData.Caret.Offset - 1;
- var parsedDocument = Document.ParsedDocument;
- if (parsedDocument == null)
- return false;
- IMember mem = currentMember;
- if (mem == null || (mem is IType))
- return false;
- int startPos = textEditorData.LocationToOffset (mem.Region.BeginLine, mem.Region.BeginColumn);
- int parenDepth = 0;
- int chevronDepth = 0;
- while (cpos > startPos) {
- char c = textEditorData.GetCharAt (cpos);
- if (c == ')')
- parenDepth++;
- if (c == '>')
- chevronDepth++;
- if (parenDepth == 0 && c == '(' || chevronDepth == 0 && c == '<') {
- int p = MethodParameterDataProvider.GetCurrentParameterIndex (CompletionWidget, cpos + 1, startPos);
- if (p != -1) {
- cpos++;
- return true;
- } else {
- return false;
- }
- }
- if (c == '(')
- parenDepth--;
- if (c == '<')
- chevronDepth--;
- cpos--;
- }
- return false;
- }*/
public int GetCurrentParameterIndex (int triggerOffset)
{
@@ -320,6 +281,44 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return parameter.Pop () + 1;
}
+ /*
+ public override bool GetParameterCompletionCommandOffset (out int cpos)
+ {
+ // Start calculating the parameter offset from the beginning of the
+ // current member, instead of the beginning of the file.
+ cpos = textEditorData.Caret.Offset - 1;
+ var parsedDocument = Document.ParsedDocument;
+ if (parsedDocument == null)
+ return false;
+ IMember mem = currentMember;
+ if (mem == null || (mem is IType))
+ return false;
+ int startPos = textEditorData.LocationToOffset (mem.Region.BeginLine, mem.Region.BeginColumn);
+ int parenDepth = 0;
+ int chevronDepth = 0;
+ while (cpos > startPos) {
+ char c = textEditorData.GetCharAt (cpos);
+ if (c == ')')
+ parenDepth++;
+ if (c == '>')
+ chevronDepth++;
+ if (parenDepth == 0 && c == '(' || chevronDepth == 0 && c == '<') {
+ int p = MethodParameterDataProvider.GetCurrentParameterIndex (CompletionWidget, cpos + 1, startPos);
+ if (p != -1) {
+ cpos++;
+ return true;
+ } else {
+ return false;
+ }
+ }
+ if (c == '(')
+ parenDepth--;
+ if (c == '<')
+ chevronDepth--;
+ cpos--;
+ }
+ return false;
+ }*/
}
}