Browse Source

Fixed type expected context.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
912908767c
  1. 49
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 1
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
  3. 1
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

49
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -464,7 +464,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -464,7 +464,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return accCtx;
return DefaultControlSpaceItems (null, controlSpace);
}
CSharpResolver csResolver;
AstNode n = identifierStart.Item2;
// Handle foreach (type name _
@ -769,13 +768,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -769,13 +768,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
void AddContextCompletion (CompletionDataWrapper wrapper, CSharpResolver state, AstNode node)
{
if (state != null) {
if (state != null && !(node is AstType)) {
foreach (var variable in state.LocalVariables) {
wrapper.AddVariable (variable);
}
}
if (currentMember is IUnresolvedParameterizedMember) {
if (currentMember is IUnresolvedParameterizedMember && !(node is AstType)) {
var param = (IParameterizedMember)currentMember.CreateResolved (ctx);
foreach (var p in param.Parameters) {
wrapper.AddVariable (p);
@ -799,25 +798,28 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -799,25 +798,28 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
AddTypesAndNamespaces (wrapper, state, node, typePred);
wrapper.Result.Add (factory.CreateLiteralCompletionData ("global"));
if (currentMember != null) {
AddKeywords (wrapper, statementStartKeywords);
AddKeywords (wrapper, expressionLevelKeywords);
} else if (currentType != null) {
AddKeywords (wrapper, typeLevelKeywords);
} else {
AddKeywords (wrapper, globalLevelKeywords);
}
var prop = currentMember as IUnresolvedProperty;
if (prop != null && prop.Setter != null && prop.Setter.Region.IsInside (location))
wrapper.AddCustom ("value");
if (currentMember is IUnresolvedEvent)
wrapper.AddCustom ("value");
if (IsInSwitchContext (node)) {
wrapper.AddCustom ("case");
if (!(node is AstType)) {
if (currentMember != null) {
AddKeywords (wrapper, statementStartKeywords);
AddKeywords (wrapper, expressionLevelKeywords);
} else if (currentType != null) {
AddKeywords (wrapper, typeLevelKeywords);
} else {
AddKeywords (wrapper, globalLevelKeywords);
}
var prop = currentMember as IUnresolvedProperty;
if (prop != null && prop.Setter != null && prop.Setter.Region.IsInside (location))
wrapper.AddCustom ("value");
if (currentMember is IUnresolvedEvent)
wrapper.AddCustom ("value");
if (IsInSwitchContext (node)) {
wrapper.AddCustom ("case");
}
AddKeywords (wrapper, primitiveTypesKeywords);
}
AddKeywords (wrapper, primitiveTypesKeywords);
wrapper.Result.AddRange (factory.CreateCodeTemplateCompletionData ());
if (node != null && node.Role == AstNode.Roles.Argument) {
@ -854,7 +856,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -854,7 +856,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
void AddTypesAndNamespaces (CompletionDataWrapper wrapper, CSharpResolver state, AstNode node, Predicate<IType> typePred = null, Predicate<IMember> memberPred = null)
{
var currentMember = ctx.CurrentMember;
if (currentType != null) {
for (var ct = currentType; ct != null; ct = ct.DeclaringTypeDefinition) {
foreach (var nestedType in ct.NestedTypes) {
@ -866,7 +867,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -866,7 +867,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
}
}
if (this.currentMember != null) {
if (this.currentMember != null && !(node is AstType)) {
var def = ctx.CurrentTypeDefinition ?? Compilation.MainAssembly.GetTypeDefinition (currentType);
foreach (var member in def.GetMembers ()) {
if (member is IMethod && ((IMethod)member).FullName == "System.Object.Finalize")
@ -1005,7 +1006,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1005,7 +1006,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
isAsType = resolved.Item1.Type;
}
}
var isAsWrapper = new CompletionDataWrapper (this);
AddTypesAndNamespaces (isAsWrapper, GetState (), null, t => isAsType == null || t.GetDefinition ().IsDerivedFrom (isAsType.GetDefinition ()));
return isAsWrapper.Result;
@ -1944,9 +1944,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1944,9 +1944,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var baseUnit = ParseStub ("");
var tmpUnit = baseUnit;
AstNode expr = baseUnit.GetNodeAt<IdentifierExpression> (location.Line, location.Column - 1);
if (expr == null)
expr = baseUnit.GetNodeAt<Attribute> (location.Line, location.Column - 1);
if (expr == null)
expr = baseUnit.GetNodeAt<AstType> (location.Line, location.Column - 1);
// try insertStatement
if (expr == null && baseUnit.GetNodeAt<EmptyStatement> (location.Line, location.Column) != null) {

1
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs

@ -343,7 +343,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -343,7 +343,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else {
memberLocation = new TextLocation (1, 1);
}
using (var stream = new System.IO.StringReader (wrapper.ToString ())) {
try {
var parser = new CSharpParser ();

1
ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

@ -319,7 +319,6 @@ namespace ICSharpCode.NRefactory.CSharp @@ -319,7 +319,6 @@ namespace ICSharpCode.NRefactory.CSharp
if (nspace.Containers != null) {
foreach (var container in nspace.Containers) {
Console.WriteLine ("add container:"+ container);
container.Accept (this);
}
}

Loading…
Cancel
Save