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

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

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

Loading…
Cancel
Save