diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 6bb6a3542a..5f35bd970f 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -501,7 +501,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion evt, parameterDefinition, currentMember, - currentType)); + currentType) + ); } return wrapper.Result; @@ -809,7 +810,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion nodes.Add(n.Parent); } var astResolver = new CSharpAstResolver(csResolver, identifierStart.Unit, CSharpParsedFile); - astResolver.ApplyNavigator(new NodeListResolveVisitorNavigator (nodes)); + astResolver.ApplyNavigator(new NodeListResolveVisitorNavigator(nodes)); try { csResolver = astResolver.GetResolverStateBefore(n); } catch (Exception) { @@ -1100,7 +1101,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion wrapper.Result.Add(factory.CreateLiteralCompletionData("global")); if (!(node is AstType)) { - if (currentMember != null) { + if (currentMember != null || node is Expression) { AddKeywords(wrapper, statementStartKeywords); AddKeywords(wrapper, expressionLevelKeywords); } else if (currentType != null) { @@ -1124,7 +1125,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion AddKeywords(wrapper, parameterTypePredecessorKeywords); } } - + AddKeywords(wrapper, primitiveTypesKeywords); if (currentMember != null) { wrapper.AddCustom("var"); diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs index 02a7f2b94c..d953a3730b 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs @@ -5076,6 +5076,31 @@ public class Test Assert.IsNotNull(provider.Find("static"), "'static' not found."); }); } + /// + /// Bug 4604 - [Resolver] Attribute Properties are not offered valid autocomplete choices + /// + [Test()] + public void TestBug4604() + { + CombinedProviderTest( +@" + public sealed class MyAttribute : System.Attribute + { + public bool SomeBool { + get; + set; + } + } +$[MyAttribute(SomeBool=t$ +public class Test +{ +} +", provider => { + Assert.IsNotNull(provider.Find("true"), "'true' not found."); + Assert.IsNotNull(provider.Find("false"), "'false' not found."); + }); + } + } }