SymbolCompletionProviderTests.cs 250.8 KB
Newer Older
1 2
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

C
Cyrus Najmabadi 已提交
3
using System.Threading.Tasks;
4
using Microsoft.CodeAnalysis.Completion;
5
using Microsoft.CodeAnalysis.CSharp;
6 7
using Microsoft.CodeAnalysis.CSharp.Completion.Providers;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Completion.CompletionProviders;
8
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
9 10 11 12 13 14 15
using Roslyn.Test.Utilities;
using Xunit;

namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Completion.CompletionSetSources
{
    public partial class SymbolCompletionProviderTests : AbstractCSharpCompletionProviderTests
    {
16 17 18 19
        public SymbolCompletionProviderTests(CSharpTestWorkspaceFixture workspaceFixture) : base(workspaceFixture)
        {
        }

20
        internal override CompletionListProvider CreateCompletionProvider()
21 22 23 24
        {
            return new SymbolCompletionProvider();
        }

25
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
26
        public async Task EmptyFile()
27
        {
C
Cyrus Najmabadi 已提交
28 29
            await VerifyItemIsAbsentAsync(@"$$", @"String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
            await VerifyItemIsAbsentAsync(@"$$", @"System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
30 31
        }

32
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
33
        public async Task EmptyFile_Interactive()
34
        {
C
Cyrus Najmabadi 已提交
35 36
            await VerifyItemIsAbsentAsync(@"$$", @"String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
            await VerifyItemExistsAsync(@"$$", @"System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
37 38
        }

39
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
40
        public async Task EmptyFileWithUsing()
41
        {
C
Cyrus Najmabadi 已提交
42
            await VerifyItemIsAbsentAsync(@"using System;
43
$$", @"String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
C
Cyrus Najmabadi 已提交
44
            await VerifyItemIsAbsentAsync(@"using System;
45 46 47
$$", @"System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
        }

48
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
49
        public async Task EmptyFileWithUsing_Interactive()
50
        {
C
Cyrus Najmabadi 已提交
51
            await VerifyItemExistsAsync(@"using System;
52
$$", @"String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
C
Cyrus Najmabadi 已提交
53
            await VerifyItemExistsAsync(@"using System;
54 55 56
$$", @"System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
        }

57
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
58
        public async Task NotAfterHashR()
59
        {
C
Cyrus Najmabadi 已提交
60
            await VerifyItemIsAbsentAsync(@"#r $$", "@System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
61 62
        }

63
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
64
        public async Task NotAfterHashLoad()
65
        {
C
Cyrus Najmabadi 已提交
66
            await VerifyItemIsAbsentAsync(@"#load $$", "@System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
67 68
        }

69
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
70
        public async Task UsingDirective()
71
        {
C
Cyrus Najmabadi 已提交
72 73 74 75
            await VerifyItemIsAbsentAsync(@"using $$", @"String");
            await VerifyItemIsAbsentAsync(@"using $$ = System", @"System");
            await VerifyItemExistsAsync(@"using $$", @"System");
            await VerifyItemExistsAsync(@"using T = $$", @"System");
76 77
        }

78
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
79
        public async Task InactiveRegion()
80
        {
C
Cyrus Najmabadi 已提交
81
            await VerifyItemIsAbsentAsync(@"class C {
82 83 84
#if false 
$$
#endif", @"String");
C
Cyrus Najmabadi 已提交
85
            await VerifyItemIsAbsentAsync(@"class C {
86 87 88 89 90
#if false 
$$
#endif", @"System");
        }

91
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
92
        public async Task ActiveRegion()
93
        {
C
Cyrus Najmabadi 已提交
94
            await VerifyItemIsAbsentAsync(@"class C {
95 96 97
#if true 
$$
#endif", @"String");
C
Cyrus Najmabadi 已提交
98
            await VerifyItemExistsAsync(@"class C {
99 100 101 102 103
#if true 
$$
#endif", @"System");
        }

104
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
105
        public async Task InactiveRegionWithUsing()
106
        {
C
Cyrus Najmabadi 已提交
107
            await VerifyItemIsAbsentAsync(@"using System;
108 109 110 111 112

class C {
#if false 
$$
#endif", @"String");
C
Cyrus Najmabadi 已提交
113
            await VerifyItemIsAbsentAsync(@"using System;
114 115 116 117 118 119 120

class C {
#if false 
$$
#endif", @"System");
        }

121
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
122
        public async Task ActiveRegionWithUsing()
123
        {
C
Cyrus Najmabadi 已提交
124
            await VerifyItemExistsAsync(@"using System;
125 126 127 128 129

class C {
#if true 
$$
#endif", @"String");
C
Cyrus Najmabadi 已提交
130
            await VerifyItemExistsAsync(@"using System;
131 132 133 134 135 136 137

class C {
#if true 
$$
#endif", @"System");
        }

138
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
139
        public async Task SingleLineComment1()
140
        {
C
Cyrus Najmabadi 已提交
141
            await VerifyItemIsAbsentAsync(@"using System;
142 143 144

class C {
// $$", @"String");
C
Cyrus Najmabadi 已提交
145
            await VerifyItemIsAbsentAsync(@"using System;
146 147 148 149 150

class C {
// $$", @"System");
        }

151
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
152
        public async Task SingleLineComment2()
153
        {
C
Cyrus Najmabadi 已提交
154
            await VerifyItemIsAbsentAsync(@"using System;
155 156 157 158

class C {
// $$
", @"String");
C
Cyrus Najmabadi 已提交
159
            await VerifyItemIsAbsentAsync(@"using System;
160 161 162 163

class C {
// $$
", @"System");
C
Cyrus Najmabadi 已提交
164
            await VerifyItemIsAbsentAsync(@"using System;
165 166 167 168 169 170

class C {
  // $$
", @"System");
        }

171
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
172
        public async Task MultiLineComment()
173
        {
C
Cyrus Najmabadi 已提交
174
            await VerifyItemIsAbsentAsync(@"using System;
175 176 177

class C {
/*  $$", @"String");
C
Cyrus Najmabadi 已提交
178
            await VerifyItemIsAbsentAsync(@"using System;
179 180 181

class C {
/*  $$", @"System");
C
Cyrus Najmabadi 已提交
182
            await VerifyItemIsAbsentAsync(@"using System;
183 184 185

class C {
/*  $$   */", @"String");
C
Cyrus Najmabadi 已提交
186
            await VerifyItemIsAbsentAsync(@"using System;
187 188 189

class C {
/*  $$   */", @"System");
C
Cyrus Najmabadi 已提交
190
            await VerifyItemExistsAsync(@"using System;
191 192 193

class C {
/*    */$$", @"System");
C
Cyrus Najmabadi 已提交
194
            await VerifyItemExistsAsync(@"using System;
195 196 197 198

class C {
/*    */$$
", @"System");
C
Cyrus Najmabadi 已提交
199
            await VerifyItemExistsAsync(@"using System;
200 201 202 203 204 205

class C {
  /*    */$$
", @"System");
        }

206
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
207
        public async Task SingleLineXmlComment1()
208
        {
C
Cyrus Najmabadi 已提交
209
            await VerifyItemIsAbsentAsync(@"using System;
210 211 212

class C {
/// $$", @"String");
C
Cyrus Najmabadi 已提交
213
            await VerifyItemIsAbsentAsync(@"using System;
214 215 216 217 218

class C {
/// $$", @"System");
        }

219
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
220
        public async Task SingleLineXmlComment2()
221
        {
C
Cyrus Najmabadi 已提交
222
            await VerifyItemIsAbsentAsync(@"using System;
223 224 225 226

class C {
/// $$
", @"String");
C
Cyrus Najmabadi 已提交
227
            await VerifyItemIsAbsentAsync(@"using System;
228 229 230 231

class C {
/// $$
", @"System");
C
Cyrus Najmabadi 已提交
232
            await VerifyItemIsAbsentAsync(@"using System;
233 234 235 236 237 238

class C {
  /// $$
", @"System");
        }

239
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
240
        public async Task MultiLineXmlComment()
241
        {
C
Cyrus Najmabadi 已提交
242
            await VerifyItemIsAbsentAsync(@"using System;
243 244 245

class C {
/**  $$   */", @"String");
C
Cyrus Najmabadi 已提交
246
            await VerifyItemIsAbsentAsync(@"using System;
247 248 249

class C {
/**  $$   */", @"System");
C
Cyrus Najmabadi 已提交
250
            await VerifyItemExistsAsync(@"using System;
251 252 253

class C {
/**     */$$", @"System");
C
Cyrus Najmabadi 已提交
254
            await VerifyItemExistsAsync(@"using System;
255 256 257 258

class C {
/**     */$$
", @"System");
C
Cyrus Najmabadi 已提交
259
            await VerifyItemExistsAsync(@"using System;
260 261 262 263 264 265

class C {
  /**     */$$
", @"System");
        }

266
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
267
        public async Task OpenStringLiteral()
268
        {
C
Cyrus Najmabadi 已提交
269 270
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("string s = \"$$")), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("string s = \"$$")), @"System");
271 272
        }

273
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
274
        public async Task OpenStringLiteralInDirective()
275
        {
C
Cyrus Najmabadi 已提交
276 277
            await VerifyItemIsAbsentAsync("#r \"$$", "String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
            await VerifyItemIsAbsentAsync("#r \"$$", "System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
278 279
        }

280
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
281
        public async Task StringLiteral()
282
        {
C
Cyrus Najmabadi 已提交
283 284
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("string s = \"$$\";")), @"System");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("string s = \"$$\";")), @"String");
285 286
        }

287
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
288
        public async Task StringLiteralInDirective()
289
        {
C
Cyrus Najmabadi 已提交
290 291
            await VerifyItemIsAbsentAsync("#r \"$$\"", "String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
            await VerifyItemIsAbsentAsync("#r \"$$\"", "System", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
292 293
        }

294
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
295
        public async Task OpenCharLiteral()
296
        {
C
Cyrus Najmabadi 已提交
297 298
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("char c = '$$")), @"System");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod("char c = '$$")), @"String");
299 300
        }

301
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
302
        public async Task AssemblyAttribute1()
303
        {
C
Cyrus Najmabadi 已提交
304 305
            await VerifyItemExistsAsync(@"[assembly: $$]", @"System");
            await VerifyItemIsAbsentAsync(@"[assembly: $$]", @"String");
306 307
        }

308
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
309
        public async Task AssemblyAttribute2()
310
        {
C
Cyrus Najmabadi 已提交
311 312
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"[assembly: $$]"), @"System");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"[assembly: $$]"), @"AttributeUsage");
313 314
        }

315
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
316
        public async Task SystemAttributeIsNotAnAttribute()
317 318 319 320
        {
            var content = @"[$$]
class CL {}";

C
Cyrus Najmabadi 已提交
321
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", content), @"Attribute");
322 323
        }

324
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
325
        public async Task TypeAttribute()
326 327 328 329
        {
            var content = @"[$$]
class CL {}";

C
Cyrus Najmabadi 已提交
330 331
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"AttributeUsage");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
332 333
        }

334
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
335
        public async Task TypeParamAttribute()
336
        {
C
Cyrus Najmabadi 已提交
337 338
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<[A$$]T> {}"), @"AttributeUsage");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<[A$$]T> {}"), @"System");
339 340
        }

341
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
342
        public async Task MethodAttribute()
343 344 345 346 347
        {
            var content = @"class CL {
    [$$]
    void Method() {}
}";
C
Cyrus Najmabadi 已提交
348 349
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"AttributeUsage");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
350 351
        }

352
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
353
        public async Task MethodTypeParamAttribute()
354 355 356 357
        {
            var content = @"class CL{
    void Method<[A$$]T> () {}
}";
C
Cyrus Najmabadi 已提交
358 359
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"AttributeUsage");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
360 361
        }

362
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
363
        public async Task MethodParamAttribute()
364 365 366 367
        {
            var content = @"class CL{
    void Method ([$$]int i) {}
}";
C
Cyrus Najmabadi 已提交
368 369
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"AttributeUsage");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
370 371
        }

372
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
373
        public async Task NamespaceName1()
374
        {
C
Cyrus Najmabadi 已提交
375 376
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"namespace $$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"namespace $$"), @"System");
377 378
        }

379
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
380
        public async Task NamespaceName2()
381
        {
C
Cyrus Najmabadi 已提交
382 383
            await VerifyItemIsAbsentAsync(@"namespace $$", @"String");
            await VerifyItemIsAbsentAsync(@"namespace $$", @"System");
384 385
        }

386
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
387
        public async Task UnderNamespace()
388
        {
C
Cyrus Najmabadi 已提交
389 390
            await VerifyItemIsAbsentAsync(@"namespace NS { $$", @"String");
            await VerifyItemIsAbsentAsync(@"namespace NS { $$", @"System");
391 392
        }

393
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
394
        public async Task OutsideOfType1()
395
        {
C
Cyrus Najmabadi 已提交
396
            await VerifyItemIsAbsentAsync(@"namespace NS {
397 398
class CL {}
$$", @"String");
C
Cyrus Najmabadi 已提交
399
            await VerifyItemIsAbsentAsync(@"namespace NS {
400 401 402 403
class CL {}
$$", @"System");
        }

404
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
405
        public async Task OutsideOfType2()
406 407 408 409
        {
            var content = @"namespace NS {
class CL {}
$$";
C
Cyrus Najmabadi 已提交
410 411
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", content), @"System");
412 413
        }

414
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
415
        public async Task CompletionInsideProperty()
416 417 418 419 420 421 422 423 424
        {
            var content = @"class C
{
    private string name;
    public string Name
    {
        set
        {
            name = $$";
C
Cyrus Najmabadi 已提交
425 426
            await VerifyItemExistsAsync(content, @"value");
            await VerifyItemExistsAsync(content, @"C");
427 428
        }

429
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
430
        public async Task AfterDot()
431
        {
C
Cyrus Najmabadi 已提交
432 433
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"[assembly: A.$$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"[assembly: A.$$"), @"System");
434 435
        }

436
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
437
        public async Task UsingAlias()
438
        {
C
Cyrus Najmabadi 已提交
439 440
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"using MyType = $$"), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"using MyType = $$"), @"System");
441 442
        }

443
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
444
        public async Task IncompleteMember()
445 446 447 448
        {
            var content = @"class CL {
    $$
";
C
Cyrus Najmabadi 已提交
449 450
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
451 452
        }

453
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
454
        public async Task IncompleteMemberAccessibility()
455 456 457 458
        {
            var content = @"class CL {
    public $$
";
C
Cyrus Najmabadi 已提交
459 460
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
461 462
        }

463
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
464
        public async Task BadStatement()
465
        {
C
Cyrus Najmabadi 已提交
466 467
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = $$)c")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = $$)c")), @"System");
468 469
        }

470
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
471
        public async Task TypeTypeParameter()
472
        {
C
Cyrus Najmabadi 已提交
473 474
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<$$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<$$"), @"System");
475 476
        }

477
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
478
        public async Task TypeTypeParameterList()
479
        {
C
Cyrus Najmabadi 已提交
480 481
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T, $$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T, $$"), @"System");
482 483
        }

484
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
485
        public async Task CastExpressionTypePart()
486
        {
C
Cyrus Najmabadi 已提交
487 488
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = ($$)c")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = ($$)c")), @"System");
489 490
        }

491
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
492
        public async Task ObjectCreationExpression()
493
        {
C
Cyrus Najmabadi 已提交
494 495
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new $$")), @"System");
496 497
        }

498
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
499
        public async Task ArrayCreationExpression()
500
        {
C
Cyrus Najmabadi 已提交
501 502
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new $$ [")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new $$ [")), @"System");
503 504
        }

505
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
506
        public async Task StackAllocArrayCreationExpression()
507
        {
C
Cyrus Najmabadi 已提交
508 509
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = stackalloc $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = stackalloc $$")), @"System");
510 511
        }

512
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
513
        public async Task FromClauseTypeOptPart()
514
        {
C
Cyrus Najmabadi 已提交
515 516
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from $$ c")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from $$ c")), @"System");
517 518
        }

519
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
520
        public async Task JoinClause()
521
        {
C
Cyrus Najmabadi 已提交
522 523
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join $$ j")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join $$ j")), @"System");
524 525
        }

526
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
527
        public async Task DeclarationStatement()
528
        {
C
Cyrus Najmabadi 已提交
529 530
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ i =")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ i =")), @"System");
531 532
        }

533
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
534
        public async Task VariableDeclaration()
535
        {
C
Cyrus Najmabadi 已提交
536 537
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"fixed($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"fixed($$")), @"System");
538 539
        }

540
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
541
        public async Task ForEachStatement()
542
        {
C
Cyrus Najmabadi 已提交
543 544
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach($$")), @"System");
545 546
        }

547
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
548
        public async Task ForEachStatementNoToken()
549
        {
C
Cyrus Najmabadi 已提交
550 551
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach $$")), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach $$")), @"System");
552 553
        }

554
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
555
        public async Task CatchDeclaration()
556
        {
C
Cyrus Najmabadi 已提交
557 558
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"try {} catch($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"try {} catch($$")), @"System");
559 560
        }

561
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
562
        public async Task FieldDeclaration()
563 564 565
        {
            var content = @"class CL {
    $$ i";
C
Cyrus Najmabadi 已提交
566 567
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
568 569
        }

570
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
571
        public async Task EventFieldDeclaration()
572 573 574
        {
            var content = @"class CL {
    event $$";
C
Cyrus Najmabadi 已提交
575 576
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
577 578
        }

579
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
580
        public async Task ConversionOperatorDeclaration()
581 582 583
        {
            var content = @"class CL {
    explicit operator $$";
C
Cyrus Najmabadi 已提交
584 585
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
586 587
        }

588
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
589
        public async Task ConversionOperatorDeclarationNoToken()
590 591 592
        {
            var content = @"class CL {
    explicit $$";
C
Cyrus Najmabadi 已提交
593 594
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", content), @"System");
595 596
        }

597
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
598
        public async Task PropertyDeclaration()
599 600 601
        {
            var content = @"class CL {
    $$ Prop {";
C
Cyrus Najmabadi 已提交
602 603
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
604 605
        }

606
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
607
        public async Task EventDeclaration()
608 609 610
        {
            var content = @"class CL {
    event $$ Event {";
C
Cyrus Najmabadi 已提交
611 612
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
613 614
        }

615
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
616
        public async Task IndexerDeclaration()
617 618 619
        {
            var content = @"class CL {
    $$ this";
C
Cyrus Najmabadi 已提交
620 621
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
622 623
        }

624
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
625
        public async Task Parameter()
626 627 628
        {
            var content = @"class CL {
    void Method($$";
C
Cyrus Najmabadi 已提交
629 630
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
631 632
        }

633
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
634
        public async Task ArrayType()
635 636 637
        {
            var content = @"class CL {
    $$ [";
C
Cyrus Najmabadi 已提交
638 639
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
640 641
        }

642
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
643
        public async Task PointerType()
644 645 646
        {
            var content = @"class CL {
    $$ *";
C
Cyrus Najmabadi 已提交
647 648
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
649 650
        }

651
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
652
        public async Task NullableType()
653 654 655
        {
            var content = @"class CL {
    $$ ?";
C
Cyrus Najmabadi 已提交
656 657
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
658 659
        }

660
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
661
        public async Task DelegateDeclaration()
662 663 664
        {
            var content = @"class CL {
    delegate $$";
C
Cyrus Najmabadi 已提交
665 666
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
667 668
        }

669
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
670
        public async Task MethodDeclaration()
671 672 673
        {
            var content = @"class CL {
    $$ M(";
C
Cyrus Najmabadi 已提交
674 675
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
676 677
        }

678
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
679
        public async Task OperatorDeclaration()
680 681 682
        {
            var content = @"class CL {
    $$ operator";
C
Cyrus Najmabadi 已提交
683 684
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", content), @"System");
685 686
        }

687
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
688
        public async Task ParenthesizedExpression()
689
        {
C
Cyrus Najmabadi 已提交
690 691
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"($$")), @"System");
692 693
        }

694
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
695
        public async Task InvocationExpression()
696
        {
C
Cyrus Najmabadi 已提交
697 698
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$(")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$(")), @"System");
699 700
        }

701
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
702
        public async Task ElementAccessExpression()
703
        {
C
Cyrus Najmabadi 已提交
704 705
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$[")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$[")), @"System");
706 707
        }

708
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
709
        public async Task Argument()
710
        {
C
Cyrus Najmabadi 已提交
711 712
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"i[$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"i[$$")), @"System");
713 714
        }

715
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
716
        public async Task CastExpressionExpressionPart()
717
        {
C
Cyrus Najmabadi 已提交
718 719
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"(c)$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"(c)$$")), @"System");
720 721
        }

722
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
723
        public async Task FromClauseInPart()
724
        {
C
Cyrus Najmabadi 已提交
725 726
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in $$")), @"System");
727 728
        }

729
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
730
        public async Task LetClauseExpressionPart()
731
        {
C
Cyrus Najmabadi 已提交
732 733
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C let n = $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C let n = $$")), @"System");
734 735
        }

736
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
737
        public async Task OrderingExpressionPart()
738
        {
C
Cyrus Najmabadi 已提交
739 740
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C orderby $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C orderby $$")), @"System");
741 742
        }

743
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
744
        public async Task SelectClauseExpressionPart()
745
        {
C
Cyrus Najmabadi 已提交
746 747
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C select $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C select $$")), @"System");
748 749
        }

750
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
751
        public async Task ExpressionStatement()
752
        {
C
Cyrus Najmabadi 已提交
753 754
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$")), @"System");
755 756
        }

757
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
758
        public async Task ReturnStatement()
759
        {
C
Cyrus Najmabadi 已提交
760 761
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"return $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"return $$")), @"System");
762 763
        }

764
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
765
        public async Task ThrowStatement()
766
        {
C
Cyrus Najmabadi 已提交
767 768
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"throw $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"throw $$")), @"System");
769 770
        }

J
Jared Parsons 已提交
771
        [WorkItem(760097, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/760097")]
772
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
773
        public async Task YieldReturnStatement()
774
        {
C
Cyrus Najmabadi 已提交
775 776
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"yield return $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"yield return $$")), @"System");
777 778
        }

779
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
780
        public async Task ForEachStatementExpressionPart()
781
        {
C
Cyrus Najmabadi 已提交
782 783
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach(T t in $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"foreach(T t in $$")), @"System");
784 785
        }

786
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
787
        public async Task UsingStatementExpressionPart()
788
        {
C
Cyrus Najmabadi 已提交
789 790
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"using($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"using($$")), @"System");
791 792
        }

793
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
794
        public async Task LockStatement()
795
        {
C
Cyrus Najmabadi 已提交
796 797
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"lock($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"lock($$")), @"System");
798 799
        }

800
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
801
        public async Task EqualsValueClause()
802
        {
C
Cyrus Najmabadi 已提交
803 804
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var i = $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var i = $$")), @"System");
805 806
        }

807
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
808
        public async Task ForStatementInitializersPart()
809
        {
C
Cyrus Najmabadi 已提交
810 811
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for($$")), @"System");
812 813
        }

814
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
815
        public async Task ForStatementConditionOptPart()
816
        {
C
Cyrus Najmabadi 已提交
817 818
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for(i=0;$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for(i=0;$$")), @"System");
819 820
        }

821
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
822
        public async Task ForStatementIncrementorsPart()
823
        {
C
Cyrus Najmabadi 已提交
824 825
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for(i=0;i>10;$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"for(i=0;i>10;$$")), @"System");
826 827
        }

828
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
829
        public async Task DoStatementConditionPart()
830
        {
C
Cyrus Najmabadi 已提交
831 832
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"do {} while($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"do {} while($$")), @"System");
833 834
        }

835
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
836
        public async Task WhileStatementConditionPart()
837
        {
C
Cyrus Najmabadi 已提交
838 839
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"while($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"while($$")), @"System");
840 841
        }

842
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
843
        public async Task ArrayRankSpecifierSizesPart()
844
        {
C
Cyrus Najmabadi 已提交
845 846
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"int [$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"int [$$")), @"System");
847 848
        }

849
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
850
        public async Task PrefixUnaryExpression()
851
        {
C
Cyrus Najmabadi 已提交
852 853
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"+$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"+$$")), @"System");
854 855
        }

856
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
857
        public async Task PostfixUnaryExpression()
858
        {
C
Cyrus Najmabadi 已提交
859 860
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$++")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$++")), @"System");
861 862
        }

863
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
864
        public async Task BinaryExpressionLeftPart()
865
        {
C
Cyrus Najmabadi 已提交
866 867
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ + 1")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ + 1")), @"System");
868 869
        }

870
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
871
        public async Task BinaryExpressionRightPart()
872
        {
C
Cyrus Najmabadi 已提交
873 874
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"1 + $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"1 + $$")), @"System");
875 876
        }

877
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
878
        public async Task AssignmentExpressionLeftPart()
879
        {
C
Cyrus Najmabadi 已提交
880 881
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ = 1")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$ = 1")), @"System");
882 883
        }

884
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
885
        public async Task AssignmentExpressionRightPart()
886
        {
C
Cyrus Najmabadi 已提交
887 888
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"1 = $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"1 = $$")), @"System");
889 890
        }

891
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
892
        public async Task ConditionalExpressionConditionPart()
893
        {
C
Cyrus Najmabadi 已提交
894 895
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$? 1:")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"$$? 1:")), @"System");
896 897
        }

898
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
899
        public async Task ConditionalExpressionWhenTruePart()
900
        {
C
Cyrus Najmabadi 已提交
901 902
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"true? $$:")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"true? $$:")), @"System");
903 904
        }

905
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
906
        public async Task ConditionalExpressionWhenFalsePart()
907
        {
C
Cyrus Najmabadi 已提交
908 909
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"true? 1:$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"true? 1:$$")), @"System");
910 911
        }

912
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
913
        public async Task JoinClauseInExpressionPart()
914
        {
C
Cyrus Najmabadi 已提交
915 916
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in $$")), @"System");
917 918
        }

919
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
920
        public async Task JoinClauseLeftExpressionPart()
921
        {
C
Cyrus Najmabadi 已提交
922 923
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in P on $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in P on $$")), @"System");
924 925
        }

926
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
927
        public async Task JoinClauseRightExpressionPart()
928
        {
C
Cyrus Najmabadi 已提交
929 930
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in P on id equals $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C join p in P on id equals $$")), @"System");
931 932
        }

933
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
934
        public async Task WhereClauseConditionPart()
935
        {
C
Cyrus Najmabadi 已提交
936 937
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C where $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C where $$")), @"System");
938 939
        }

940
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
941
        public async Task GroupClauseGroupExpressionPart()
942
        {
C
Cyrus Najmabadi 已提交
943 944
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C group $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C group $$")), @"System");
945 946
        }

947
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
948
        public async Task GroupClauseByExpressionPart()
949
        {
C
Cyrus Najmabadi 已提交
950 951
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C group g by $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = from c in C group g by $$")), @"System");
952 953
        }

954
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
955
        public async Task IfStatement()
956
        {
C
Cyrus Najmabadi 已提交
957 958
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"if ($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"if ($$")), @"System");
959 960
        }

961
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
962
        public async Task SwitchStatement()
963
        {
C
Cyrus Najmabadi 已提交
964 965
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"switch($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"switch($$")), @"System");
966 967
        }

968
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
969
        public async Task SwitchLabelCase()
970 971 972 973
        {
            var content = @"switch(i)
    {
        case $$";
C
Cyrus Najmabadi 已提交
974 975
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(content)), @"System");
976 977
        }

978
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
979
        public async Task InitializerExpression()
980
        {
C
Cyrus Najmabadi 已提交
981 982
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new [] { $$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"var t = new [] { $$")), @"System");
983 984
        }

985
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
986
        public async Task TypeParameterConstraintClause()
987
        {
C
Cyrus Najmabadi 已提交
988 989
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<T> where T : $$"), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<T> where T : $$"), @"System");
990 991
        }

992
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
993
        public async Task TypeParameterConstraintClauseList()
994
        {
C
Cyrus Najmabadi 已提交
995 996
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<T> where T : A, $$"), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL<T> where T : A, $$"), @"System");
997 998
        }

999
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1000
        public async Task TypeParameterConstraintClauseAnotherWhere()
1001
        {
C
Cyrus Najmabadi 已提交
1002 1003
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T> where T : A where$$"), @"System");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T> where T : A where$$"), @"String");
1004 1005
        }

1006
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1007
        public async Task TypeSymbolOfTypeParameterConstraintClause1()
1008
        {
C
Cyrus Najmabadi 已提交
1009 1010 1011
            await VerifyItemExistsAsync(@"class CL<T> where $$", @"T");
            await VerifyItemExistsAsync(@"class CL{ delegate void F<T>() where $$} ", @"T");
            await VerifyItemExistsAsync(@"class CL{ void F<T>() where $$", @"T");
1012 1013
        }

1014
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1015
        public async Task TypeSymbolOfTypeParameterConstraintClause2()
1016
        {
C
Cyrus Najmabadi 已提交
1017 1018
            await VerifyItemIsAbsentAsync(@"class CL<T> where $$", @"System");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T> where $$"), @"String");
1019 1020
        }

1021
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1022
        public async Task TypeSymbolOfTypeParameterConstraintClause3()
1023
        {
C
Cyrus Najmabadi 已提交
1024 1025
            await VerifyItemIsAbsentAsync(@"class CL<T1> { void M<T2> where $$", @"T1");
            await VerifyItemExistsAsync(@"class CL<T1> { void M<T2>() where $$", @"T2");
1026 1027
        }

1028
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1029
        public async Task BaseList1()
1030
        {
C
Cyrus Najmabadi 已提交
1031 1032
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL : $$"), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL : $$"), @"System");
1033 1034
        }

1035
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1036
        public async Task BaseList2()
1037
        {
C
Cyrus Najmabadi 已提交
1038 1039
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL : B, $$"), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class CL : B, $$"), @"System");
1040 1041
        }

1042
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1043
        public async Task BaseListWhere()
1044
        {
C
Cyrus Najmabadi 已提交
1045 1046
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T> : B where$$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class CL<T> : B where$$"), @"System");
1047 1048
        }

1049
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1050
        public async Task AliasedName()
1051
        {
C
Cyrus Najmabadi 已提交
1052 1053
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", AddInsideMethod(@"global::$$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"global::$$")), @"System");
1054 1055
        }

1056
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1057
        public async Task AliasedNamespace()
1058
        {
C
Cyrus Najmabadi 已提交
1059
            await VerifyItemExistsAsync(AddUsingDirectives("using S = System;", AddInsideMethod(@"S.$$")), @"String");
1060 1061
        }

1062
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1063
        public async Task AliasedType()
1064
        {
C
Cyrus Najmabadi 已提交
1065
            await VerifyItemExistsAsync(AddUsingDirectives("using S = System.String;", AddInsideMethod(@"S.$$")), @"Empty");
1066 1067
        }

1068
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1069
        public async Task ConstructorInitializer()
1070
        {
C
Cyrus Najmabadi 已提交
1071 1072
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class C { C() : $$"), @"String");
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class C { C() : $$"), @"System");
1073 1074
        }

1075
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1076
        public async Task Typeof1()
1077
        {
C
Cyrus Najmabadi 已提交
1078 1079
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"typeof($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"typeof($$")), @"System");
1080 1081
        }

1082
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1083
        public async Task Typeof2()
1084
        {
C
Cyrus Najmabadi 已提交
1085
            await VerifyItemIsAbsentAsync(AddInsideMethod(@"var x = 0; typeof($$"), @"x");
1086 1087
        }

1088
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1089
        public async Task Sizeof1()
1090
        {
C
Cyrus Najmabadi 已提交
1091 1092
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"sizeof($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"sizeof($$")), @"System");
1093 1094
        }

1095
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1096
        public async Task Sizeof2()
1097
        {
C
Cyrus Najmabadi 已提交
1098
            await VerifyItemIsAbsentAsync(AddInsideMethod(@"var x = 0; sizeof($$"), @"x");
1099 1100
        }

1101
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1102
        public async Task Default1()
1103
        {
C
Cyrus Najmabadi 已提交
1104 1105
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"default($$")), @"String");
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", AddInsideMethod(@"default($$")), @"System");
1106 1107
        }

1108
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1109
        public async Task Default2()
1110
        {
C
Cyrus Najmabadi 已提交
1111
            await VerifyItemIsAbsentAsync(AddInsideMethod(@"var x = 0; default($$"), @"x");
1112 1113
        }

J
Jared Parsons 已提交
1114
        [WorkItem(543819, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543819")]
1115
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1116
        public async Task Checked()
1117
        {
C
Cyrus Najmabadi 已提交
1118
            await VerifyItemExistsAsync(AddInsideMethod(@"var x = 0; checked($$"), @"x");
1119 1120
        }

J
Jared Parsons 已提交
1121
        [WorkItem(543819, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543819")]
1122
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1123
        public async Task Unchecked()
1124
        {
C
Cyrus Najmabadi 已提交
1125
            await VerifyItemExistsAsync(AddInsideMethod(@"var x = 0; unchecked($$"), @"x");
1126 1127
        }

1128
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1129
        public async Task Locals()
1130
        {
C
Cyrus Najmabadi 已提交
1131
            await VerifyItemExistsAsync(@"class c { void M() { string foo; $$", "foo");
1132 1133
        }

1134
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1135
        public async Task Parameters()
1136
        {
C
Cyrus Najmabadi 已提交
1137
            await VerifyItemExistsAsync(@"class c { void M(string args) { $$", "args");
1138 1139
        }

1140
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1141
        public async Task CommonTypesInNewExpressionContext()
1142
        {
C
Cyrus Najmabadi 已提交
1143
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"class c { void M() { new $$"), "Exception");
1144 1145
        }

1146
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1147
        public async Task NoCompletionForUnboundTypes()
1148
        {
C
Cyrus Najmabadi 已提交
1149
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class c { void M() { foo.$$"), "Equals");
1150 1151
        }

1152
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1153
        public async Task NoParametersInTypeOf()
1154
        {
C
Cyrus Najmabadi 已提交
1155
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class c { void M(int x) { typeof($$"), "x");
1156 1157
        }

1158
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1159
        public async Task NoParametersInDefault()
1160
        {
C
Cyrus Najmabadi 已提交
1161
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"class c { void M(int x) { default($$"), "x");
1162 1163
        }

1164
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1165
        public async Task NoParametersInSizeOf()
1166
        {
C
Cyrus Najmabadi 已提交
1167
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"public class C { void M(int x) { unsafe { sizeof($$"), "x");
1168 1169
        }

1170
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1171
        public async Task NoParametersInGenericParameterList()
1172
        {
C
Cyrus Najmabadi 已提交
1173
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"public class Generic<T> { void M(int x) { Generic<$$"), "x");
1174 1175
        }

1176
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1177
        public async Task NoMembersAfterNullLiteral()
1178
        {
C
Cyrus Najmabadi 已提交
1179
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"public class C { void M() { null.$$"), "Equals");
1180 1181
        }

1182
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1183
        public async Task MembersAfterTrueLiteral()
1184
        {
C
Cyrus Najmabadi 已提交
1185
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { true.$$"), "Equals");
1186 1187
        }

1188
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1189
        public async Task MembersAfterFalseLiteral()
1190
        {
C
Cyrus Najmabadi 已提交
1191
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { false.$$"), "Equals");
1192 1193
        }

1194
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1195
        public async Task MembersAfterCharLiteral()
1196
        {
C
Cyrus Najmabadi 已提交
1197
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { 'c'.$$"), "Equals");
1198 1199
        }

1200
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1201
        public async Task MembersAfterStringLiteral()
1202
        {
C
Cyrus Najmabadi 已提交
1203
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { """".$$"), "Equals");
1204 1205
        }

1206
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1207
        public async Task MembersAfterVerbatimStringLiteral()
1208
        {
C
Cyrus Najmabadi 已提交
1209
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { @"""".$$"), "Equals");
1210 1211
        }

1212
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1213
        public async Task MembersAfterNumericLiteral()
1214 1215 1216
        {
            // NOTE: the Completion command handler will suppress this case if the user types '.',
            // but we still need to show members if the user specifically invokes statement completion here.
C
Cyrus Najmabadi 已提交
1217
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { 2.$$"), "Equals");
1218 1219
        }

1220
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1221
        public async Task NoMembersAfterParenthesizedNullLiteral()
1222
        {
C
Cyrus Najmabadi 已提交
1223
            await VerifyItemIsAbsentAsync(AddUsingDirectives("using System;", @"public class C { void M() { (null).$$"), "Equals");
1224 1225
        }

1226
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1227
        public async Task MembersAfterParenthesizedTrueLiteral()
1228
        {
C
Cyrus Najmabadi 已提交
1229
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { (true).$$"), "Equals");
1230 1231
        }

1232
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1233
        public async Task MembersAfterParenthesizedFalseLiteral()
1234
        {
C
Cyrus Najmabadi 已提交
1235
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { (false).$$"), "Equals");
1236 1237
        }

1238
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1239
        public async Task MembersAfterParenthesizedCharLiteral()
1240
        {
C
Cyrus Najmabadi 已提交
1241
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { ('c').$$"), "Equals");
1242 1243
        }

1244
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1245
        public async Task MembersAfterParenthesizedStringLiteral()
1246
        {
C
Cyrus Najmabadi 已提交
1247
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { ("""").$$"), "Equals");
1248 1249
        }

1250
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1251
        public async Task MembersAfterParenthesizedVerbatimStringLiteral()
1252
        {
C
Cyrus Najmabadi 已提交
1253
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { (@"""").$$"), "Equals");
1254 1255
        }

1256
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1257
        public async Task MembersAfterParenthesizedNumericLiteral()
1258
        {
C
Cyrus Najmabadi 已提交
1259
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { (2).$$"), "Equals");
1260 1261
        }

1262
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1263
        public async Task MembersAfterArithmeticExpression()
1264
        {
C
Cyrus Najmabadi 已提交
1265
            await VerifyItemExistsAsync(AddUsingDirectives("using System;", @"public class C { void M() { (1 + 1).$$"), "Equals");
1266 1267
        }

J
Jared Parsons 已提交
1268
        [WorkItem(539332, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539332")]
1269
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1270
        public async Task InstanceTypesAvailableInUsingAlias()
1271
        {
C
Cyrus Najmabadi 已提交
1272
            await VerifyItemExistsAsync(@"using S = System.$$", "String");
1273 1274
        }

J
Jared Parsons 已提交
1275
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1276
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1277
        public async Task InheritedMember1()
1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292
        {
            var markup = @"
class A
{
    private void Hidden() { }
    protected void Foo() { }
}
class B : A
{
    void Bar()
    {
        $$
    }
}
";
C
Cyrus Najmabadi 已提交
1293 1294
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
1295 1296
        }

J
Jared Parsons 已提交
1297
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1298
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1299
        public async Task InheritedMember2()
1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314
        {
            var markup = @"
class A
{
    private void Hidden() { }
    protected void Foo() { }
}
class B : A
{
    void Bar()
    {
        this.$$
    }
}
";
C
Cyrus Najmabadi 已提交
1315 1316
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
1317 1318
        }

J
Jared Parsons 已提交
1319
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1320
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1321
        public async Task InheritedMember3()
1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336
        {
            var markup = @"
class A
{
    private void Hidden() { }
    protected void Foo() { }
}
class B : A
{
    void Bar()
    {
        base.$$
    }
}
";
C
Cyrus Najmabadi 已提交
1337 1338 1339
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemIsAbsentAsync(markup, "Bar");
1340 1341
        }

J
Jared Parsons 已提交
1342
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1343
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1344
        public async Task InheritedStaticMember1()
1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359
        {
            var markup = @"
class A
{
    private static void Hidden() { }
    protected static void Foo() { }
}
class B : A
{
    void Bar()
    {
        $$
    }
}
";
C
Cyrus Najmabadi 已提交
1360 1361
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
1362 1363
        }

J
Jared Parsons 已提交
1364
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1365
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1366
        public async Task InheritedStaticMember2()
1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381
        {
            var markup = @"
class A
{
    private static void Hidden() { }
    protected static void Foo() { }
}
class B : A
{
    void Bar()
    {
        B.$$
    }
}
";
C
Cyrus Najmabadi 已提交
1382 1383
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
1384 1385
        }

J
Jared Parsons 已提交
1386
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1387
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1388
        public async Task InheritedStaticMember3()
1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403
        {
            var markup = @"
class A
{
     private static void Hidden() { }
     protected static void Foo() { }
}
class B : A
{
    void Bar()
    {
        A.$$
    }
}
";
C
Cyrus Najmabadi 已提交
1404 1405
            await VerifyItemIsAbsentAsync(markup, "Hidden");
            await VerifyItemExistsAsync(markup, "Foo");
1406 1407
        }

J
Jared Parsons 已提交
1408
        [WorkItem(539812, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539812")]
1409
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1410
        public async Task InheritedInstanceAndStaticMembers()
1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428
        {
            var markup = @"
class A
{
     private static void HiddenStatic() { }
     protected static void FooStatic() { }

     private void HiddenInstance() { }
     protected void FooInstance() { }
}
class B : A
{
    void Bar()
    {
        $$
    }
}
";
C
Cyrus Najmabadi 已提交
1429 1430 1431 1432
            await VerifyItemIsAbsentAsync(markup, "HiddenStatic");
            await VerifyItemExistsAsync(markup, "FooStatic");
            await VerifyItemIsAbsentAsync(markup, "HiddenInstance");
            await VerifyItemExistsAsync(markup, "FooInstance");
1433 1434
        }

J
Jared Parsons 已提交
1435
        [WorkItem(540155, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540155")]
1436
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1437
        public async Task ForLoopIndexer1()
1438 1439 1440 1441 1442 1443 1444 1445
        {
            var markup = @"
class C
{
    void M()
    {
        for (int i = 0; $$
";
C
Cyrus Najmabadi 已提交
1446
            await VerifyItemExistsAsync(markup, "i");
1447 1448
        }

J
Jared Parsons 已提交
1449
        [WorkItem(540155, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540155")]
1450
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1451
        public async Task ForLoopIndexer2()
1452 1453 1454 1455 1456 1457 1458 1459
        {
            var markup = @"
class C
{
    void M()
    {
        for (int i = 0; i < 10; $$
";
C
Cyrus Najmabadi 已提交
1460
            await VerifyItemExistsAsync(markup, "i");
1461 1462
        }

J
Jared Parsons 已提交
1463
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1464
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1465
        public async Task NoInstanceMembersAfterType1()
1466 1467 1468 1469 1470 1471 1472 1473 1474
        {
            var markup = @"
class C
{
    void M()
    {
        System.IDisposable.$$
";

C
Cyrus Najmabadi 已提交
1475
            await VerifyItemIsAbsentAsync(markup, "Dispose");
1476 1477
        }

J
Jared Parsons 已提交
1478
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1479
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1480
        public async Task NoInstanceMembersAfterType2()
1481 1482 1483 1484 1485 1486 1487 1488
        {
            var markup = @"
class C
{
    void M()
    {
        (System.IDisposable).$$
";
C
Cyrus Najmabadi 已提交
1489
            await VerifyItemIsAbsentAsync(markup, "Dispose");
1490 1491
        }

J
Jared Parsons 已提交
1492
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1493
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1494
        public async Task NoInstanceMembersAfterType3()
1495 1496 1497 1498 1499 1500 1501 1502 1503 1504
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        IDisposable.$$
";

C
Cyrus Najmabadi 已提交
1505
            await VerifyItemIsAbsentAsync(markup, "Dispose");
1506 1507
        }

J
Jared Parsons 已提交
1508
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1509
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1510
        public async Task NoInstanceMembersAfterType4()
1511 1512 1513 1514 1515 1516 1517 1518 1519 1520
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        (IDisposable).$$
";

C
Cyrus Najmabadi 已提交
1521
            await VerifyItemIsAbsentAsync(markup, "Dispose");
1522 1523
        }

J
Jared Parsons 已提交
1524
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1525
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1526
        public async Task StaticMembersAfterType1()
1527 1528 1529 1530 1531 1532 1533 1534 1535
        {
            var markup = @"
class C
{
    void M()
    {
        System.IDisposable.$$
";

C
Cyrus Najmabadi 已提交
1536
            await VerifyItemExistsAsync(markup, "ReferenceEquals");
1537 1538
        }

J
Jared Parsons 已提交
1539
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1540
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1541
        public async Task StaticMembersAfterType2()
1542 1543 1544 1545 1546 1547 1548 1549
        {
            var markup = @"
class C
{
    void M()
    {
        (System.IDisposable).$$
";
C
Cyrus Najmabadi 已提交
1550
            await VerifyItemIsAbsentAsync(markup, "ReferenceEquals");
1551 1552
        }

J
Jared Parsons 已提交
1553
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1554
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1555
        public async Task StaticMembersAfterType3()
1556 1557 1558 1559 1560 1561 1562 1563 1564 1565
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        IDisposable.$$
";

C
Cyrus Najmabadi 已提交
1566
            await VerifyItemExistsAsync(markup, "ReferenceEquals");
1567 1568
        }

J
Jared Parsons 已提交
1569
        [WorkItem(540012, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540012")]
1570
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1571
        public async Task StaticMembersAfterType4()
1572 1573 1574 1575 1576 1577 1578 1579 1580 1581
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        (IDisposable).$$
";

C
Cyrus Najmabadi 已提交
1582
            await VerifyItemIsAbsentAsync(markup, "ReferenceEquals");
1583 1584
        }

J
Jared Parsons 已提交
1585
        [WorkItem(540197, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540197")]
1586
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1587
        public async Task TypeParametersInClass()
1588 1589 1590 1591 1592 1593 1594
        {
            var markup = @"
class C<T, R>
{
    $$
}
";
C
Cyrus Najmabadi 已提交
1595
            await VerifyItemExistsAsync(markup, "T");
1596 1597
        }

J
Jared Parsons 已提交
1598
        [WorkItem(540212, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540212")]
1599
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1600
        public async Task AfterRefInLambda()
1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        Func<int, int> f = (ref $$
    }
}
";
C
Cyrus Najmabadi 已提交
1612
            await VerifyItemExistsAsync(markup, "String");
1613 1614
        }

J
Jared Parsons 已提交
1615
        [WorkItem(540212, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540212")]
1616
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1617
        public async Task AfterOutInLambda()
1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        Func<int, int> f = (out $$
    }
}
";
C
Cyrus Najmabadi 已提交
1629
            await VerifyItemExistsAsync(markup, "String");
1630 1631
        }

J
Jared Parsons 已提交
1632
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1633
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1634
        public async Task NestedType1()
1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645
        {
            var markup = @"
class Q
{
    $$
    class R
    {

    }
}
";
C
Cyrus Najmabadi 已提交
1646 1647
            await VerifyItemExistsAsync(markup, "Q");
            await VerifyItemExistsAsync(markup, "R");
1648 1649
        }

J
Jared Parsons 已提交
1650
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1651
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1652
        public async Task NestedType2()
1653 1654 1655 1656 1657 1658 1659 1660 1661 1662
        {
            var markup = @"
class Q
{
    class R
    {
        $$
    }
}
";
C
Cyrus Najmabadi 已提交
1663 1664
            await VerifyItemExistsAsync(markup, "Q");
            await VerifyItemExistsAsync(markup, "R");
1665 1666
        }

J
Jared Parsons 已提交
1667
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1668
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1669
        public async Task NestedType3()
1670 1671 1672 1673 1674 1675 1676 1677 1678 1679
        {
            var markup = @"
class Q
{
    class R
    {
    }
    $$
}
";
C
Cyrus Najmabadi 已提交
1680 1681
            await VerifyItemExistsAsync(markup, "Q");
            await VerifyItemExistsAsync(markup, "R");
1682 1683
        }

J
Jared Parsons 已提交
1684
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1685
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1686
        public async Task NestedType4_Regular()
1687 1688 1689 1690 1691 1692 1693 1694 1695
        {
            var markup = @"
class Q
{
    class R
    {
    }
}
$$"; // At EOF
C
Cyrus Najmabadi 已提交
1696 1697
            await VerifyItemIsAbsentAsync(markup, "Q", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
            await VerifyItemIsAbsentAsync(markup, "R", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Regular);
1698 1699
        }

J
Jared Parsons 已提交
1700
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1701
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1702
        public async Task NestedType4_Script()
1703 1704 1705 1706 1707 1708 1709 1710 1711
        {
            var markup = @"
class Q
{
    class R
    {
    }
}
$$"; // At EOF
C
Cyrus Najmabadi 已提交
1712 1713
            await VerifyItemExistsAsync(markup, "Q", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
            await VerifyItemIsAbsentAsync(markup, "R", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
1714 1715
        }

J
Jared Parsons 已提交
1716
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1717
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1718
        public async Task NestedType5()
1719 1720 1721 1722 1723 1724 1725 1726
        {
            var markup = @"
class Q
{
    class R
    {
    }
    $$"; // At EOF
C
Cyrus Najmabadi 已提交
1727 1728
            await VerifyItemExistsAsync(markup, "Q");
            await VerifyItemExistsAsync(markup, "R");
1729 1730
        }

J
Jared Parsons 已提交
1731
        [WorkItem(539217, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539217")]
1732
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1733
        public async Task NestedType6()
1734 1735 1736 1737 1738 1739 1740
        {
            var markup = @"
class Q
{
    class R
    {
        $$"; // At EOF
C
Cyrus Najmabadi 已提交
1741 1742
            await VerifyItemExistsAsync(markup, "Q");
            await VerifyItemExistsAsync(markup, "R");
1743 1744
        }

J
Jared Parsons 已提交
1745
        [WorkItem(540574, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540574")]
1746
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1747
        public async Task AmbiguityBetweenTypeAndLocal()
1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762
        {
            var markup = @"
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public void foo() {
        int i = 5;
        i.$$
        List<string> ml = new List<string>();
    }
}";

C
Cyrus Najmabadi 已提交
1763
            await VerifyItemExistsAsync(markup, "CompareTo");
1764 1765
        }

J
Jared Parsons 已提交
1766
        [WorkItem(540750, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540750")]
1767
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1768
        public async Task CompletionAfterNewInScript()
1769 1770 1771 1772 1773 1774
        {
            var markup = @"
using System;

new $$";

C
Cyrus Najmabadi 已提交
1775
            await VerifyItemExistsAsync(markup, "String", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
1776 1777
        }

J
Jared Parsons 已提交
1778
        [WorkItem(540933, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540933")]
1779
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1780
        public async Task ExtensionMethodsInScript()
1781 1782 1783 1784 1785 1786
        {
            var markup = @"
using System.Linq;
var a = new int[] { 1, 2 };
a.$$";

C
Cyrus Najmabadi 已提交
1787
            await VerifyItemExistsAsync(markup, "ElementAt<>", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
1788 1789
        }

J
Jared Parsons 已提交
1790
        [WorkItem(541019, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541019")]
1791
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1792
        public async Task ExpressionsInForLoopInitializer()
1793 1794 1795 1796 1797 1798 1799 1800 1801 1802
        {
            var markup = @"
public class C
{
    public void M()
    {
        int count = 0;
        for ($$
";

C
Cyrus Najmabadi 已提交
1803
            await VerifyItemExistsAsync(markup, "count");
1804 1805
        }

J
Jared Parsons 已提交
1806
        [WorkItem(541108, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541108")]
1807
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1808
        public async Task AfterLambdaExpression1()
1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819
        {
            var markup = @"
public class C
{
    public void M()
    {
        System.Func<int, int> f = arg => { arg = 2; return arg; }.$$
    }
}
";

C
Cyrus Najmabadi 已提交
1820
            await VerifyItemIsAbsentAsync(markup, "ToString");
1821 1822
        }

J
Jared Parsons 已提交
1823
        [WorkItem(541108, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541108")]
1824
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1825
        public async Task AfterLambdaExpression2()
1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836
        {
            var markup = @"
public class C
{
    public void M()
    {
        ((System.Func<int, int>)(arg => { arg = 2; return arg; })).$$
    }
}
";

C
Cyrus Najmabadi 已提交
1837 1838
            await VerifyItemExistsAsync(markup, "ToString");
            await VerifyItemExistsAsync(markup, "Invoke");
1839 1840
        }

J
Jared Parsons 已提交
1841
        [WorkItem(541216, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541216")]
1842
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1843
        public async Task InMultiLineCommentAtEndOfFile()
1844 1845 1846 1847 1848
        {
            var markup = @"
using System;
/*$$";

C
Cyrus Najmabadi 已提交
1849
            await VerifyItemIsAbsentAsync(markup, "Console", expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
1850 1851
        }

J
Jared Parsons 已提交
1852
        [WorkItem(541218, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541218")]
1853
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1854
        public async Task TypeParametersAtEndOfFile()
1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872
        {
            var markup = @"
using System;
using System.Collections.Generic;
using System.Linq;

class Outer<T>
{
class Inner<U>
{
static void F(T t, U u)
{
return;
}
public static void F(T t)
{
Outer<$$";

C
Cyrus Najmabadi 已提交
1873
            await VerifyItemExistsAsync(markup, "T");
1874 1875
        }

J
Jared Parsons 已提交
1876
        [WorkItem(552717, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/552717")]
1877
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1878
        public async Task LabelInCaseSwitchAbsentForCase()
1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890
        {
            var markup = @"
class Program
{
    static void Main()
    {
        int x;
        switch (x)
        {
            case 0:
                goto $$";

C
Cyrus Najmabadi 已提交
1891
            await VerifyItemIsAbsentAsync(markup, "case 0:");
1892 1893
        }

J
Jared Parsons 已提交
1894
        [WorkItem(552717, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/552717")]
1895
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1896
        public async Task LabelInCaseSwitchAbsentForDefaultWhenAbsent()
1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908
        {
            var markup = @"
class Program
{
    static void Main()
    {
        int x;
        switch (x)
        {
            case 0:
                goto $$";

C
Cyrus Najmabadi 已提交
1909
            await VerifyItemIsAbsentAsync(markup, "default:");
1910 1911
        }

J
Jared Parsons 已提交
1912
        [WorkItem(552717, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/552717")]
1913
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1914
        public async Task LabelInCaseSwitchPresentForDefault()
1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926
        {
            var markup = @"
class Program
{
    static void Main()
    {
        int x;
        switch (x)
        {
            default:
                goto $$";

C
Cyrus Najmabadi 已提交
1927
            await VerifyItemExistsAsync(markup, "default:");
1928 1929
        }

1930
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1931
        public async Task LabelAfterGoto1()
1932 1933 1934 1935 1936 1937 1938 1939 1940 1941
        {
            var markup = @"
class Program
{
    static void Main()
    {
    Foo:
        int Foo;
        goto $$";

C
Cyrus Najmabadi 已提交
1942
            await VerifyItemExistsAsync(markup, "Foo");
1943 1944
        }

1945
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1946
        public async Task LabelAfterGoto2()
1947 1948 1949 1950 1951 1952 1953 1954 1955 1956
        {
            var markup = @"
class Program
{
    static void Main()
    {
    Foo:
        int Foo;
        goto Foo $$";

C
Cyrus Najmabadi 已提交
1957
            await VerifyItemIsAbsentAsync(markup, "Foo");
1958 1959
        }

J
Jared Parsons 已提交
1960
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
1961
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1962
        public async Task AttributeName()
1963 1964 1965 1966 1967
        {
            var markup = @"
using System;
[$$";

C
Cyrus Najmabadi 已提交
1968 1969
            await VerifyItemExistsAsync(markup, "CLSCompliant");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliantAttribute");
1970 1971
        }

J
Jared Parsons 已提交
1972
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
1973
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1974
        public async Task AttributeNameAfterSpecifier()
1975 1976 1977 1978 1979 1980
        {
            var markup = @"
using System;
[assembly:$$
";

C
Cyrus Najmabadi 已提交
1981 1982
            await VerifyItemExistsAsync(markup, "CLSCompliant");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliantAttribute");
1983 1984
        }

J
Jared Parsons 已提交
1985
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
1986
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1987
        public async Task AttributeNameInAttributeList()
1988 1989 1990 1991 1992
        {
            var markup = @"
using System;
[CLSCompliant, $$";

C
Cyrus Najmabadi 已提交
1993 1994
            await VerifyItemExistsAsync(markup, "CLSCompliant");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliantAttribute");
1995 1996
        }

J
Jared Parsons 已提交
1997
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
1998
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
1999
        public async Task AttributeNameBeforeClass()
2000 2001 2002 2003 2004 2005
        {
            var markup = @"
using System;
[$$
class C { }";

C
Cyrus Najmabadi 已提交
2006 2007
            await VerifyItemExistsAsync(markup, "CLSCompliant");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliantAttribute");
2008 2009
        }

J
Jared Parsons 已提交
2010
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
2011
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2012
        public async Task AttributeNameAfterSpecifierBeforeClass()
2013 2014 2015 2016 2017 2018
        {
            var markup = @"
using System;
[assembly:$$
class C { }";

C
Cyrus Najmabadi 已提交
2019 2020
            await VerifyItemExistsAsync(markup, "CLSCompliant");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliantAttribute");
2021 2022
        }

J
Jared Parsons 已提交
2023
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
2024
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2025
        public async Task AttributeNameInAttributeArgumentList()
2026 2027 2028 2029 2030 2031
        {
            var markup = @"
using System;
[CLSCompliant($$
class C { }";

C
Cyrus Najmabadi 已提交
2032 2033
            await VerifyItemExistsAsync(markup, "CLSCompliantAttribute");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliant");
2034 2035
        }

J
Jared Parsons 已提交
2036
        [WorkItem(542225, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542225")]
2037
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2038
        public async Task AttributeNameInsideClass()
2039 2040 2041 2042 2043
        {
            var markup = @"
using System;
class C { $$ }";

C
Cyrus Najmabadi 已提交
2044 2045
            await VerifyItemExistsAsync(markup, "CLSCompliantAttribute");
            await VerifyItemIsAbsentAsync(markup, "CLSCompliant");
2046 2047
        }

J
Jared Parsons 已提交
2048
        [WorkItem(542954, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542954")]
2049
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2050
        public async Task NamespaceAliasInAttributeName1()
2051 2052 2053 2054 2055 2056 2057
        {
            var markup = @"
using Alias = System;

[$$
class C { }";

C
Cyrus Najmabadi 已提交
2058
            await VerifyItemExistsAsync(markup, "Alias");
2059 2060
        }

J
Jared Parsons 已提交
2061
        [WorkItem(542954, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542954")]
2062
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2063
        public async Task NamespaceAliasInAttributeName2()
2064 2065 2066 2067 2068 2069 2070 2071 2072
        {
            var markup = @"
using Alias = Foo;

namespace Foo { }

[$$
class C { }";

C
Cyrus Najmabadi 已提交
2073
            await VerifyItemIsAbsentAsync(markup, "Alias");
2074 2075
        }

J
Jared Parsons 已提交
2076
        [WorkItem(542954, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542954")]
2077
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2078
        public async Task NamespaceAliasInAttributeName3()
2079 2080 2081 2082 2083 2084 2085 2086 2087
        {
            var markup = @"
using Alias = Foo;

namespace Foo { class A : System.Attribute { } }

[$$
class C { }";

C
Cyrus Najmabadi 已提交
2088
            await VerifyItemExistsAsync(markup, "Alias");
2089 2090
        }

2091
        [Fact]
J
Jared Parsons 已提交
2092
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2093
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2094
        public async Task AttributeNameAfterNamespace()
2095 2096 2097 2098 2099 2100 2101 2102
        {
            var markup = @"
namespace Test
{
    class MyAttribute : System.Attribute { }
    [Test.$$
    class Program { }
}";
C
Cyrus Najmabadi 已提交
2103 2104
            await VerifyItemExistsAsync(markup, "My");
            await VerifyItemIsAbsentAsync(markup, "MyAttribute");
2105 2106
        }

2107
        [Fact]
J
Jared Parsons 已提交
2108
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2109
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2110
        public async Task AttributeNameAfterNamespace2()
2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121
        {
            var markup = @"
namespace Test
{
    namespace Two
    {
        class MyAttribute : System.Attribute { }
        [Test.Two.$$
        class Program { }
    }
}";
C
Cyrus Najmabadi 已提交
2122 2123
            await VerifyItemExistsAsync(markup, "My");
            await VerifyItemIsAbsentAsync(markup, "MyAttribute");
2124 2125
        }

2126
        [Fact]
J
Jared Parsons 已提交
2127
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2128
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2129
        public async Task AttributeNameWhenSuffixlessFormIsKeyword()
2130 2131 2132 2133 2134 2135 2136 2137
        {
            var markup = @"
namespace Test
{
    class namespaceAttribute : System.Attribute { }
    [$$
    class Program { }
}";
C
Cyrus Najmabadi 已提交
2138 2139 2140
            await VerifyItemExistsAsync(markup, "namespaceAttribute");
            await VerifyItemIsAbsentAsync(markup, "namespace");
            await VerifyItemIsAbsentAsync(markup, "@namespace");
2141 2142
        }

2143
        [Fact]
J
Jared Parsons 已提交
2144
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2145
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2146
        public async Task AttributeNameAfterNamespaceWhenSuffixlessFormIsKeyword()
2147 2148 2149 2150 2151 2152 2153 2154
        {
            var markup = @"
namespace Test
{
    class namespaceAttribute : System.Attribute { }
    [Test.$$
    class Program { }
}";
C
Cyrus Najmabadi 已提交
2155 2156 2157
            await VerifyItemExistsAsync(markup, "namespaceAttribute");
            await VerifyItemIsAbsentAsync(markup, "namespace");
            await VerifyItemIsAbsentAsync(markup, "@namespace");
2158 2159
        }

2160
        [Fact]
J
Jared Parsons 已提交
2161
        [WorkItem(545348, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545348")]
2162
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2163
        public async Task KeywordsUsedAsLocals()
2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177
        {
            var markup = @"
class C
{
    void M()
    {
        var error = 0;
        var method = 0;
        var @int = 0;
        Console.Write($$
    }
}";

            // preprocessor keyword
C
Cyrus Najmabadi 已提交
2178 2179
            await VerifyItemExistsAsync(markup, "error");
            await VerifyItemIsAbsentAsync(markup, "@error");
2180 2181

            // contextual keyword
C
Cyrus Najmabadi 已提交
2182 2183
            await VerifyItemExistsAsync(markup, "method");
            await VerifyItemIsAbsentAsync(markup, "@method");
2184 2185

            // full keyword
C
Cyrus Najmabadi 已提交
2186 2187
            await VerifyItemExistsAsync(markup, "@int");
            await VerifyItemIsAbsentAsync(markup, "int");
2188 2189
        }

2190
        [Fact]
J
Jared Parsons 已提交
2191
        [WorkItem(545348, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545348")]
2192
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2193
        public async Task QueryContextualKeywords1()
2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204
        {
            var markup = @"
class C
{
    void M()
    {
        var from = new[]{1,2,3};
        var r = from x in $$
    }
}";

C
Cyrus Najmabadi 已提交
2205 2206
            await VerifyItemExistsAsync(markup, "@from");
            await VerifyItemIsAbsentAsync(markup, "from");
2207 2208
        }

2209
        [Fact]
J
Jared Parsons 已提交
2210
        [WorkItem(545348, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545348")]
2211
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2212
        public async Task QueryContextualKeywords2()
2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225
        {
            var markup = @"
class C
{
    void M()
    {
        var where = new[] { 1, 2, 3 };
        var x = from @from in @where
                where $$ == @where.Length
                select @from;
    }
}";

C
Cyrus Najmabadi 已提交
2226 2227 2228 2229
            await VerifyItemExistsAsync(markup, "@from");
            await VerifyItemIsAbsentAsync(markup, "from");
            await VerifyItemExistsAsync(markup, "@where");
            await VerifyItemIsAbsentAsync(markup, "where");
2230 2231
        }

2232
        [Fact]
J
Jared Parsons 已提交
2233
        [WorkItem(545348, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545348")]
2234
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2235
        public async Task QueryContextualKeywords3()
2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248
        {
            var markup = @"
class C
{
    void M()
    {
        var where = new[] { 1, 2, 3 };
        var x = from @from in @where
                where @from == @where.Length
                select $$;
    }
}";

C
Cyrus Najmabadi 已提交
2249 2250 2251 2252
            await VerifyItemExistsAsync(markup, "@from");
            await VerifyItemIsAbsentAsync(markup, "from");
            await VerifyItemExistsAsync(markup, "@where");
            await VerifyItemIsAbsentAsync(markup, "where");
2253 2254
        }

2255
        [Fact]
J
Jared Parsons 已提交
2256
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2257
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2258
        public async Task AttributeNameAfterGlobalAlias()
2259 2260 2261 2262 2263
        {
            var markup = @"
class MyAttribute : System.Attribute { }
[global::$$
class Program { }";
C
Cyrus Najmabadi 已提交
2264 2265
            await VerifyItemExistsAsync(markup, "My", sourceCodeKind: SourceCodeKind.Regular);
            await VerifyItemIsAbsentAsync(markup, "MyAttribute", sourceCodeKind: SourceCodeKind.Regular);
2266 2267
        }

2268
        [Fact]
J
Jared Parsons 已提交
2269
        [WorkItem(545121, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545121")]
2270
        [Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2271
        public async Task AttributeNameAfterGlobalAliasWhenSuffixlessFormIsKeyword()
2272 2273 2274 2275 2276
        {
            var markup = @"
class namespaceAttribute : System.Attribute { }
[global::$$
class Program { }";
C
Cyrus Najmabadi 已提交
2277 2278 2279
            await VerifyItemExistsAsync(markup, "namespaceAttribute", sourceCodeKind: SourceCodeKind.Regular);
            await VerifyItemIsAbsentAsync(markup, "namespace", sourceCodeKind: SourceCodeKind.Regular);
            await VerifyItemIsAbsentAsync(markup, "@namespace", sourceCodeKind: SourceCodeKind.Regular);
2280 2281
        }

J
Jared Parsons 已提交
2282
        [WorkItem(542230, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542230")]
2283
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2284
        public async Task RangeVariableInQuerySelect()
2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295
        {
            var markup = @"
using System.Linq;
class P
{
    void M()
    {
        var src = new string[] { ""Foo"", ""Bar"" };
        var q = from x in src
                select x.$$";

C
Cyrus Najmabadi 已提交
2296
            await VerifyItemExistsAsync(markup, "Length");
2297 2298
        }

J
Jared Parsons 已提交
2299
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2300
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2301
        public async Task ConstantsInSwitchCase()
2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313
        {
            var markup = @"
class C
{
    public const int MAX_SIZE = 10;
    void M()
    {
        int i = 10;
        switch (i)
        {
            case $$";

C
Cyrus Najmabadi 已提交
2314
            await VerifyItemExistsAsync(markup, "MAX_SIZE");
2315 2316
        }

J
Jared Parsons 已提交
2317
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2318
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2319
        public async Task ConstantsInSwitchGotoCase()
2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334
        {
            var markup = @"
class C
{
    public const int MAX_SIZE = 10;
    void M()
    {
        int i = 10;
        switch (i)
        {
            case MAX_SIZE:
                break;
            case FOO:
                goto case $$";

C
Cyrus Najmabadi 已提交
2335
            await VerifyItemExistsAsync(markup, "MAX_SIZE");
2336 2337
        }

J
Jared Parsons 已提交
2338
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2339
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2340
        public async Task ConstantsInEnumMember()
2341 2342 2343 2344 2345 2346 2347 2348 2349
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    enum E
    {
        A = $$";

C
Cyrus Najmabadi 已提交
2350
            await VerifyItemExistsAsync(markup, "FOO");
2351 2352
        }

J
Jared Parsons 已提交
2353
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2354
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2355
        public async Task ConstantsInAttribute1()
2356 2357 2358 2359 2360 2361 2362
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    [System.AttributeUsage($$";

C
Cyrus Najmabadi 已提交
2363
            await VerifyItemExistsAsync(markup, "FOO");
2364 2365
        }

J
Jared Parsons 已提交
2366
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2367
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2368
        public async Task ConstantsInAttribute2()
2369 2370 2371 2372 2373 2374 2375
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    [System.AttributeUsage(FOO, $$";

C
Cyrus Najmabadi 已提交
2376
            await VerifyItemExistsAsync(markup, "FOO");
2377 2378
        }

J
Jared Parsons 已提交
2379
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2380
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2381
        public async Task ConstantsInAttribute3()
2382 2383 2384 2385 2386 2387 2388
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    [System.AttributeUsage(validOn: $$";

C
Cyrus Najmabadi 已提交
2389
            await VerifyItemExistsAsync(markup, "FOO");
2390 2391
        }

J
Jared Parsons 已提交
2392
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2393
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2394
        public async Task ConstantsInAttribute4()
2395 2396 2397 2398 2399 2400 2401
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    [System.AttributeUsage(AllowMultiple = $$";

C
Cyrus Najmabadi 已提交
2402
            await VerifyItemExistsAsync(markup, "FOO");
2403 2404
        }

J
Jared Parsons 已提交
2405
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2406
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2407
        public async Task ConstantsInParameterDefaultValue()
2408 2409 2410 2411 2412 2413 2414
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    void M(int x = $$";

C
Cyrus Najmabadi 已提交
2415
            await VerifyItemExistsAsync(markup, "FOO");
2416 2417
        }

J
Jared Parsons 已提交
2418
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2419
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2420
        public async Task ConstantsInConstField()
2421 2422 2423 2424 2425 2426 2427
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    const int BAR = $$";

C
Cyrus Najmabadi 已提交
2428
            await VerifyItemExistsAsync(markup, "FOO");
2429 2430
        }

J
Jared Parsons 已提交
2431
        [WorkItem(542429, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542429")]
2432
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2433
        public async Task ConstantsInConstLocal()
2434 2435 2436 2437 2438 2439 2440 2441 2442
        {
            var markup = @"
class C
{
    public const int FOO = 0;
    void M()
    {
        const int BAR = $$";

C
Cyrus Najmabadi 已提交
2443
            await VerifyItemExistsAsync(markup, "FOO");
2444 2445
        }

2446
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2447
        public async Task DescriptionWith1Overload()
2448 2449 2450 2451 2452 2453 2454 2455 2456
        {
            var markup = @"
class C
{
    void M(int i) { }
    void M()
    {
        $$";

C
Cyrus Najmabadi 已提交
2457
            await VerifyItemExistsAsync(markup, "M", expectedDescriptionOrNull: $"void C.M(int i) (+ 1 {FeaturesResources.Overload})");
2458 2459
        }

2460
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2461
        public async Task DescriptionWith2Overloads()
2462 2463 2464 2465 2466 2467 2468 2469 2470 2471
        {
            var markup = @"
class C
{
    void M(int i) { }
    void M(out int i) { }
    void M()
    {
        $$";

C
Cyrus Najmabadi 已提交
2472
            await VerifyItemExistsAsync(markup, "M", expectedDescriptionOrNull: $"void C.M(int i) (+ 2 {FeaturesResources.Overloads})");
2473 2474
        }

2475
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2476
        public async Task DescriptionWith1GenericOverload()
2477 2478 2479 2480 2481 2482 2483 2484 2485
        {
            var markup = @"
class C
{
    void M<T>(T i) { }
    void M<T>()
    {
        $$";

C
Cyrus Najmabadi 已提交
2486
            await VerifyItemExistsAsync(markup, "M<>", expectedDescriptionOrNull: $"void C.M<T>(T i) (+ 1 {FeaturesResources.GenericOverload})");
2487 2488
        }

2489
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2490
        public async Task DescriptionWith2GenericOverloads()
2491 2492 2493 2494 2495 2496 2497 2498 2499 2500
        {
            var markup = @"
class C
{
    void M<T>(int i) { }
    void M<T>(out int i) { }
    void M<T>()
    {
        $$";

C
Cyrus Najmabadi 已提交
2501
            await VerifyItemExistsAsync(markup, "M<>", expectedDescriptionOrNull: $"void C.M<T>(int i) (+ 2 {FeaturesResources.GenericOverloads})");
2502 2503
        }

2504
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2505
        public async Task DescriptionNamedGenericType()
2506 2507 2508 2509 2510 2511 2512 2513
        {
            var markup = @"
class C<T>
{
    void M()
    {
        $$";

C
Cyrus Najmabadi 已提交
2514
            await VerifyItemExistsAsync(markup, "C<>", expectedDescriptionOrNull: "class C<T>");
2515 2516
        }

2517
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2518
        public async Task DescriptionParameter()
2519 2520 2521 2522 2523 2524 2525 2526
        {
            var markup = @"
class C<T>
{
    void M(T foo)
    {
        $$";

C
Cyrus Najmabadi 已提交
2527
            await VerifyItemExistsAsync(markup, "foo", expectedDescriptionOrNull: $"({FeaturesResources.Parameter}) T foo");
2528 2529
        }

2530
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2531
        public async Task DescriptionGenericTypeParameter()
2532 2533 2534 2535 2536 2537 2538 2539
        {
            var markup = @"
class C<T>
{
    void M()
    {
        $$";

C
Cyrus Najmabadi 已提交
2540
            await VerifyItemExistsAsync(markup, "T", expectedDescriptionOrNull: $"T {FeaturesResources.In} C<T>");
2541 2542
        }

2543
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2544
        public async Task DescriptionAnonymousType()
2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555
        {
            var markup = @"
class C
{
    void M()
    {
        var a = new { };
        $$
";

            var expectedDescription =
2556
$@"({FeaturesResources.LocalVariable}) 'a a
2557

2558 2559
{FeaturesResources.AnonymousTypes}
    'a {FeaturesResources.Is} new {{  }}";
2560

C
Cyrus Najmabadi 已提交
2561
            await VerifyItemExistsAsync(markup, "a", expectedDescription);
2562 2563
        }

J
Jared Parsons 已提交
2564
        [WorkItem(543288, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543288")]
2565
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2566
        public async Task AfterNewInAnonymousType()
2567 2568 2569 2570 2571 2572 2573 2574 2575 2576
        {
            var markup = @"
class Program {
    string field = 0;
    static void Main()     {
        var an = new {  new $$  }; 
    }
}
";

C
Cyrus Najmabadi 已提交
2577
            await VerifyItemExistsAsync(markup, "Program");
2578 2579
        }

J
Jared Parsons 已提交
2580
        [WorkItem(543601, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543601")]
2581
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2582
        public async Task NoInstanceFieldsInStaticMethod()
2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594
        {
            var markup = @"
class C
{
    int x = 0;
    static void M()
    {
        $$
    }
}
";

C
Cyrus Najmabadi 已提交
2595
            await VerifyItemIsAbsentAsync(markup, "x");
2596 2597
        }

J
Jared Parsons 已提交
2598
        [WorkItem(543601, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543601")]
2599
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2600
        public async Task NoInstanceFieldsInStaticFieldInitializer()
2601 2602 2603 2604 2605 2606 2607 2608 2609
        {
            var markup = @"
class C
{
    int x = 0;
    static int y = $$
}
";

C
Cyrus Najmabadi 已提交
2610
            await VerifyItemIsAbsentAsync(markup, "x");
2611 2612
        }

J
Jared Parsons 已提交
2613
        [WorkItem(543601, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543601")]
2614
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2615
        public async Task StaticFieldsInStaticMethod()
2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627
        {
            var markup = @"
class C
{
    static int x = 0;
    static void M()
    {
        $$
    }
}
";

C
Cyrus Najmabadi 已提交
2628
            await VerifyItemExistsAsync(markup, "x");
2629 2630
        }

J
Jared Parsons 已提交
2631
        [WorkItem(543601, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543601")]
2632
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2633
        public async Task StaticFieldsInStaticFieldInitializer()
2634 2635 2636 2637 2638 2639 2640 2641 2642
        {
            var markup = @"
class C
{
    static int x = 0;
    static int y = $$
}
";

C
Cyrus Najmabadi 已提交
2643
            await VerifyItemExistsAsync(markup, "x");
2644 2645
        }

J
Jared Parsons 已提交
2646
        [WorkItem(543680, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543680")]
2647
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2648
        public async Task NoInstanceFieldsFromOuterClassInInstanceMethod()
2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663
        {
            var markup = @"
class outer
{
    int i;
    class inner
    {
        void M()
        {
            $$
        }
    }
}
";

C
Cyrus Najmabadi 已提交
2664
            await VerifyItemIsAbsentAsync(markup, "i");
2665 2666
        }

J
Jared Parsons 已提交
2667
        [WorkItem(543680, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543680")]
2668
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2669
        public async Task StaticFieldsFromOuterClassInInstanceMethod()
2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684
        {
            var markup = @"
class outer
{
    static int i;
    class inner
    {
        void M()
        {
            $$
        }
    }
}
";

C
Cyrus Najmabadi 已提交
2685
            await VerifyItemExistsAsync(markup, "i");
2686 2687
        }

J
Jared Parsons 已提交
2688
        [WorkItem(543104, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543104")]
2689
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2690
        public async Task OnlyEnumMembersInEnumMemberAccess()
2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702
        {
            var markup = @"
class C
{
    enum x {a,b,c}
    void M()
    {
        x.$$
    }
}
";

C
Cyrus Najmabadi 已提交
2703 2704 2705 2706
            await VerifyItemExistsAsync(markup, "a");
            await VerifyItemExistsAsync(markup, "b");
            await VerifyItemExistsAsync(markup, "c");
            await VerifyItemIsAbsentAsync(markup, "Equals");
2707 2708
        }

J
Jared Parsons 已提交
2709
        [WorkItem(543104, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543104")]
2710
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2711
        public async Task NoEnumMembersInEnumLocalAccess()
2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724
        {
            var markup = @"
class C
{
    enum x {a,b,c}
    void M()
    {
        var y = x.a;
        y.$$
    }
}
";

C
Cyrus Najmabadi 已提交
2725 2726 2727 2728
            await VerifyItemIsAbsentAsync(markup, "a");
            await VerifyItemIsAbsentAsync(markup, "b");
            await VerifyItemIsAbsentAsync(markup, "c");
            await VerifyItemExistsAsync(markup, "Equals");
2729 2730
        }

J
Jared Parsons 已提交
2731
        [WorkItem(529138, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529138")]
2732
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2733
        public async Task AfterLambdaParameterDot()
2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751
        {
            var markup = @"
using System;
using System.Linq;
class A
{
    public event Func<String, String> E;
}
 
class Program
{
    static void Main(string[] args)
    {
        new A().E += ss => ss.$$
    }
}
";

C
Cyrus Najmabadi 已提交
2752
            await VerifyItemExistsAsync(markup, "Substring");
2753 2754
        }

2755
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2756
        public async Task ValueNotAtRoot_Interactive()
2757
        {
C
Cyrus Najmabadi 已提交
2758
            await VerifyItemIsAbsentAsync(
2759 2760 2761 2762 2763
@"$$",
"value",
expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
        }

2764
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2765
        public async Task ValueNotAfterClass_Interactive()
2766
        {
C
Cyrus Najmabadi 已提交
2767
            await VerifyItemIsAbsentAsync(
2768 2769 2770 2771 2772 2773
@"class C { }
$$",
"value",
expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
        }

2774
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2775
        public async Task ValueNotAfterGlobalStatement_Interactive()
2776
        {
C
Cyrus Najmabadi 已提交
2777
            await VerifyItemIsAbsentAsync(
2778 2779 2780 2781 2782 2783
@"System.Console.WriteLine();
$$",
"value",
expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
        }

2784
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2785
        public async Task ValueNotAfterGlobalVariableDeclaration_Interactive()
2786
        {
C
Cyrus Najmabadi 已提交
2787
            await VerifyItemIsAbsentAsync(
2788 2789 2790 2791 2792 2793
@"int i = 0;
$$",
"value",
expectedDescriptionOrNull: null, sourceCodeKind: SourceCodeKind.Script);
        }

2794
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2795
        public async Task ValueNotInUsingAlias()
2796
        {
C
Cyrus Najmabadi 已提交
2797
            await VerifyItemIsAbsentAsync(
2798 2799 2800 2801
@"using Foo = $$",
"value");
        }

2802
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2803
        public async Task ValueNotInEmptyStatement()
2804
        {
C
Cyrus Najmabadi 已提交
2805
            await VerifyItemIsAbsentAsync(AddInsideMethod(
2806 2807 2808 2809
@"$$"),
"value");
        }

2810
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2811
        public async Task ValueInsideSetter()
2812
        {
C
Cyrus Najmabadi 已提交
2813
            await VerifyItemExistsAsync(
2814 2815 2816 2817 2818 2819 2820
@"class C {
    int Foo {
      set {
        $$",
"value");
        }

2821
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2822
        public async Task ValueInsideAdder()
2823
        {
C
Cyrus Najmabadi 已提交
2824
            await VerifyItemExistsAsync(
2825 2826 2827 2828 2829 2830 2831
@"class C {
    event int Foo {
      add {
        $$",
"value");
        }

2832
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2833
        public async Task ValueInsideRemover()
2834
        {
C
Cyrus Najmabadi 已提交
2835
            await VerifyItemExistsAsync(
2836 2837 2838 2839 2840 2841 2842
@"class C {
    event int Foo {
      remove {
        $$",
"value");
        }

2843
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2844
        public async Task ValueNotAfterDot()
2845
        {
C
Cyrus Najmabadi 已提交
2846
            await VerifyItemIsAbsentAsync(
2847 2848 2849 2850 2851 2852 2853
@"class C {
    int Foo {
      set {
        this.$$",
"value");
        }

2854
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2855
        public async Task ValueNotAfterArrow()
2856
        {
C
Cyrus Najmabadi 已提交
2857
            await VerifyItemIsAbsentAsync(
2858 2859 2860 2861 2862 2863 2864
@"class C {
    int Foo {
      set {
        a->$$",
"value");
        }

2865
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2866
        public async Task ValueNotAfterColonColon()
2867
        {
C
Cyrus Najmabadi 已提交
2868
            await VerifyItemIsAbsentAsync(
2869 2870 2871 2872 2873 2874 2875
@"class C {
    int Foo {
      set {
        a::$$",
"value");
        }

2876
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2877
        public async Task ValueNotInGetter()
2878
        {
C
Cyrus Najmabadi 已提交
2879
            await VerifyItemIsAbsentAsync(
2880 2881 2882 2883 2884 2885 2886
@"class C {
    int Foo {
      get {
        $$",
"value");
        }

J
Jared Parsons 已提交
2887
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2888
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2889
        public async Task NotAfterNullableType()
2890
        {
C
Cyrus Najmabadi 已提交
2891
            await VerifyItemIsAbsentAsync(
2892 2893 2894 2895 2896 2897 2898
@"class C {
    void M() {
        int foo = 0;
        C? $$",
"foo");
        }

J
Jared Parsons 已提交
2899
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2900
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2901
        public async Task NotAfterNullableTypeAlias()
2902
        {
C
Cyrus Najmabadi 已提交
2903
            await VerifyItemIsAbsentAsync(
2904 2905 2906 2907 2908 2909 2910 2911
@"using A = System.Int32;
class C {
    void M() {
        int foo = 0;
        A? $$",
"foo");
        }

J
Jared Parsons 已提交
2912
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2913
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
2914
        public async Task NotAfterNullableTypeAndPartialIdentifier()
2915
        {
C
Cyrus Najmabadi 已提交
2916
            await VerifyItemIsAbsentAsync(
2917 2918 2919 2920 2921 2922 2923
@"class C {
    void M() {
        int foo = 0;
        C? f$$",
"foo");
        }

J
Jared Parsons 已提交
2924
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2925
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2926
        public async Task AfterQuestionMarkInConditional()
2927
        {
C
Cyrus Najmabadi 已提交
2928
            await VerifyItemExistsAsync(
2929 2930 2931 2932 2933 2934 2935 2936
@"class C {
    void M() {
        bool b = false;
        int foo = 0;
        b? $$",
"foo");
        }

J
Jared Parsons 已提交
2937
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2938
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2939
        public async Task AfterQuestionMarkAndPartialIdentifierInConditional()
2940
        {
C
Cyrus Najmabadi 已提交
2941
            await VerifyItemExistsAsync(
2942 2943 2944 2945 2946 2947 2948 2949
@"class C {
    void M() {
        bool b = false;
        int foo = 0;
        b? f$$",
"foo");
        }

J
Jared Parsons 已提交
2950
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2951
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2952
        public async Task NotAfterPointerType()
2953
        {
C
Cyrus Najmabadi 已提交
2954
            await VerifyItemIsAbsentAsync(
2955 2956 2957 2958 2959 2960 2961
@"class C {
    void M() {
        int foo = 0;
        C* $$",
"foo");
        }

J
Jared Parsons 已提交
2962
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2963
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2964
        public async Task NotAfterPointerTypeAlias()
2965
        {
C
Cyrus Najmabadi 已提交
2966
            await VerifyItemIsAbsentAsync(
2967 2968 2969 2970 2971 2972 2973 2974
@"using A = System.Int32;
class C {
    void M() {
        int foo = 0;
        A* $$",
"foo");
        }

J
Jared Parsons 已提交
2975
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2976
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2977
        public async Task NotAfterPointerTypeAndPartialIdentifier()
2978
        {
C
Cyrus Najmabadi 已提交
2979
            await VerifyItemIsAbsentAsync(
2980 2981 2982 2983 2984 2985 2986
@"class C {
    void M() {
        int foo = 0;
        C* f$$",
"foo");
        }

J
Jared Parsons 已提交
2987
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
2988
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
2989
        public async Task AfterAsteriskInMultiplication()
2990
        {
C
Cyrus Najmabadi 已提交
2991
            await VerifyItemExistsAsync(
2992 2993 2994 2995 2996 2997 2998 2999
@"class C {
    void M() {
        int i = 0;
        int foo = 0;
        i* $$",
"foo");
        }

J
Jared Parsons 已提交
3000
        [WorkItem(544205, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544205")]
3001
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3002
        public async Task AfterAsteriskAndPartialIdentifierInMultiplication()
3003
        {
C
Cyrus Najmabadi 已提交
3004
            await VerifyItemExistsAsync(
3005 3006 3007 3008 3009 3010 3011 3012
@"class C {
    void M() {
        int i = 0;
        int foo = 0;
        i* f$$",
"foo");
        }

J
Jared Parsons 已提交
3013
        [WorkItem(543868, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543868")]
3014
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3015
        public async Task AfterEventFieldDeclaredInSameType()
3016
        {
C
Cyrus Najmabadi 已提交
3017
            await VerifyItemExistsAsync(
3018 3019 3020 3021 3022 3023 3024
@"class C {
    public event System.EventHandler E;
    void M() {
        E.$$",
"Invoke");
        }

J
Jared Parsons 已提交
3025
        [WorkItem(543868, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543868")]
3026
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3027
        public async Task NotAfterFullEventDeclaredInSameType()
3028
        {
C
Cyrus Najmabadi 已提交
3029
            await VerifyItemIsAbsentAsync(
3030 3031 3032 3033 3034 3035 3036
@"class C {
        public event System.EventHandler E { add { } remove { } }
    void M() {
        E.$$",
"Invoke");
        }

J
Jared Parsons 已提交
3037
        [WorkItem(543868, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543868")]
3038
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3039
        public async Task NotAfterEventDeclaredInDifferentType()
3040
        {
C
Cyrus Najmabadi 已提交
3041
            await VerifyItemIsAbsentAsync(
3042 3043 3044 3045 3046 3047
@"class C {
    void M() {
        System.Console.CancelKeyPress.$$",
"Invoke");
        }

J
Jared Parsons 已提交
3048
        [WorkItem(544219, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544219")]
3049
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3050
        public async Task NotInObjectInitializerMemberContext()
3051
        {
C
Cyrus Najmabadi 已提交
3052
            await VerifyItemIsAbsentAsync(@"
3053 3054 3055 3056 3057 3058 3059 3060 3061
class C
{
    public int x, y;
    void M()
    {
        var c = new C { x = 2, y = 3, $$",
"x");
        }

J
Jared Parsons 已提交
3062
        [WorkItem(544219, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544219")]
3063
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3064
        public async Task AfterPointerMemberAccess()
3065
        {
C
Cyrus Najmabadi 已提交
3066
            await VerifyItemExistsAsync(@"
3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083
struct MyStruct
{
    public int MyField;
}

class Program
{
    static unsafe void Main(string[] args)
    {
        MyStruct s = new MyStruct();
        MyStruct* ptr = &s;
        ptr->$$
    }}",
"MyField");
        }

        // After @ both X and XAttribute are legal. We think this is an edge case in the language and
3084
        // are not fixing the bug 11931. This test captures that XAttribute doesn't show up indeed.
3085
        [WorkItem(11931, "DevDiv_Projects/Roslyn")]
3086
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3087
        public async Task VerbatimAttributes()
3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100
        {
            var code = @"
using System;
public class X : Attribute
{ }
 
public class XAttribute : Attribute
{ }
 
 
[@X$$]
class Class3 { }
";
C
Cyrus Najmabadi 已提交
3101 3102
            await VerifyItemExistsAsync(code, "X");
            await Assert.ThrowsAsync<Xunit.Sdk.TrueException>(async () => await VerifyItemExistsAsync(code, "XAttribute"));
3103 3104
        }

J
Jared Parsons 已提交
3105
        [WorkItem(544928, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544928")]
3106
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3107
        public async Task InForLoopIncrementor1()
3108
        {
C
Cyrus Najmabadi 已提交
3109
            await VerifyItemExistsAsync(@"
3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121
using System;
 
class Program
{
    static void Main()
    {
        for (; ; $$
    }
}
", "Console");
        }

J
Jared Parsons 已提交
3122
        [WorkItem(544928, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544928")]
3123
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3124
        public async Task InForLoopIncrementor2()
3125
        {
C
Cyrus Najmabadi 已提交
3126
            await VerifyItemExistsAsync(@"
3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138
using System;
 
class Program
{
    static void Main()
    {
        for (; ; Console.WriteLine(), $$
    }
}
", "Console");
        }

J
Jared Parsons 已提交
3139
        [WorkItem(544931, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544931")]
3140
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3141
        public async Task InForLoopInitializer1()
3142
        {
C
Cyrus Najmabadi 已提交
3143
            await VerifyItemExistsAsync(@"
3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155
using System;
 
class Program
{
    static void Main()
    {
        for ($$
    }
}
", "Console");
        }

J
Jared Parsons 已提交
3156
        [WorkItem(544931, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544931")]
3157
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
3158
        public async Task InForLoopInitializer2()
3159
        {
C
Cyrus Najmabadi 已提交
3160
            await VerifyItemExistsAsync(@"
3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173
using System;
 
class Program
{
    static void Main()
    {
        for (Console.WriteLine(), $$
    }
}
", "Console");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3174
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3175
        public async Task LocalVariableInItsDeclaration()
3176 3177
        {
            // "int foo = foo = 1" is a legal declaration
C
Cyrus Najmabadi 已提交
3178
            await VerifyItemExistsAsync(@"
3179 3180 3181 3182 3183 3184 3185 3186 3187 3188
class Program
{
    void M()
    {
        int foo = $$
    }
}", "foo");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3189
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3190
        public async Task LocalVariableInItsDeclarator()
3191 3192
        {
            // "int bar = bar = 1" is legal in a declarator
C
Cyrus Najmabadi 已提交
3193
            await VerifyItemExistsAsync(@"
3194 3195 3196 3197 3198 3199 3200 3201 3202 3203
class Program
{
    void M()
    {
        int foo = 0, int bar = $$, int baz = 0;
    }
}", "bar");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3204
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3205
        public async Task LocalVariableNotBeforeDeclaration()
3206
        {
C
Cyrus Najmabadi 已提交
3207
            await VerifyItemIsAbsentAsync(@"
3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218
class Program
{
    void M()
    {
        $$
        int foo = 0;
    }
}", "foo");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3219
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3220
        public async Task LocalVariableNotBeforeDeclarator()
3221
        {
C
Cyrus Najmabadi 已提交
3222
            await VerifyItemIsAbsentAsync(@"
3223 3224 3225 3226 3227 3228 3229 3230 3231 3232
class Program
{
    void M()
    {
        int foo = $$, bar = 0;
    }
}", "bar");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3233
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3234
        public async Task LocalVariableAfterDeclarator()
3235
        {
C
Cyrus Najmabadi 已提交
3236
            await VerifyItemExistsAsync(@"
3237 3238 3239 3240 3241 3242 3243 3244 3245 3246
class Program
{
    void M()
    {
        int foo = 0, int bar = $$
    }
}", "foo");
        }

        [WorkItem(10572, "DevDiv_Projects/Roslyn")]
3247
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3248
        public async Task LocalVariableAsOutArgumentInInitializerExpression()
3249
        {
C
Cyrus Najmabadi 已提交
3250
            await VerifyItemExistsAsync(@"
3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265
class Program
{
    void M()
    {
        int foo = Bar(out $$
    }
    int Bar(out int x)
    {
        x = 3;
        return 5;
    }
}", "foo");
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3266
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3267
        public async Task EditorBrowsable_Method_BrowsableStateAlways()
3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar() 
    {
    }
}";
C
Cyrus Najmabadi 已提交
3286
            await VerifyItemInEditorBrowsableContextsAsync(
3287 3288 3289 3290 3291 3292 3293 3294 3295 3296
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3297
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3298
        public async Task EditorBrowsable_Method_BrowsableStateNever()
3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar() 
    {
    }
}";
C
Cyrus Najmabadi 已提交
3317
            await VerifyItemInEditorBrowsableContextsAsync(
3318 3319 3320 3321 3322 3323 3324 3325 3326 3327
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3328
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3329
        public async Task EditorBrowsable_Method_BrowsableStateAdvanced()
3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    public static void Bar() 
    {
    }
}";
C
Cyrus Najmabadi 已提交
3348
            await VerifyItemInEditorBrowsableContextsAsync(
3349 3350 3351 3352 3353 3354 3355 3356 3357
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
3358
            await VerifyItemInEditorBrowsableContextsAsync(
3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3370
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3371
        public async Task EditorBrowsable_Method_Overloads_BothBrowsableAlways()
3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar() 
    {
    }

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(int x) 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3396
            await VerifyItemInEditorBrowsableContextsAsync(
3397 3398 3399 3400 3401 3402 3403 3404 3405 3406
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 2,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3407
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3408
        public async Task EditorBrowsable_Method_Overloads_OneBrowsableAlways_OneBrowsableNever()
3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar() 
    {
    }

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar(int x) 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3433
            await VerifyItemInEditorBrowsableContextsAsync(
3434 3435 3436 3437 3438 3439 3440 3441 3442 3443
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3444
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3445
        public async Task EditorBrowsable_Method_Overloads_BothBrowsableNever()
3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469
        {
            var markup = @"
class Program
{
    void M()
    {
        Foo.$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar() 
    {
    }

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar(int x) 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3470
            await VerifyItemInEditorBrowsableContextsAsync(
3471 3472 3473 3474 3475 3476 3477 3478 3479 3480
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3481
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3482
        public async Task EditorBrowsable_ExtensionMethod_BrowsableAlways()
3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(this Foo foo, int x)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3506
            await VerifyItemInEditorBrowsableContextsAsync(
3507 3508 3509 3510 3511 3512 3513 3514 3515 3516
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3517
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3518
        public async Task EditorBrowsable_ExtensionMethod_BrowsableNever()
3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar(this Foo foo, int x)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3542
            await VerifyItemInEditorBrowsableContextsAsync(
3543 3544 3545 3546 3547 3548 3549 3550 3551 3552
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3553
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3554
        public async Task EditorBrowsable_ExtensionMethod_BrowsableAdvanced()
3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    public static void Bar(this Foo foo, int x)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3578
            await VerifyItemInEditorBrowsableContextsAsync(
3579 3580 3581 3582 3583 3584 3585 3586 3587
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
3588
            await VerifyItemInEditorBrowsableContextsAsync(
3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3600
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3601
        public async Task EditorBrowsable_ExtensionMethod_BrowsableMixed()
3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(this Foo foo, int x)
    {
    }

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public static void Bar(this Foo foo, int x, int y)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3630
            await VerifyItemInEditorBrowsableContextsAsync(
3631 3632 3633 3634 3635 3636 3637 3638 3639 3640
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3641
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3642
        public async Task EditorBrowsable_OverloadExtensionMethodAndMethod_BrowsableAlways()
3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public void Bar(int x)
    {
    }
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(this Foo foo, int x, int y)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3670
            await VerifyItemInEditorBrowsableContextsAsync(
3671 3672 3673 3674 3675 3676 3677 3678 3679 3680
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 2,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3681
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3682
        public async Task EditorBrowsable_OverloadExtensionMethodAndMethod_BrowsableMixed()
3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Bar(int x)
    {
    }
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(this Foo foo, int x, int y)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3710
            await VerifyItemInEditorBrowsableContextsAsync(
3711 3712 3713 3714 3715 3716 3717 3718 3719 3720
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3721
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3722
        public async Task EditorBrowsable_SameSigExtensionMethodAndMethod_InstanceMethodBrowsableNever()
3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Bar(int x)
    {
    }
}

public static class FooExtensions
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public static void Bar(this Foo foo, int x)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3750
            await VerifyItemInEditorBrowsableContextsAsync(
3751 3752 3753 3754 3755 3756 3757 3758 3759 3760
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3761
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3762
        public async Task OverriddenSymbolsFilteredFromCompletionList()
3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788
        {
            var markup = @"
class Program
{
    void M()
    {
        D d = new D();
        d.$$
    }
}";

            var referencedCode = @"
public class B
{
    public virtual void Foo(int original) 
    {
    }
}

public class D : B
{
    public override void Foo(int derived) 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3789
            await VerifyItemInEditorBrowsableContextsAsync(
3790 3791 3792 3793 3794 3795 3796 3797 3798 3799
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3800
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3801
        public async Task EditorBrowsable_BrowsableStateAlwaysMethodInBrowsableStateNeverClass()
3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821
        {
            var markup = @"
class Program
{
    void M()
    {
        C c = new C();
        c.$$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public class C
{
    public void Foo() 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3822
            await VerifyItemInEditorBrowsableContextsAsync(
3823 3824 3825 3826 3827 3828 3829 3830 3831 3832
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3833
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3834
        public async Task EditorBrowsable_BrowsableStateAlwaysMethodInBrowsableStateNeverBaseClass()
3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861
        {
            var markup = @"
class Program
{
    void M()
    {
        D d = new D();
        d.$$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public class B
{
    public void Foo() 
    {
    }
}

public class D : B
{
    public void Foo(int x)
    {
    }
}";

C
Cyrus Najmabadi 已提交
3862
            await VerifyItemInEditorBrowsableContextsAsync(
3863 3864 3865 3866 3867 3868 3869 3870 3871 3872
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 2,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3873
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3874
        public async Task EditorBrowsable_BrowsableStateNeverMethodsInBaseClass()
3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893
        {
            var markup = @"
class Program : B
{
    void M()
    {
        $$
    }
}";

            var referencedCode = @"
public class B
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo() 
    {
    }
}";

C
Cyrus Najmabadi 已提交
3894
            await VerifyItemInEditorBrowsableContextsAsync(
3895 3896 3897 3898 3899 3900 3901 3902 3903 3904
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3905
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3906
        public async Task EditorBrowsable_GenericTypeCausingMethodSignatureEquality_BothBrowsableAlways()
3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924
        {
            var markup = @"
class Program
{
    void M()
    {
        var ci = new C<int>();
        ci.$$
    }
}";

            var referencedCode = @"
public class C<T>
{
    public void Foo(T t) { }
    public void Foo(int i) { }
}";

C
Cyrus Najmabadi 已提交
3925
            await VerifyItemInEditorBrowsableContextsAsync(
3926 3927 3928 3929 3930 3931 3932 3933 3934 3935
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 2,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3936
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3937
        public async Task EditorBrowsable_GenericTypeCausingMethodSignatureEquality_BrowsableMixed1()
3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956
        {
            var markup = @"
class Program
{
    void M()
    {
        var ci = new C<int>();
        ci.$$
    }
}";

            var referencedCode = @"
public class C<T>
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(T t) { }
    public void Foo(int i) { }
}";

C
Cyrus Najmabadi 已提交
3957
            await VerifyItemInEditorBrowsableContextsAsync(
3958 3959 3960 3961 3962 3963 3964 3965 3966 3967
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
3968
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
3969
        public async Task EditorBrowsable_GenericTypeCausingMethodSignatureEquality_BrowsableMixed2()
3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988
        {
            var markup = @"
class Program
{
    void M()
    {
        var ci = new C<int>();
        ci.$$
    }
}";

            var referencedCode = @"
public class C<T>
{
    public void Foo(T t) { }
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(int i) { }
}";

C
Cyrus Najmabadi 已提交
3989
            await VerifyItemInEditorBrowsableContextsAsync(
3990 3991 3992 3993 3994 3995 3996 3997 3998 3999
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4000
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4001
        public async Task EditorBrowsable_GenericTypeCausingMethodSignatureEquality_BothBrowsableNever()
4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021
        {
            var markup = @"
class Program
{
    void M()
    {
        var ci = new C<int>();
        ci.$$
    }
}";

            var referencedCode = @"
public class C<T>
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(T t) { }
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(int i) { }
}";

C
Cyrus Najmabadi 已提交
4022
            await VerifyItemInEditorBrowsableContextsAsync(
4023 4024 4025 4026 4027 4028 4029 4030 4031 4032
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4033
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4034
        public async Task EditorBrowsable_GenericType2CausingMethodSignatureEquality_BothBrowsableAlways()
4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052
        {
            var markup = @"
class Program
{
    void M()
    {
        var cii = new C<int, int>();
        cii.$$
    }
}";

            var referencedCode = @"
public class C<T, U>
{
    public void Foo(T t) { }
    public void Foo(U u) { }
}";

C
Cyrus Najmabadi 已提交
4053
            await VerifyItemInEditorBrowsableContextsAsync(
4054 4055 4056 4057 4058 4059 4060 4061 4062 4063
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 2,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4064
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4065
        public async Task EditorBrowsable_GenericType2CausingMethodSignatureEquality_BrowsableMixed()
4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084
        {
            var markup = @"
class Program
{
    void M()
    {
        var cii = new C<int, int>();
        cii.$$
    }
}";

            var referencedCode = @"
public class C<T, U>
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(T t) { }
    public void Foo(U u) { }
}";

C
Cyrus Najmabadi 已提交
4085
            await VerifyItemInEditorBrowsableContextsAsync(
4086 4087 4088 4089 4090 4091 4092 4093 4094 4095
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4096
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4097
        public async Task EditorBrowsable_GenericType2CausingMethodSignatureEquality_BothBrowsableNever()
4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117
        {
            var markup = @"
class Program
{
    void M()
    {
        var cii = new C<int, int>();
        cii.$$
    }
}";

            var referencedCode = @"
public class C<T, U>
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(T t) { }
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public void Foo(U u) { }
}";

C
Cyrus Najmabadi 已提交
4118
            await VerifyItemInEditorBrowsableContextsAsync(
4119 4120 4121 4122 4123 4124 4125 4126 4127 4128
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 2,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4129
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4130
        public async Task EditorBrowsable_Field_BrowsableStateNever()
4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public int bar;
}";

C
Cyrus Najmabadi 已提交
4148
            await VerifyItemInEditorBrowsableContextsAsync(
4149 4150 4151 4152 4153 4154 4155 4156 4157 4158
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4159
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4160
        public async Task EditorBrowsable_Field_BrowsableStateAlways()
4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
4177
            await VerifyItemInEditorBrowsableContextsAsync(
4178 4179 4180 4181 4182 4183 4184 4185 4186 4187
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4188
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4189
        public async Task EditorBrowsable_Field_BrowsableStateAdvanced()
4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
4206
            await VerifyItemInEditorBrowsableContextsAsync(
4207 4208 4209 4210 4211 4212 4213 4214 4215
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);

C
Cyrus Najmabadi 已提交
4216
            await VerifyItemInEditorBrowsableContextsAsync(
4217 4218 4219 4220 4221 4222 4223 4224 4225 4226
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);
        }

J
Jared Parsons 已提交
4227 4228
        [WorkItem(522440, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/522440")]
        [WorkItem(674611, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/674611")]
4229
        [WpfFact(Skip = "674611"), Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4230
        public async Task EditorBrowsable_Property_BrowsableStateNever()
4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public int Bar {get; set;}
}";
C
Cyrus Najmabadi 已提交
4247
            await VerifyItemInEditorBrowsableContextsAsync(
4248 4249 4250 4251 4252 4253 4254 4255 4256 4257
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4258
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4259
        public async Task EditorBrowsable_Property_IgnoreBrowsabilityOfGetSetMethods()
4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    public int Bar {
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
        get { return 5; }
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
        set { }
    }
}";
C
Cyrus Najmabadi 已提交
4280
            await VerifyItemInEditorBrowsableContextsAsync(
4281 4282 4283 4284 4285 4286 4287 4288 4289 4290
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4291
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4292
        public async Task EditorBrowsable_Property_BrowsableStateAlways()
4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public int Bar {get; set;}
}";
C
Cyrus Najmabadi 已提交
4309
            await VerifyItemInEditorBrowsableContextsAsync(
4310 4311 4312 4313 4314 4315 4316 4317 4318 4319
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4320
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4321
        public async Task EditorBrowsable_Property_BrowsableStateAdvanced()
4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    public int Bar {get; set;}
}";
C
Cyrus Najmabadi 已提交
4338
            await VerifyItemInEditorBrowsableContextsAsync(
4339 4340 4341 4342 4343 4344 4345 4346 4347
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);

C
Cyrus Najmabadi 已提交
4348
            await VerifyItemInEditorBrowsableContextsAsync(
4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4360
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4361
        public async Task EditorBrowsable_Constructor_BrowsableStateNever()
4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public Foo()
    {
    }
}";
C
Cyrus Najmabadi 已提交
4380
            await VerifyItemInEditorBrowsableContextsAsync(
4381 4382 4383 4384 4385 4386 4387 4388 4389 4390
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4391
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4392
        public async Task EditorBrowsable_Constructor_BrowsableStateAlways()
4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Always)]
    public Foo()
    {
    }
}";
C
Cyrus Najmabadi 已提交
4411
            await VerifyItemInEditorBrowsableContextsAsync(
4412 4413 4414 4415 4416 4417 4418 4419 4420 4421
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4422
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4423
        public async Task EditorBrowsable_Constructor_BrowsableStateAdvanced()
4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    public Foo()
    {
    }
}";
C
Cyrus Najmabadi 已提交
4442
            await VerifyItemInEditorBrowsableContextsAsync(
4443 4444 4445 4446 4447 4448 4449 4450 4451
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);

C
Cyrus Najmabadi 已提交
4452
            await VerifyItemInEditorBrowsableContextsAsync(
4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4464
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4465
        public async Task EditorBrowsable_Constructor_MixedOverloads1()
4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public Foo()
    {
    }

    public Foo(int x)
    {
    }
}";
C
Cyrus Najmabadi 已提交
4488
            await VerifyItemInEditorBrowsableContextsAsync(
4489 4490 4491 4492 4493 4494 4495 4496 4497 4498
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4499
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4500
        public async Task EditorBrowsable_Constructor_MixedOverloads2()
4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public Foo()
    {
    }

    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    public Foo(int x)
    {
    }
}";
C
Cyrus Najmabadi 已提交
4524
            await VerifyItemInEditorBrowsableContextsAsync(
4525 4526 4527 4528 4529 4530 4531 4532 4533 4534
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4535
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4536
        public async Task EditorBrowsable_Event_BrowsableStateNever()
4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554
        {
            var markup = @"
class Program
{
    void M()
    {
        new C().$$
    }
}";

            var referencedCode = @"
public delegate void Handler();

public class C
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    public event Handler Changed;
}";
C
Cyrus Najmabadi 已提交
4555
            await VerifyItemInEditorBrowsableContextsAsync(
4556 4557 4558 4559 4560 4561 4562 4563 4564 4565
                markup: markup,
                referencedCode: referencedCode,
                item: "Changed",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4566
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4567
        public async Task EditorBrowsable_Event_BrowsableStateAlways()
4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585
        {
            var markup = @"
class Program
{
    void M()
    {
        new C().$$
    }
}";

            var referencedCode = @"
public delegate void Handler();

public class C
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
    public event Handler Changed;
}";
C
Cyrus Najmabadi 已提交
4586
            await VerifyItemInEditorBrowsableContextsAsync(
4587 4588 4589 4590 4591 4592 4593 4594 4595 4596
                markup: markup,
                referencedCode: referencedCode,
                item: "Changed",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4597
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4598
        public async Task EditorBrowsable_Event_BrowsableStateAdvanced()
4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616
        {
            var markup = @"
class Program
{
    void M()
    {
        new C().$$
    }
}";

            var referencedCode = @"
public delegate void Handler();

public class C
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
    public event Handler Changed;
}";
C
Cyrus Najmabadi 已提交
4617
            await VerifyItemInEditorBrowsableContextsAsync(
4618 4619 4620 4621 4622 4623 4624 4625 4626
                markup: markup,
                referencedCode: referencedCode,
                item: "Changed",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
4627
            await VerifyItemInEditorBrowsableContextsAsync(
4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638
                markup: markup,
                referencedCode: referencedCode,
                item: "Changed",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4639
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4640
        public async Task EditorBrowsable_Delegate_BrowsableStateNever()
4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651
        {
            var markup = @"
class Program
{
    public event $$
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public delegate void Handler();";

C
Cyrus Najmabadi 已提交
4652
            await VerifyItemInEditorBrowsableContextsAsync(
4653 4654 4655 4656 4657 4658 4659 4660 4661 4662
                markup: markup,
                referencedCode: referencedCode,
                item: "Handler",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4663
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4664
        public async Task EditorBrowsable_Delegate_BrowsableStateAlways()
4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675
        {
            var markup = @"
class Program
{
    public event $$
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public delegate void Handler();";

C
Cyrus Najmabadi 已提交
4676
            await VerifyItemInEditorBrowsableContextsAsync(
4677 4678 4679 4680 4681 4682 4683 4684 4685 4686
                markup: markup,
                referencedCode: referencedCode,
                item: "Handler",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4687
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4688
        public async Task EditorBrowsable_Delegate_BrowsableStateAdvanced()
4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699
        {
            var markup = @"
class Program
{
    public event $$
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public delegate void Handler();";

C
Cyrus Najmabadi 已提交
4700
            await VerifyItemInEditorBrowsableContextsAsync(
4701 4702 4703 4704 4705 4706 4707 4708 4709
                markup: markup,
                referencedCode: referencedCode,
                item: "Handler",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
4710
            await VerifyItemInEditorBrowsableContextsAsync(
4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721
                markup: markup,
                referencedCode: referencedCode,
                item: "Handler",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4722
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4723
        public async Task EditorBrowsable_Class_BrowsableStateNever_DeclareLocal()
4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4739
            await VerifyItemInEditorBrowsableContextsAsync(
4740 4741 4742 4743 4744 4745 4746 4747 4748 4749
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4750
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4751
        public async Task EditorBrowsable_Class_BrowsableStateNever_DeriveFrom()
4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4763
            await VerifyItemInEditorBrowsableContextsAsync(
4764 4765 4766 4767 4768 4769 4770 4771 4772 4773
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4774
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4775
        public async Task EditorBrowsable_Class_BrowsableStateNever_FullyQualifiedInUsing()
4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791
        {
            var markup = @"
class Program
{
    void M()
    {
        using (var x = new NS.$$
    }
}";

            var referencedCode = @"
namespace NS
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
    public class Foo : System.IDisposable
    {
C
Cyrus Najmabadi 已提交
4792
        public void Dispose()
4793 4794 4795 4796
        {
        }
    }
}";
C
Cyrus Najmabadi 已提交
4797
            await VerifyItemInEditorBrowsableContextsAsync(
4798 4799 4800 4801 4802 4803 4804 4805 4806 4807
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4808
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4809
        public async Task EditorBrowsable_Class_BrowsableStateAlways_DeclareLocal()
4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4825
            await VerifyItemInEditorBrowsableContextsAsync(
4826 4827 4828 4829 4830 4831 4832 4833 4834 4835
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4836
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4837
        public async Task EditorBrowsable_Class_BrowsableStateAlways_DeriveFrom()
4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4849
            await VerifyItemInEditorBrowsableContextsAsync(
4850 4851 4852 4853 4854 4855 4856 4857 4858 4859
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4860
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4861
        public async Task EditorBrowsable_Class_BrowsableStateAlways_FullyQualifiedInUsing()
4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877
        {
            var markup = @"
class Program
{
    void M()
    {
        using (var x = new NS.$$
    }
}";

            var referencedCode = @"
namespace NS
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
    public class Foo : System.IDisposable
    {
C
Cyrus Najmabadi 已提交
4878
        public void Dispose()
4879 4880 4881 4882
        {
        }
    }
}";
C
Cyrus Najmabadi 已提交
4883
            await VerifyItemInEditorBrowsableContextsAsync(
4884 4885 4886 4887 4888 4889 4890 4891 4892 4893
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4894
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4895
        public async Task EditorBrowsable_Class_BrowsableStateAdvanced_DeclareLocal()
4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4911
            await VerifyItemInEditorBrowsableContextsAsync(
4912 4913 4914 4915 4916 4917 4918 4919 4920
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
4921
            await VerifyItemInEditorBrowsableContextsAsync(
4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4933
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4934
        public async Task EditorBrowsable_Class_BrowsableStateAdvanced_DeriveFrom()
4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
4946
            await VerifyItemInEditorBrowsableContextsAsync(
4947 4948 4949 4950 4951 4952 4953 4954 4955
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
4956
            await VerifyItemInEditorBrowsableContextsAsync(
4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
4968
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
4969
        public async Task EditorBrowsable_Class_BrowsableStateAdvanced_FullyQualifiedInUsing()
4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985
        {
            var markup = @"
class Program
{
    void M()
    {
        using (var x = new NS.$$
    }
}";

            var referencedCode = @"
namespace NS
{
    [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
    public class Foo : System.IDisposable
    {
C
Cyrus Najmabadi 已提交
4986
        public void Dispose()
4987 4988 4989 4990
        {
        }
    }
}";
C
Cyrus Najmabadi 已提交
4991
            await VerifyItemInEditorBrowsableContextsAsync(
4992 4993 4994 4995 4996 4997 4998 4999 5000
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5001
            await VerifyItemInEditorBrowsableContextsAsync(
5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5013
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5014
        public async Task EditorBrowsable_Class_IgnoreBaseClassBrowsableNever()
5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
public class Foo : Bar
{
}

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public class Bar
{
}";
C
Cyrus Najmabadi 已提交
5034
            await VerifyItemInEditorBrowsableContextsAsync(
5035 5036 5037 5038 5039 5040 5041 5042 5043 5044
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5045
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5046
        public async Task EditorBrowsable_Struct_BrowsableStateNever_DeclareLocal()
5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5062
            await VerifyItemInEditorBrowsableContextsAsync(
5063 5064 5065 5066 5067 5068 5069 5070 5071 5072
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5073
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5074
        public async Task EditorBrowsable_Struct_BrowsableStateNever_DeriveFrom()
5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5086
            await VerifyItemInEditorBrowsableContextsAsync(
5087 5088 5089 5090 5091 5092 5093 5094 5095 5096
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5097
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5098
        public async Task EditorBrowsable_Struct_BrowsableStateAlways_DeclareLocal()
5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5114
            await VerifyItemInEditorBrowsableContextsAsync(
5115 5116 5117 5118 5119 5120 5121 5122 5123 5124
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5125
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5126
        public async Task EditorBrowsable_Struct_BrowsableStateAlways_DeriveFrom()
5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5138
            await VerifyItemInEditorBrowsableContextsAsync(
5139 5140 5141 5142 5143 5144 5145 5146 5147 5148
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5149
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5150
        public async Task EditorBrowsable_Struct_BrowsableStateAdvanced_DeclareLocal()
5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5166
            await VerifyItemInEditorBrowsableContextsAsync(
5167 5168 5169 5170 5171 5172 5173 5174 5175
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5176
            await VerifyItemInEditorBrowsableContextsAsync(
5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5188
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5189
        public async Task EditorBrowsable_Struct_BrowsableStateAdvanced_DeriveFrom()
5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public struct Foo
{
}";
C
Cyrus Najmabadi 已提交
5201
            await VerifyItemInEditorBrowsableContextsAsync(
5202 5203 5204 5205 5206 5207 5208 5209 5210
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5211
            await VerifyItemInEditorBrowsableContextsAsync(
5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5223
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5224
        public async Task EditorBrowsable_Enum_BrowsableStateNever()
5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public enum Foo
{
}";
C
Cyrus Najmabadi 已提交
5240
            await VerifyItemInEditorBrowsableContextsAsync(
5241 5242 5243 5244 5245 5246 5247 5248 5249 5250
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5251
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5252
        public async Task EditorBrowsable_Enum_BrowsableStateAlways()
5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public enum Foo
{
}";
C
Cyrus Najmabadi 已提交
5268
            await VerifyItemInEditorBrowsableContextsAsync(
5269 5270 5271 5272 5273 5274 5275 5276 5277 5278
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5279
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5280
        public async Task EditorBrowsable_Enum_BrowsableStateAdvanced()
5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public enum Foo
{
}";
C
Cyrus Najmabadi 已提交
5296
            await VerifyItemInEditorBrowsableContextsAsync(
5297 5298 5299 5300 5301 5302 5303 5304 5305
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5306
            await VerifyItemInEditorBrowsableContextsAsync(
5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5318
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5319
        public async Task EditorBrowsable_Interface_BrowsableStateNever_DeclareLocal()
5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5335
            await VerifyItemInEditorBrowsableContextsAsync(
5336 5337 5338 5339 5340 5341 5342 5343 5344 5345
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5346
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5347
        public async Task EditorBrowsable_Interface_BrowsableStateNever_DeriveFrom()
5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5359
            await VerifyItemInEditorBrowsableContextsAsync(
5360 5361 5362 5363 5364 5365 5366 5367 5368 5369
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5370
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5371
        public async Task EditorBrowsable_Interface_BrowsableStateAlways_DeclareLocal()
5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5387
            await VerifyItemInEditorBrowsableContextsAsync(
5388 5389 5390 5391 5392 5393 5394 5395 5396 5397
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5398
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5399
        public async Task EditorBrowsable_Interface_BrowsableStateAlways_DeriveFrom()
5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5411
            await VerifyItemInEditorBrowsableContextsAsync(
5412 5413 5414 5415 5416 5417 5418 5419 5420 5421
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5422
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5423
        public async Task EditorBrowsable_Interface_BrowsableStateAdvanced_DeclareLocal()
5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438
        {
            var markup = @"
class Program
{
    public void M()
    {
        $$    
    }
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5439
            await VerifyItemInEditorBrowsableContextsAsync(
5440 5441 5442 5443 5444 5445 5446 5447 5448
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5449
            await VerifyItemInEditorBrowsableContextsAsync(
5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5461
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5462
        public async Task EditorBrowsable_Interface_BrowsableStateAdvanced_DeriveFrom()
5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473
        {
            var markup = @"
class Program : $$
{
}";

            var referencedCode = @"
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)]
public interface Foo
{
}";
C
Cyrus Najmabadi 已提交
5474
            await VerifyItemInEditorBrowsableContextsAsync(
5475 5476 5477 5478 5479 5480 5481 5482 5483
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: false);

C
Cyrus Najmabadi 已提交
5484
            await VerifyItemInEditorBrowsableContextsAsync(
5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp,
                hideAdvancedMembers: true);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5496
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5497
        public async Task EditorBrowsable_CrossLanguage_CStoVB_Always()
5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511
        {
            var markup = @"
class Program
{
    void M()
    {
        $$
    }
}";

            var referencedCode = @"
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)>
Public Class Foo
End Class";
C
Cyrus Najmabadi 已提交
5512
            await VerifyItemInEditorBrowsableContextsAsync(
5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.VisualBasic,
                hideAdvancedMembers: false);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5524
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5525
        public async Task EditorBrowsable_CrossLanguage_CStoVB_Never()
5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539
        {
            var markup = @"
class Program
{
    void M()
    {
        $$
    }
}";

            var referencedCode = @"
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
Public Class Foo
End Class";
C
Cyrus Najmabadi 已提交
5540
            await VerifyItemInEditorBrowsableContextsAsync(
5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 0,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.VisualBasic,
                hideAdvancedMembers: false);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5552
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5553
        public async Task EditorBrowsable_TypeLibType_NotHidden()
5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType(System.Runtime.InteropServices.TypeLibTypeFlags.FLicensed)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5569
            await VerifyItemInEditorBrowsableContextsAsync(
5570 5571 5572 5573 5574 5575 5576 5577 5578 5579
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5580
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5581
        public async Task EditorBrowsable_TypeLibType_Hidden()
5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType(System.Runtime.InteropServices.TypeLibTypeFlags.FHidden)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5597
            await VerifyItemInEditorBrowsableContextsAsync(
5598 5599 5600 5601 5602 5603 5604 5605 5606 5607
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5608
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5609
        public async Task EditorBrowsable_TypeLibType_HiddenAndOtherFlags()
5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType(System.Runtime.InteropServices.TypeLibTypeFlags.FHidden | System.Runtime.InteropServices.TypeLibTypeFlags.FLicensed)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5625
            await VerifyItemInEditorBrowsableContextsAsync(
5626 5627 5628 5629 5630 5631 5632 5633 5634 5635
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5636
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5637
        public async Task EditorBrowsable_TypeLibType_NotHidden_Int16Constructor()
5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType((short)System.Runtime.InteropServices.TypeLibTypeFlags.FLicensed)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5653
            await VerifyItemInEditorBrowsableContextsAsync(
5654 5655 5656 5657 5658 5659 5660 5661 5662 5663
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5664
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5665
        public async Task EditorBrowsable_TypeLibType_Hidden_Int16Constructor()
5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType((short)System.Runtime.InteropServices.TypeLibTypeFlags.FHidden)]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5681
            await VerifyItemInEditorBrowsableContextsAsync(
5682 5683 5684 5685 5686 5687 5688 5689 5690 5691
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5692
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5693
        public async Task EditorBrowsable_TypeLibType_HiddenAndOtherFlags_Int16Constructor()
5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708
        {
            var markup = @"
class Program
{
    void M()
    {
        new $$
    }
}";

            var referencedCode = @"
[System.Runtime.InteropServices.TypeLibType((short)(System.Runtime.InteropServices.TypeLibTypeFlags.FHidden | System.Runtime.InteropServices.TypeLibTypeFlags.FLicensed))]
public class Foo
{
}";
C
Cyrus Najmabadi 已提交
5709
            await VerifyItemInEditorBrowsableContextsAsync(
5710 5711 5712 5713 5714 5715 5716 5717 5718 5719
                markup: markup,
                referencedCode: referencedCode,
                item: "Foo",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5720
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5721
        public async Task EditorBrowsable_TypeLibFunc_NotHidden()
5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc(System.Runtime.InteropServices.TypeLibFuncFlags.FReplaceable)]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5740
            await VerifyItemInEditorBrowsableContextsAsync(
5741 5742 5743 5744 5745 5746 5747 5748 5749 5750
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5751
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5752
        public async Task EditorBrowsable_TypeLibFunc_Hidden()
5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc(System.Runtime.InteropServices.TypeLibFuncFlags.FHidden)]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5771
            await VerifyItemInEditorBrowsableContextsAsync(
5772 5773 5774 5775 5776 5777 5778 5779 5780 5781
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5782
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5783
        public async Task EditorBrowsable_TypeLibFunc_HiddenAndOtherFlags()
5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc(System.Runtime.InteropServices.TypeLibFuncFlags.FHidden | System.Runtime.InteropServices.TypeLibFuncFlags.FReplaceable)]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5802
            await VerifyItemInEditorBrowsableContextsAsync(
5803 5804 5805 5806 5807 5808 5809 5810 5811 5812
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5813
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5814
        public async Task EditorBrowsable_TypeLibFunc_NotHidden_Int16Constructor()
5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc((short)System.Runtime.InteropServices.TypeLibFuncFlags.FReplaceable)]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5833
            await VerifyItemInEditorBrowsableContextsAsync(
5834 5835 5836 5837 5838 5839 5840 5841 5842 5843
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5844
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5845
        public async Task EditorBrowsable_TypeLibFunc_Hidden_Int16Constructor()
5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc((short)System.Runtime.InteropServices.TypeLibFuncFlags.FHidden)]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5864
            await VerifyItemInEditorBrowsableContextsAsync(
5865 5866 5867 5868 5869 5870 5871 5872 5873 5874
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5875
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5876
        public async Task EditorBrowsable_TypeLibFunc_HiddenAndOtherFlags_Int16Constructor()
5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibFunc((short)(System.Runtime.InteropServices.TypeLibFuncFlags.FHidden | System.Runtime.InteropServices.TypeLibFuncFlags.FReplaceable))]
    public void Bar()
    {
    }
}";
C
Cyrus Najmabadi 已提交
5895
            await VerifyItemInEditorBrowsableContextsAsync(
5896 5897 5898 5899 5900 5901 5902 5903 5904 5905
                markup: markup,
                referencedCode: referencedCode,
                item: "Bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5906
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5907
        public async Task EditorBrowsable_TypeLibVar_NotHidden()
5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar(System.Runtime.InteropServices.TypeLibVarFlags.FReplaceable)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
5924
            await VerifyItemInEditorBrowsableContextsAsync(
5925 5926 5927 5928 5929 5930 5931 5932 5933 5934
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5935
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5936
        public async Task EditorBrowsable_TypeLibVar_Hidden()
5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar(System.Runtime.InteropServices.TypeLibVarFlags.FHidden)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
5953
            await VerifyItemInEditorBrowsableContextsAsync(
5954 5955 5956 5957 5958 5959 5960 5961 5962 5963
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5964
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5965
        public async Task EditorBrowsable_TypeLibVar_HiddenAndOtherFlags()
5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar(System.Runtime.InteropServices.TypeLibVarFlags.FHidden | System.Runtime.InteropServices.TypeLibVarFlags.FReplaceable)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
5982
            await VerifyItemInEditorBrowsableContextsAsync(
5983 5984 5985 5986 5987 5988 5989 5990 5991 5992
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
5993
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
5994
        public async Task EditorBrowsable_TypeLibVar_NotHidden_Int16Constructor()
5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar((short)System.Runtime.InteropServices.TypeLibVarFlags.FReplaceable)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
6011
            await VerifyItemInEditorBrowsableContextsAsync(
6012 6013 6014 6015 6016 6017 6018 6019 6020 6021
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
6022
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6023
        public async Task EditorBrowsable_TypeLibVar_Hidden_Int16Constructor()
6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar((short)System.Runtime.InteropServices.TypeLibVarFlags.FHidden)]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
6040
            await VerifyItemInEditorBrowsableContextsAsync(
6041 6042 6043 6044 6045 6046 6047 6048 6049 6050
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

        [WorkItem(7336, "DevDiv_Projects/Roslyn")]
6051
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6052
        public async Task EditorBrowsable_TypeLibVar_HiddenAndOtherFlags_Int16Constructor()
6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068
        {
            var markup = @"
class Program
{
    void M()
    {
        new Foo().$$
    }
}";

            var referencedCode = @"
public class Foo
{
    [System.Runtime.InteropServices.TypeLibVar((short)(System.Runtime.InteropServices.TypeLibVarFlags.FHidden | System.Runtime.InteropServices.TypeLibVarFlags.FReplaceable))]
    public int bar;
}";
C
Cyrus Najmabadi 已提交
6069
            await VerifyItemInEditorBrowsableContextsAsync(
6070 6071 6072 6073 6074 6075 6076 6077 6078
                markup: markup,
                referencedCode: referencedCode,
                item: "bar",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 0,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.CSharp);
        }

J
Jared Parsons 已提交
6079
        [WorkItem(545557, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545557")]
6080
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6081
        public async Task TestColorColor1()
6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095
        {
            var markup = @"
class A
{
    static void Foo() { }
    void Bar() { }
 
    static void Main()
    {
        A A = new A();
        A.$$
    }
}";

C
Cyrus Najmabadi 已提交
6096 6097
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemExistsAsync(markup, "Bar");
6098 6099
        }

J
Jared Parsons 已提交
6100
        [WorkItem(545647, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545647")]
6101
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6102
        public async Task TestLaterLocalHidesType1()
6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114
        {
            var markup = @"
using System;
class C
{
    public static void Main()
    {
        $$
        Console.WriteLine();
    }
}";

C
Cyrus Najmabadi 已提交
6115
            await VerifyItemExistsAsync(markup, "Console");
6116 6117
        }

J
Jared Parsons 已提交
6118
        [WorkItem(545647, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545647")]
6119
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6120
        public async Task TestLaterLocalHidesType2()
6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132
        {
            var markup = @"
using System;
class C
{
    public static void Main()
    {
        C$$
        Console.WriteLine();
    }
}";

C
Cyrus Najmabadi 已提交
6133
            await VerifyItemExistsAsync(markup, "Console");
6134 6135
        }

6136
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6137
        public async Task TestIndexedProperty()
6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175
        {
            var markup = @"class Program
{
    void M()
    {
            CCC c = new CCC();
            c.$$
    }
}";

            // Note that <COMImport> is required by compiler.  Bug 17013 tracks enabling indexed property for non-COM types.
            var referencedCode = @"Imports System.Runtime.InteropServices

<ComImport()>
<GuidAttribute(CCC.ClassId)>
Public Class CCC

#Region ""COM GUIDs""
    Public Const ClassId As String = ""9d965fd2-1514-44f6-accd-257ce77c46b0""
    Public Const InterfaceId As String = ""a9415060-fdf0-47e3-bc80-9c18f7f39cf6""
    Public Const EventsId As String = ""c6a866a5-5f97-4b53-a5df-3739dc8ff1bb""
# End Region

            ''' <summary>
    ''' An index property from VB
    ''' </summary>
    ''' <param name=""p1"">p1 is an integer index</param>
    ''' <returns>A string</returns>
    Public Property IndexProp(ByVal p1 As Integer, Optional ByVal p2 As Integer = 0) As String
        Get
            Return Nothing
        End Get
        Set(ByVal value As String)

        End Set
    End Property
End Class";

C
Cyrus Najmabadi 已提交
6176
            await VerifyItemInEditorBrowsableContextsAsync(
6177 6178 6179 6180 6181 6182 6183 6184 6185
                markup: markup,
                referencedCode: referencedCode,
                item: "IndexProp",
                expectedSymbolsSameSolution: 1,
                expectedSymbolsMetadataReference: 1,
                sourceLanguage: LanguageNames.CSharp,
                referencedLanguage: LanguageNames.VisualBasic);
        }

J
Jared Parsons 已提交
6186
        [WorkItem(546841, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/546841")]
6187
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6188
        public async Task TestDeclarationAmbiguity()
6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201
        {
            var markup = @"
using System;

class Program
{
    void Main()
    {
        Environment.$$
        var v;
    }
}";

C
Cyrus Najmabadi 已提交
6202
            await VerifyItemExistsAsync(markup, "CommandLine");
6203 6204
        }

6205
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6206
        public async Task TestCursorOnClassCloseBrace()
6207 6208 6209 6210 6211 6212 6213 6214 6215 6216
        {
            var markup = @"
using System;

class Outer
{
    class Inner { }

$$}";

C
Cyrus Najmabadi 已提交
6217
            await VerifyItemExistsAsync(markup, "Inner");
6218 6219
        }

6220
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6221
        public async Task AfterAsync1()
6222 6223 6224 6225 6226 6227 6228 6229
        {
            var markup = @"
using System.Threading.Tasks;
class Program
{
    async $$
}";

C
Cyrus Najmabadi 已提交
6230
            await VerifyItemExistsAsync(markup, "Task");
6231 6232
        }

6233
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6234
        public async Task AfterAsync2()
6235 6236 6237 6238 6239 6240 6241 6242
        {
            var markup = @"
using System.Threading.Tasks;
class Program
{
    public async T$$
}";

C
Cyrus Najmabadi 已提交
6243
            await VerifyItemExistsAsync(markup, "Task");
6244 6245
        }

6246
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6247
        public async Task NotAfterAsyncInMethodBody()
6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258
        {
            var markup = @"
using System.Threading.Tasks;
class Program
{
    void foo()
    {
        var x = async $$
    }
}";

C
Cyrus Najmabadi 已提交
6259
            await VerifyItemIsAbsentAsync(markup, "Task");
6260 6261
        }

6262
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6263
        public async Task NotAwaitable1()
6264 6265 6266 6267 6268 6269 6270 6271 6272 6273
        {
            var markup = @"
class Program
{
    void foo()
    {
        $$
    }
}";

C
Cyrus Najmabadi 已提交
6274
            await VerifyItemWithMscorlib45Async(markup, "foo", "void Program.foo()", "C#");
6275 6276
        }

6277
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6278
        public async Task NotAwaitable2()
6279 6280 6281 6282 6283 6284 6285 6286 6287 6288
        {
            var markup = @"
class Program
{
    async void foo()
    {
        $$
    }
}";

C
Cyrus Najmabadi 已提交
6289
            await VerifyItemWithMscorlib45Async(markup, "foo", "void Program.foo()", "C#");
6290 6291
        }

6292
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6293
        public async Task Awaitable1()
6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306
        {
            var markup = @"
using System.Threading;
using System.Threading.Tasks;

class Program
{
    async Task foo()
    {
        $$
    }
}";

6307
            var description = $@"({CSharpFeaturesResources.Awaitable}) Task Program.foo()
6308
{WorkspacesResources.Usage}
R
Ravi Chande 已提交
6309
  {SyntaxFacts.GetText(SyntaxKind.AwaitKeyword)} foo();";
6310

C
Cyrus Najmabadi 已提交
6311
            await VerifyItemWithMscorlib45Async(markup, "foo", description, "C#");
6312 6313
        }

6314
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6315
        public async Task Awaitable2()
6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327
        {
            var markup = @"
using System.Threading.Tasks;

class Program
{
    async Task<int> foo()
    {
        $$
    }
}";

6328
            var description = $@"({CSharpFeaturesResources.Awaitable}) Task<int> Program.foo()
6329
{WorkspacesResources.Usage}
R
Ravi Chande 已提交
6330
  int x = {SyntaxFacts.GetText(SyntaxKind.AwaitKeyword)} foo();";
6331

C
Cyrus Najmabadi 已提交
6332
            await VerifyItemWithMscorlib45Async(markup, "foo", description, "C#");
6333 6334
        }

6335
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6336
        public async Task ObsoleteItem()
6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348
        {
            var markup = @"
using System;

class Program
{
    [Obsolete]
    public void foo()
    {
        $$
    }
}";
C
Cyrus Najmabadi 已提交
6349
            await VerifyItemExistsAsync(markup, "foo", $"[{CSharpFeaturesResources.Deprecated}] void Program.foo()");
6350 6351
        }

J
Jared Parsons 已提交
6352
        [WorkItem(568986, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/568986")]
6353
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6354
        public async Task NoMembersOnDottingIntoUnboundType()
6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365
        {
            var markup = @"
class Program
{
    RegistryKey foo;
 
    static void Main(string[] args)
    {
        foo.$$
    }
}";
C
Cyrus Najmabadi 已提交
6366
            await VerifyNoItemsExistAsync(markup);
6367 6368
        }

J
Jared Parsons 已提交
6369
        [WorkItem(550717, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/550717")]
6370
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6371
        public async Task TypeArgumentsInConstraintAfterBaselist()
6372 6373 6374 6375 6376
        {
            var markup = @"
public class Foo<T> : System.Object where $$
{
}";
C
Cyrus Najmabadi 已提交
6377
            await VerifyItemExistsAsync(markup, "T");
6378 6379
        }

J
Jared Parsons 已提交
6380
        [WorkItem(647175, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/647175")]
6381
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6382
        public async Task NoDestructor()
6383 6384 6385 6386 6387 6388 6389 6390
        {
            var markup = @"
class C
{
    ~C()
    {
        $$
";
C
Cyrus Najmabadi 已提交
6391
            await VerifyItemIsAbsentAsync(markup, "Finalize");
6392 6393
        }

J
Jared Parsons 已提交
6394
        [WorkItem(669624, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/669624")]
6395
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6396
        public async Task ExtensionMethodOnCovariantInterface()
6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423
        {
            var markup = @"
class Schema<T> { }

interface ISet<out T> { }

static class SetMethods
{
    public static void ForSchemaSet<T>(this ISet<Schema<T>> set) { }
}

class Context
{
    public ISet<T> Set<T>() { return null; }
}

class CustomSchema : Schema<int> { }

class Program
{
    static void Main(string[] args)
    {
        var set = new Context().Set<CustomSchema>();

        set.$$
";

C
Cyrus Najmabadi 已提交
6424
            await VerifyItemExistsAsync(markup, "ForSchemaSet<>", sourceCodeKind: SourceCodeKind.Regular);
6425 6426
        }

J
Jared Parsons 已提交
6427
        [WorkItem(667752, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/667752")]
6428
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6429
        public async Task ForEachInsideParentheses()
6430 6431 6432 6433 6434 6435 6436 6437 6438 6439
        {
            var markup = @"
using System;
class C
{
    void M()
    {
        foreach($$)
";

C
Cyrus Najmabadi 已提交
6440
            await VerifyItemExistsAsync(markup, "String");
6441 6442
        }

J
Jared Parsons 已提交
6443
        [WorkItem(766869, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/766869")]
6444
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6445
        public async Task TestFieldInitializerInP2P()
6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457
        {
            var markup = @"
class Class
{
    int i = Consts.$$;
}";

            var referencedCode = @"
public static class Consts
{
    public const int C = 1;
}";
C
Cyrus Najmabadi 已提交
6458
            await VerifyItemWithProjectReferenceAsync(markup, referencedCode, "C", 1, LanguageNames.CSharp, LanguageNames.CSharp, false);
6459 6460
        }

J
Jared Parsons 已提交
6461
        [WorkItem(834605, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/834605")]
6462
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6463
        public async Task ShowWithEqualsSign()
6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475
        {
            var markup = @"
class c { public int value {set; get; }}

class d
{
    void foo()
    {
       c foo = new c { value$$=
    }
}";

C
Cyrus Najmabadi 已提交
6476
            await VerifyNoItemsExistAsync(markup);
6477 6478
        }

J
Jared Parsons 已提交
6479
        [WorkItem(825661, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/825661")]
6480
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6481
        public async Task NothingAfterThisDotInStaticContext()
6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493
        {
            var markup = @"
class C
{
    void M1() { }

    static void M2()
    {
        this.$$
    }
}";

C
Cyrus Najmabadi 已提交
6494
            await VerifyNoItemsExistAsync(markup);
6495 6496
        }

J
Jared Parsons 已提交
6497
        [WorkItem(825661, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/825661")]
6498
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6499
        public async Task NothingAfterBaseDotInStaticContext()
6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511
        {
            var markup = @"
class C
{
    void M1() { }

    static void M2()
    {
        base.$$
    }
}";

C
Cyrus Najmabadi 已提交
6512
            await VerifyNoItemsExistAsync(markup);
6513 6514
        }

6515 6516 6517 6518 6519 6520 6521
        [WorkItem(7648, "http://github.com/dotnet/roslyn/issues/7648")]
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
        public async Task NothingAfterBaseDotInScriptContext()
        {
            await VerifyItemIsAbsentAsync(@"base.$$", @"ToString", sourceCodeKind: SourceCodeKind.Script);
        }

J
Jared Parsons 已提交
6522
        [WorkItem(858086, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/858086")]
6523
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6524
        public async Task NoNestedTypeWhenDisplayingInstance()
6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538
        {
            var markup = @"
class C
{
    class D
    {
    }

    void M2()
    {
        new C().$$
    }
}";

C
Cyrus Najmabadi 已提交
6539
            await VerifyItemIsAbsentAsync(markup, "D");
6540 6541
        }

J
Jared Parsons 已提交
6542
        [WorkItem(876031, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/876031")]
6543
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6544
        public async Task CatchVariableInExceptionFilter()
6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555
        {
            var markup = @"
class C
{
    void M()
    {
        try
        {
        }
        catch (System.Exception myExn) when ($$";

C
Cyrus Najmabadi 已提交
6556
            await VerifyItemExistsAsync(markup, "myExn");
6557 6558
        }

J
Jared Parsons 已提交
6559
        [WorkItem(849698, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/849698")]
6560
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6561
        public async Task CompletionAfterExternAlias()
6562 6563 6564 6565 6566 6567 6568 6569 6570 6571
        {
            var markup = @"
class C
{
    void foo()
    {
        global::$$
    }
}";

C
Cyrus Najmabadi 已提交
6572
            await VerifyItemExistsAsync(markup, "System", usePreviousCharAsTrigger: true);
6573 6574
        }

J
Jared Parsons 已提交
6575
        [WorkItem(849698, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/849698")]
6576
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6577
        public async Task ExternAliasSuggested()
6578 6579 6580 6581 6582 6583 6584 6585 6586 6587
        {
            var markup = @"
extern alias Bar;
class C
{
    void foo()
    {
        $$
    }
}";
C
Cyrus Najmabadi 已提交
6588
            await VerifyItemWithAliasedMetadataReferencesAsync(markup, "Bar", "Bar", 1, "C#", "C#", false);
6589 6590
        }

J
Jared Parsons 已提交
6591
        [WorkItem(635957, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/635957")]
6592
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6593
        public async Task ClassDestructor()
6594 6595 6596 6597 6598 6599 6600 6601 6602
        {
            var markup = @"
class C
{
    class N
    {
    ~$$
    }
}";
C
Cyrus Najmabadi 已提交
6603 6604
            await VerifyItemExistsAsync(markup, "N");
            await VerifyItemIsAbsentAsync(markup, "C");
6605 6606
        }

J
Jared Parsons 已提交
6607
        [WorkItem(635957, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/635957")]
6608
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6609
        public async Task TildeOutsideClass()
6610 6611 6612 6613 6614 6615 6616 6617 6618
        {
            var markup = @"
class C
{
    class N
    {
    }
}
~$$";
C
Cyrus Najmabadi 已提交
6619
            await VerifyNoItemsExistAsync(markup, SourceCodeKind.Regular);
6620 6621
        }

J
Jared Parsons 已提交
6622
        [WorkItem(635957, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/635957")]
6623
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6624
        public async Task StructDestructor()
6625 6626 6627 6628 6629 6630
        {
            var markup = @"
struct C
{
   ~$$
}";
C
Cyrus Najmabadi 已提交
6631
            await VerifyItemExistsAsync(markup, "C");
6632 6633
        }

6634
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6635
        public async Task FieldAvailableInBothLinkedFiles()
6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
    int x;
    void foo()
    {
        $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

C
Cyrus Najmabadi 已提交
6656
            await VerifyItemInLinkedFilesAsync(markup, "x", $"({FeaturesResources.Field}) int C.x");
6657 6658
        }

6659
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6660
        public async Task FieldUnavailableInOneLinkedFile()
6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""FOO"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if FOO
    int x;
#endif
    void foo()
    {
        $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6682
            var expectedDescription = $"({FeaturesResources.Field}) int C.x\r\n\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj2", FeaturesResources.NotAvailable)}\r\n\r\n{FeaturesResources.UseTheNavigationBarToSwitchContext}";
6683

C
Cyrus Najmabadi 已提交
6684
            await VerifyItemInLinkedFilesAsync(markup, "x", expectedDescription);
6685 6686
        }

6687
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6688
        public async Task FieldUnavailableInTwoLinkedFiles()
6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""FOO"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if FOO
    int x;
#endif
    void foo()
    {
        $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj3"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6713
            var expectedDescription = $"({FeaturesResources.Field}) int C.x\r\n\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj2", FeaturesResources.NotAvailable)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj3", FeaturesResources.NotAvailable)}\r\n\r\n{FeaturesResources.UseTheNavigationBarToSwitchContext}";
6714

C
Cyrus Najmabadi 已提交
6715
            await VerifyItemInLinkedFilesAsync(markup, "x", expectedDescription);
6716 6717
        }

6718
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6719
        public async Task ExcludeFilesWithInactiveRegions()
6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""FOO,BAR"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if FOO
    int x;
#endif

#if BAR
    void foo()
    {
        $$
    }
#endif
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs"" />
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj3"" PreprocessorSymbols=""BAR"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6747
            var expectedDescription = $"({FeaturesResources.Field}) int C.x\r\n\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj3", FeaturesResources.NotAvailable)}\r\n\r\n{FeaturesResources.UseTheNavigationBarToSwitchContext}";
6748

C
Cyrus Najmabadi 已提交
6749
            await VerifyItemInLinkedFilesAsync(markup, "x", expectedDescription);
6750 6751
        }

6752
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6753
        public async Task UnionOfItemsFromBothContexts()
6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""FOO"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if FOO
    int x;
#endif

#if BAR
    class G
    {
C
Cyrus Najmabadi 已提交
6767
        public void DoGStuff() {}
6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784
    }
#endif
    void foo()
    {
        new G().$$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""BAR"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj3"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6785
            var expectedDescription = $"void G.DoGStuff()\r\n\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj1", FeaturesResources.NotAvailable)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj2", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj3", FeaturesResources.NotAvailable)}\r\n\r\n{FeaturesResources.UseTheNavigationBarToSwitchContext}";
6786

C
Cyrus Najmabadi 已提交
6787
            await VerifyItemInLinkedFilesAsync(markup, "DoGStuff", expectedDescription);
6788 6789
        }

J
Jared Parsons 已提交
6790
        [WorkItem(1020944, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1020944")]
6791
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6792
        public async Task LocalsValidInLinkedDocuments()
6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
    void M()
    {
        int xyz;
        $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6812
            var expectedDescription = $"({FeaturesResources.LocalVariable}) int xyz";
C
Cyrus Najmabadi 已提交
6813
            await VerifyItemInLinkedFilesAsync(markup, "xyz", expectedDescription);
6814 6815
        }

J
Jared Parsons 已提交
6816
        [WorkItem(1020944, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1020944")]
6817
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6818
        public async Task LocalWarningInLinkedDocuments()
6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""PROJ1"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
    void M()
    {
#if PROJ1
        int xyz;
#endif
        $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6840
            var expectedDescription = $"({FeaturesResources.LocalVariable}) int xyz\r\n\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources.ProjectAvailability, "Proj2", FeaturesResources.NotAvailable)}\r\n\r\n{FeaturesResources.UseTheNavigationBarToSwitchContext}";
C
Cyrus Najmabadi 已提交
6841
            await VerifyItemInLinkedFilesAsync(markup, "xyz", expectedDescription);
6842 6843
        }

J
Jared Parsons 已提交
6844
        [WorkItem(1020944, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1020944")]
6845
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6846
        public async Task LabelsValidInLinkedDocuments()
6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
    void M()
    {
LABEL:  int xyz;
        goto $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6866
            var expectedDescription = $"({FeaturesResources.Label}) LABEL";
C
Cyrus Najmabadi 已提交
6867
            await VerifyItemInLinkedFilesAsync(markup, "LABEL", expectedDescription);
6868 6869
        }

J
Jared Parsons 已提交
6870
        [WorkItem(1020944, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1020944")]
6871
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6872
        public async Task RangeVariablesValidInLinkedDocuments()
6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
using System.Linq;
class C
{
    void M()
    {
        var x = from y in new[] { 1, 2, 3 } select $$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";
6892
            var expectedDescription = $"({FeaturesResources.RangeVariable}) ? y";
C
Cyrus Najmabadi 已提交
6893
            await VerifyItemInLinkedFilesAsync(markup, "y", expectedDescription);
6894 6895
        }

J
Jared Parsons 已提交
6896
        [WorkItem(1063403, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1063403")]
6897
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6898
        public async Task MethodOverloadDifferencesIgnored()
6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""ONE"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if ONE
    void Do(int x){}
#endif
#if TWO
    void Do(string x){}
#endif

    void Shared()
    {
        $$
    }

}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""TWO"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

R
Ravi Chande 已提交
6926
            var expectedDescription = $"void C.Do(int x)";
C
Cyrus Najmabadi 已提交
6927
            await VerifyItemInLinkedFilesAsync(markup, "Do", expectedDescription);
6928 6929
        }

6930
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6931
        public async Task MethodOverloadDifferencesIgnored_ExtensionMethod()
R
Ravi Chande 已提交
6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""ONE"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if ONE
    void Do(int x){}
#endif

    void Shared()
    {
        this.$$
    }

}

public static class Extensions
{
#if TWO
    public static void Do (this C c, string x)
    {
    }
#endif
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""TWO"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

R
Ravi Chande 已提交
6965
            var expectedDescription = $"void C.Do(int x)";
C
Cyrus Najmabadi 已提交
6966
            await VerifyItemInLinkedFilesAsync(markup, "Do", expectedDescription);
R
Ravi Chande 已提交
6967 6968
        }

6969
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
6970
        public async Task MethodOverloadDifferencesIgnored_ExtensionMethod2()
R
Ravi Chande 已提交
6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""TWO"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if ONE
    void Do(int x){}
#endif

    void Shared()
    {
        this.$$
    }

}

public static class Extensions
{
#if TWO
    public static void Do (this C c, string x)
    {
    }
#endif
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""ONE"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

R
Ravi Chande 已提交
7004
            var expectedDescription = $"({CSharpFeaturesResources.Extension}) void C.Do(string x)";
C
Cyrus Najmabadi 已提交
7005
            await VerifyItemInLinkedFilesAsync(markup, "Do", expectedDescription);
R
Ravi Chande 已提交
7006 7007
        }

7008
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7009
        public async Task MethodOverloadDifferencesIgnored_ContainingType()
R
Ravi Chande 已提交
7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""ONE"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
    void Shared()
    {
        var x = GetThing();
        x.$$
    }

#if ONE
    private Methods1 GetThing()
    {
        return new Methods1();
    }
#endif

#if TWO
    private Methods2 GetThing()
    {
        return new Methods2();
    }
#endif
}

#if ONE
public class Methods1
{
    public void Do(string x) { }
}
#endif

#if TWO
public class Methods2
{
    public void Do(string x) { }
}
#endif
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""TWO"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

R
Ravi Chande 已提交
7058
            var expectedDescription = $"void Methods1.Do(string x)";
C
Cyrus Najmabadi 已提交
7059
            await VerifyItemInLinkedFilesAsync(markup, "Do", expectedDescription);
R
Ravi Chande 已提交
7060 7061
        }

7062
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7063
        public async Task SharedProjectFieldAndPropertiesTreatedAsIdentical()
7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""ONE"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if ONE
    public int x;
#endif
#if TWO
    public int x {get; set;}
#endif
    void foo()
    {
        x$$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""TWO"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

            var expectedDescription = $"(field) int C.x";
C
Cyrus Najmabadi 已提交
7090
            await VerifyItemInLinkedFilesAsync(markup, "x", expectedDescription);
7091 7092
        }

7093
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7094
        public async Task SharedProjectFieldAndPropertiesTreatedAsIdentical2()
7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119
        {
            var markup = @"<Workspace>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj1"" PreprocessorSymbols=""ONE"">
        <Document FilePath=""CurrentDocument.cs""><![CDATA[
class C
{
#if TWO
    public int x;
#endif
#if ONE
    public int x {get; set;}
#endif
    void foo()
    {
        x$$
    }
}
]]>
        </Document>
    </Project>
    <Project Language=""C#"" CommonReferences=""true"" AssemblyName=""Proj2"" PreprocessorSymbols=""TWO"">
        <Document IsLinkFile=""true"" LinkAssemblyName=""Proj1"" LinkFilePath=""CurrentDocument.cs""/>
    </Project>
</Workspace>";

7120
            var expectedDescription = "int C.x { get; set; }";
C
Cyrus Najmabadi 已提交
7121
            await VerifyItemInLinkedFilesAsync(markup, "x", expectedDescription);
7122 7123
        }

7124
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7125
        public async Task ConditionalAccessWalkUp()
7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145
        {
            var markup = @"
public class B
{
    public A BA;
    public B BB;
}

class A
{
    public A AA;
    public A AB;
    public int? x;

    public void foo()
    {
        A a = null;
        var q = a?.$$AB.BA.AB.BA;
    }
}";
C
Cyrus Najmabadi 已提交
7146 7147
            await VerifyItemExistsAsync(markup, "AA", experimental: true);
            await VerifyItemExistsAsync(markup, "AB", experimental: true);
7148 7149
        }

7150
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7151
        public async Task ConditionalAccessNullableIsUnwrapped()
7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168
        {
            var markup = @"
public struct S
{
    public int? i;
}

class A
{
    public S? s;

    public void foo()
    {
        A a = null;
        var q = a?.s?.$$;
    }
}";
C
Cyrus Najmabadi 已提交
7169 7170
            await VerifyItemExistsAsync(markup, "i", experimental: true);
            await VerifyItemIsAbsentAsync(markup, "value", experimental: true);
7171 7172
        }

7173
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7174
        public async Task ConditionalAccessNullableIsUnwrapped2()
7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190
        {
            var markup = @"
public struct S
{
    public int? i;
}

class A
{
    public S? s;

    public void foo()
    {
        var q = s?.$$i?.ToString();
    }
}";
C
Cyrus Najmabadi 已提交
7191 7192
            await VerifyItemExistsAsync(markup, "i", experimental: true);
            await VerifyItemIsAbsentAsync(markup, "value", experimental: true);
7193 7194
        }

7195
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7196
        public async Task CompletionAfterConditionalIndexing()
7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213
        {
            var markup = @"
public struct S
{
    public int? i;
}

class A
{
    public S[] s;

    public void foo()
    {
        A a = null;
        var q = a?.s?[$$;
    }
}";
C
Cyrus Najmabadi 已提交
7214
            await VerifyItemExistsAsync(markup, "System", experimental: true);
7215 7216
        }

J
Jared Parsons 已提交
7217
        [WorkItem(1109319, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1109319")]
7218
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7219
        public async Task WithinChainOfConditionalAccesses()
7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234
        {
            var markup = @"
class Program
{
    static void Main(string[] args)
    {
        A a;
        var x = a?.$$b?.c?.d.e;
    }
}

class A { public B b; }
class B { public C c; }
class C { public D d; }
class D { public int e; }";
C
Cyrus Najmabadi 已提交
7235
            await VerifyItemExistsAsync(markup, "b");
7236 7237
        }

J
Jared Parsons 已提交
7238
        [WorkItem(843466, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/843466")]
7239
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7240
        public async Task NestedAttributeAccessibleOnSelf()
7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251
        {
            var markup = @"using System;
[My]
class X
{
    [My$$]
    class MyAttribute : Attribute
    {

    }
}";
C
Cyrus Najmabadi 已提交
7252
            await VerifyItemExistsAsync(markup, "My");
7253 7254
        }

J
Jared Parsons 已提交
7255
        [WorkItem(843466, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/843466")]
7256
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7257
        public async Task NestedAttributeAccessibleOnOuterType()
7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275
        {
            var markup = @"using System;

[My]
class Y
{

}

[$$]
class X
{
    [My]
    class MyAttribute : Attribute
    {

    }
}";
C
Cyrus Najmabadi 已提交
7276
            await VerifyItemExistsAsync(markup, "My");
7277 7278
        }

7279
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7280
        public async Task InstanceMembersFromBaseOuterType()
C
Charles Stoner 已提交
7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294
        {
            var markup = @"abstract class Test
{
  private int _field;

  public sealed class InnerTest : Test 
  {
    
    public void SomeTest() 
    {
        $$
    }
  }
}";
C
Cyrus Najmabadi 已提交
7295
            await VerifyItemExistsAsync(markup, "_field");
C
Charles Stoner 已提交
7296 7297
        }

7298
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7299
        public async Task InstanceMembersFromBaseOuterType2()
C
Charles Stoner 已提交
7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319
        {
            var markup = @"class C<T>
{
    void M() { }
    class N : C<int>
    {
        void Test()
        {
            $$ // M recommended and accessible
        }

        class NN
        {
            void Test2()
            {
                // M inaccessible and not recommended
            }
        }
    }
}";
C
Cyrus Najmabadi 已提交
7320
            await VerifyItemExistsAsync(markup, "M");
C
Charles Stoner 已提交
7321 7322
        }

7323
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7324
        public async Task InstanceMembersFromBaseOuterType3()
C
Charles Stoner 已提交
7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344
        {
            var markup = @"class C<T>
{
    void M() { }
    class N : C<int>
    {
        void Test()
        {
            M(); // M recommended and accessible
        }

        class NN
        {
            void Test2()
            {
                $$ // M inaccessible and not recommended
            }
        }
    }
}";
C
Cyrus Najmabadi 已提交
7345
            await VerifyItemIsAbsentAsync(markup, "M");
C
Charles Stoner 已提交
7346 7347
        }

7348
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7349
        public async Task InstanceMembersFromBaseOuterType4()
C
Charles Stoner 已提交
7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369
        {
            var markup = @"class C<T>
{
    void M() { }
    class N : C<int>
    {
        void Test()
        {
            M(); // M recommended and accessible
        }

        class NN : N
        {
            void Test2()
            {
                $$ // M accessible and recommended.
            }
        }
    }
}";
C
Cyrus Najmabadi 已提交
7370
            await VerifyItemExistsAsync(markup, "M");
C
Charles Stoner 已提交
7371 7372
        }

7373
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7374
        public async Task InstanceMembersFromBaseOuterType5()
C
Charles Stoner 已提交
7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390
        {
            var markup = @"
class D
{
    public void Q() { }
}
class C<T> : D
{
    class N
    {
        void Test()
        {
            $$
        }
    }
}";
C
Cyrus Najmabadi 已提交
7391
            await VerifyItemIsAbsentAsync(markup, "Q");
C
Charles Stoner 已提交
7392 7393
        }

7394
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7395
        public async Task InstanceMembersFromBaseOuterType6()
C
Charles Stoner 已提交
7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412
        {
            var markup = @"
class Base<T>
{
    public int X;
}

class Derived : Base<int>
{
    class Nested
    {
        void Test()
        {
            $$
        }
    }
}";
C
Cyrus Najmabadi 已提交
7413
            await VerifyItemIsAbsentAsync(markup, "X");
C
Charles Stoner 已提交
7414 7415
        }

J
Jared Parsons 已提交
7416
        [WorkItem(983367, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/983367")]
7417
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7418
        public async Task NoTypeParametersDefinedInCrefs()
7419 7420 7421 7422 7423
        {
            var markup = @"using System;

/// <see cref=""Program{T$$}""/>
class Program<T> { }";
C
Cyrus Najmabadi 已提交
7424
            await VerifyItemIsAbsentAsync(markup, "T");
7425 7426
        }

J
Jared Parsons 已提交
7427
        [WorkItem(988025, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/988025")]
7428
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7429
        public async Task ShowTypesInGenericMethodTypeParameterList1()
7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449
        {
            var markup = @"
class Class1<T, D>
{
    public static Class1<T, D> Create() { return null; }
}
static class Class2
{
    public static void Test<T,D>(this Class1<T, D> arg)
    {
    }
}
class Program
{
    static void Main(string[] args)
    {
        Class1<string, int>.Create().Test<$$
    }
}
";
C
Cyrus Najmabadi 已提交
7450
            await VerifyItemExistsAsync(markup, "Class1<>", sourceCodeKind: SourceCodeKind.Regular);
7451 7452
        }

J
Jared Parsons 已提交
7453
        [WorkItem(988025, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/988025")]
7454
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7455
        public async Task ShowTypesInGenericMethodTypeParameterList2()
7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475
        {
            var markup = @"
class Class1<T, D>
{
    public static Class1<T, D> Create() { return null; }
}
static class Class2
{
    public static void Test<T,D>(this Class1<T, D> arg)
    {
    }
}
class Program
{
    static void Main(string[] args)
    {
        Class1<string, int>.Create().Test<string,$$
    }
}
";
C
Cyrus Najmabadi 已提交
7476
            await VerifyItemExistsAsync(markup, "Class1<>", sourceCodeKind: SourceCodeKind.Regular);
7477 7478
        }

J
Jared Parsons 已提交
7479
        [WorkItem(991466, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/991466")]
7480
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7481
        public async Task DescriptionInAliasedType()
7482 7483 7484 7485 7486 7487 7488 7489 7490 7491
        {
            var markup = @"
using IAlias = IFoo;
///<summary>summary for interface IFoo</summary>
interface IFoo {  }
class C 
{ 
    I$$
}
";
C
Cyrus Najmabadi 已提交
7492
            await VerifyItemExistsAsync(markup, "IAlias", expectedDescriptionOrNull: "interface IFoo\r\nsummary for interface IFoo");
7493 7494
        }

7495
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7496
        public async Task WithinNameOf()
7497 7498 7499 7500 7501 7502 7503 7504 7505 7506
        {
            var markup = @"
class C 
{ 
    void foo()
    {
        var x = nameof($$)
    }
}
";
C
Cyrus Najmabadi 已提交
7507
            await VerifyAnyItemExistsAsync(markup);
7508 7509
        }

J
Jared Parsons 已提交
7510
        [WorkItem(997410, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/997410")]
7511
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7512
        public async Task InstanceMemberInNameOfInStaticContext()
7513 7514 7515 7516 7517 7518 7519 7520
        {
            var markup = @"
class C
{
  int y1 = 15;
  static int y2 = 1;
  static string x = nameof($$
";
C
Cyrus Najmabadi 已提交
7521
            await VerifyItemExistsAsync(markup, "y1");
7522 7523
        }

J
Jared Parsons 已提交
7524
        [WorkItem(997410, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/997410")]
7525
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7526
        public async Task StaticMemberInNameOfInStaticContext()
7527 7528 7529 7530 7531 7532 7533 7534
        {
            var markup = @"
class C
{
  int y1 = 15;
  static int y2 = 1;
  static string x = nameof($$
";
C
Cyrus Najmabadi 已提交
7535
            await VerifyItemExistsAsync(markup, "y2");
7536 7537
        }

J
Jared Parsons 已提交
7538
        [WorkItem(883293, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/883293")]
7539
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7540
        public async Task IncompleteDeclarationExpressionType()
7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552
        {
            var markup = @"
using System;
class C
{
  void foo()
    {
        var x = Console.$$
        var y = 3;
    }
}
";
C
Cyrus Najmabadi 已提交
7553
            await VerifyItemExistsAsync(markup, "WriteLine", experimental: true);
7554 7555
        }

J
Jared Parsons 已提交
7556
        [WorkItem(1024380, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1024380")]
7557
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7558
        public async Task StaticAndInstanceInNameOf()
7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575
        {
            var markup = @"
using System;
class C
{
    class D
    {
        public int x;
        public static int y;   
    }

  void foo()
    {
        var z = nameof(C.D.$$
    }
}
";
C
Cyrus Najmabadi 已提交
7576 7577
            await VerifyItemExistsAsync(markup, "x");
            await VerifyItemExistsAsync(markup, "y");
7578 7579
        }

R
Ravi Chande 已提交
7580
        [WorkItem(1663, "https://github.com/dotnet/roslyn/issues/1663")]
7581
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7582
        public async Task NameOfMembersListedForLocals()
7583 7584 7585 7586 7587
        {
            var markup = @"class C
{
    void M()
    {
R
Ravi Chande 已提交
7588
        var x = nameof(T.z.$$)
7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601
    }
}
 
public class T
{
    public U z; 
}
 
public class U
{
    public int nope;
}
";
C
Cyrus Najmabadi 已提交
7602
            await VerifyItemExistsAsync(markup, "nope");
7603 7604
        }

J
Jared Parsons 已提交
7605
        [WorkItem(1029522, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1029522")]
7606
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7607
        public async Task NameOfMembersListedForNamespacesAndTypes2()
7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626
        {
            var markup = @"class C
{
    void M()
    {
        var x = nameof(U.$$)
    }
}
 
public class T
{
    public U z; 
}
 
public class U
{
    public int nope;
}
";
C
Cyrus Najmabadi 已提交
7627
            await VerifyItemExistsAsync(markup, "nope");
7628 7629
        }

J
Jared Parsons 已提交
7630
        [WorkItem(1029522, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1029522")]
7631
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7632
        public async Task NameOfMembersListedForNamespacesAndTypes3()
7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648
        {
            var markup = @"class C
{
    void M()
    {
        var x = nameof(N.$$)
    }
}

namespace N
{
public class U
{
    public int nope;
}
} ";
C
Cyrus Najmabadi 已提交
7649
            await VerifyItemExistsAsync(markup, "U");
7650 7651
        }

J
Jared Parsons 已提交
7652
        [WorkItem(1029522, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1029522")]
7653
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7654
        public async Task NameOfMembersListedForNamespacesAndTypes4()
7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665
        {
            var markup = @"
using z = System;
class C
{
    void M()
    {
        var x = nameof(z.$$)
    }
}
";
C
Cyrus Najmabadi 已提交
7666
            await VerifyItemExistsAsync(markup, "Console");
7667 7668
        }

7669
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7670
        public async Task InterpolatedStrings1()
7671 7672 7673 7674 7675 7676 7677 7678 7679 7680
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $""{$$
";
C
Cyrus Najmabadi 已提交
7681
            await VerifyItemExistsAsync(markup, "a");
7682 7683
        }

7684
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7685
        public async Task InterpolatedStrings2()
7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $""{$$}"";
    }
}";
C
Cyrus Najmabadi 已提交
7697
            await VerifyItemExistsAsync(markup, "a");
7698 7699
        }

7700
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7701
        public async Task InterpolatedStrings3()
7702 7703 7704 7705 7706 7707 7708 7709 7710 7711
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $""{a}, {$$
";
C
Cyrus Najmabadi 已提交
7712
            await VerifyItemExistsAsync(markup, "b");
7713 7714
        }

7715
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7716
        public async Task InterpolatedStrings4()
7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $""{a}, {$$}"";
    }
}";
C
Cyrus Najmabadi 已提交
7728
            await VerifyItemExistsAsync(markup, "b");
7729 7730
        }

7731
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7732
        public async Task InterpolatedStrings5()
7733 7734 7735 7736 7737 7738 7739 7740 7741 7742
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $@""{a}, {$$
";
C
Cyrus Najmabadi 已提交
7743
            await VerifyItemExistsAsync(markup, "b");
7744 7745
        }

7746
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7747
        public async Task InterpolatedStrings6()
7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758
        {
            var markup = @"
class C
{
    void M()
    {
        var a = ""Hello"";
        var b = ""World"";
        var c = $@""{a}, {$$}"";
    }
}";
C
Cyrus Najmabadi 已提交
7759
            await VerifyItemExistsAsync(markup, "b");
7760 7761
        }

J
Jared Parsons 已提交
7762
        [WorkItem(1064811, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1064811")]
7763
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
7764
        public async Task NotBeforeFirstStringHole()
7765
        {
C
Cyrus Najmabadi 已提交
7766
            await VerifyNoItemsExistAsync(AddInsideMethod(
7767 7768 7769
@"var x = ""\{0}$$\{1}\{2}"""));
        }

J
Jared Parsons 已提交
7770
        [WorkItem(1064811, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1064811")]
7771
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
7772
        public async Task NotBetweenStringHoles()
7773
        {
C
Cyrus Najmabadi 已提交
7774
            await VerifyNoItemsExistAsync(AddInsideMethod(
7775 7776 7777
@"var x = ""\{0}\{1}$$\{2}"""));
        }

J
Jared Parsons 已提交
7778
        [WorkItem(1064811, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1064811")]
7779
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
7780
        public async Task NotAfterStringHoles()
7781
        {
C
Cyrus Najmabadi 已提交
7782
            await VerifyNoItemsExistAsync(AddInsideMethod(
7783 7784 7785
@"var x = ""\{0}\{1}\{2}$$"""));
        }

J
Jared Parsons 已提交
7786
        [WorkItem(1087171, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1087171")]
7787
        [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
C
Cyrus Najmabadi 已提交
7788
        public async Task CompletionAfterTypeOfGetType()
7789
        {
C
Cyrus Najmabadi 已提交
7790
            await VerifyItemExistsAsync(AddInsideMethod(
7791 7792 7793
"typeof(int).GetType().$$"), "GUID");
        }

7794
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7795
        public async Task UsingDirectives1()
7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810
        {
            var markup = @"
using $$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7811 7812 7813
            await VerifyItemIsAbsentAsync(markup, "A");
            await VerifyItemIsAbsentAsync(markup, "B");
            await VerifyItemExistsAsync(markup, "N");
7814 7815
        }

7816
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7817
        public async Task UsingDirectives2()
7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832
        {
            var markup = @"
using N.$$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7833 7834 7835
            await VerifyItemIsAbsentAsync(markup, "C");
            await VerifyItemIsAbsentAsync(markup, "D");
            await VerifyItemExistsAsync(markup, "M");
7836 7837
        }

7838
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7839
        public async Task UsingDirectives3()
7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854
        {
            var markup = @"
using G = $$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7855 7856 7857
            await VerifyItemExistsAsync(markup, "A");
            await VerifyItemExistsAsync(markup, "B");
            await VerifyItemExistsAsync(markup, "N");
7858 7859
        }

7860
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7861
        public async Task UsingDirectives4()
7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876
        {
            var markup = @"
using G = N.$$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7877 7878 7879
            await VerifyItemExistsAsync(markup, "C");
            await VerifyItemExistsAsync(markup, "D");
            await VerifyItemExistsAsync(markup, "M");
7880 7881
        }

7882
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7883
        public async Task UsingDirectives5()
7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898
        {
            var markup = @"
using static $$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7899 7900 7901
            await VerifyItemExistsAsync(markup, "A");
            await VerifyItemExistsAsync(markup, "B");
            await VerifyItemExistsAsync(markup, "N");
7902 7903
        }

7904
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7905
        public async Task UsingDirectives6()
7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920
        {
            var markup = @"
using static N.$$

class A { }
static class B { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7921 7922 7923
            await VerifyItemExistsAsync(markup, "C");
            await VerifyItemExistsAsync(markup, "D");
            await VerifyItemExistsAsync(markup, "M");
7924 7925
        }

7926
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7927
        public async Task UsingStaticDoesNotShowDelegates1()
7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942
        {
            var markup = @"
using static $$

class A { }
delegate void B();

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7943 7944 7945
            await VerifyItemExistsAsync(markup, "A");
            await VerifyItemIsAbsentAsync(markup, "B");
            await VerifyItemExistsAsync(markup, "N");
7946 7947
        }

7948
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7949
        public async Task UsingStaticDoesNotShowDelegates2()
7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964
        {
            var markup = @"
using static N.$$

class A { }
static class B { }

namespace N
{
    class C { }
    delegate void D();

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7965 7966 7967
            await VerifyItemExistsAsync(markup, "C");
            await VerifyItemIsAbsentAsync(markup, "D");
            await VerifyItemExistsAsync(markup, "M");
7968 7969
        }

7970
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7971
        public async Task UsingStaticDoesNotShowInterfaces1()
7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986
        {
            var markup = @"
using static N.$$

class A { }
static class B { }

namespace N
{
    class C { }
    interface I { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
7987 7988 7989
            await VerifyItemExistsAsync(markup, "C");
            await VerifyItemIsAbsentAsync(markup, "I");
            await VerifyItemExistsAsync(markup, "M");
7990 7991
        }

7992
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
7993
        public async Task UsingStaticDoesNotShowInterfaces2()
7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008
        {
            var markup = @"
using static $$

class A { }
interface I { }

namespace N
{
    class C { }
    static class D { }

    namespace M { }
}";

C
Cyrus Najmabadi 已提交
8009 8010 8011
            await VerifyItemExistsAsync(markup, "A");
            await VerifyItemIsAbsentAsync(markup, "I");
            await VerifyItemExistsAsync(markup, "N");
8012 8013
        }

8014
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8015
        public async Task UsingStaticAndExtensionMethods1()
8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039
        {
            var markup = @"
using static A;
using static B;

static class A
{
    public static void Foo(this string s) { }
}

static class B
{
    public static void Bar(this string s) { }
}

class C
{
    void M()
    {
        $$
    }
}
";

C
Cyrus Najmabadi 已提交
8040 8041
            await VerifyItemIsAbsentAsync(markup, "Foo");
            await VerifyItemIsAbsentAsync(markup, "Bar");
8042 8043
        }

8044
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8045
        public async Task UsingStaticAndExtensionMethods2()
8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071
        {
            var markup = @"
using N;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        $$
    }
}
";

C
Cyrus Najmabadi 已提交
8072 8073
            await VerifyItemIsAbsentAsync(markup, "Foo");
            await VerifyItemIsAbsentAsync(markup, "Bar");
8074 8075
        }

8076
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8077
        public async Task UsingStaticAndExtensionMethods3()
8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104
        {
            var markup = @"
using N;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        string s;
        s.$$
    }
}
";

C
Cyrus Najmabadi 已提交
8105 8106
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemExistsAsync(markup, "Bar");
8107 8108
        }

8109
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8110
        public async Task UsingStaticAndExtensionMethods4()
8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138
        {
            var markup = @"
using static N.A;
using static N.B;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        string s;
        s.$$
    }
}
";

C
Cyrus Najmabadi 已提交
8139 8140
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemExistsAsync(markup, "Bar");
8141 8142
        }

8143
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8144
        public async Task UsingStaticAndExtensionMethods5()
8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171
        {
            var markup = @"
using static N.A;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        string s;
        s.$$
    }
}
";

C
Cyrus Najmabadi 已提交
8172 8173
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemIsAbsentAsync(markup, "Bar");
8174 8175
        }

8176
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8177
        public async Task UsingStaticAndExtensionMethods6()
8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204
        {
            var markup = @"
using static N.B;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        string s;
        s.$$
    }
}
";

C
Cyrus Najmabadi 已提交
8205 8206
            await VerifyItemIsAbsentAsync(markup, "Foo");
            await VerifyItemExistsAsync(markup, "Bar");
8207 8208
        }

8209
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8210
        public async Task UsingStaticAndExtensionMethods7()
8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238
        {
            var markup = @"
using N;
using static N.B;

namespace N
{
    static class A
    {
        public static void Foo(this string s) { }
    }

    static class B
    {
        public static void Bar(this string s) { }
    }
}

class C
{
    void M()
    {
        string s;
        s.$$;
    }
}
";

C
Cyrus Najmabadi 已提交
8239 8240
            await VerifyItemExistsAsync(markup, "Foo");
            await VerifyItemExistsAsync(markup, "Bar");
8241 8242
        }

8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258
        [WorkItem(7932, "https://github.com/dotnet/roslyn/issues/7932")]
        [WpfFact, Trait(Traits.Feature, Traits.Features.Completion)]
        public async Task ExtensionMethodWithinSameClassOfferedForCompletion()
        {
            var markup = @"
public static class Test
{
    static void TestB()
    {
        $$
    }
    static void TestA(this string s) { }
}
";
            await VerifyItemExistsAsync(markup, "TestA");
        }
C
CyrusNajmabadi 已提交
8259

8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280
        [WorkItem(7932, "https://github.com/dotnet/roslyn/issues/7932")]
        [WpfFact, Trait(Traits.Feature, Traits.Features.Completion)]
        public async Task ExtensionMethodWithinParentClassOfferedForCompletion()
        {
            var markup = @"
public static class Parent
{
    static void TestA(this string s) { }
    static void TestC(string s) { }
    public static class Test
    {
        static void TestB()
        {
            $$
        }
    }
}
";
            await VerifyItemExistsAsync(markup, "TestA");
        }

8281
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8282
        public async Task ExceptionFilter1()
8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296
        {
            var markup = @"
using System;

class C
{
    void M(bool x)
    {
        try
        {
        }
        catch when ($$
";

C
Cyrus Najmabadi 已提交
8297
            await VerifyItemExistsAsync(markup, "x");
8298 8299
        }

8300
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8301
        public async Task ExceptionFilter2()
8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315
        {
            var markup = @"
using System;

class C
{
    void M(bool x)
    {
        try
        {
        }
        catch (Exception ex) when ($$
";

C
Cyrus Najmabadi 已提交
8316
            await VerifyItemExistsAsync(markup, "x");
8317
        }
8318 8319

        [WorkItem(717, "https://github.com/dotnet/roslyn/issues/717")]
8320
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8321
        public async Task ExpressionContextCompletionWithinCast()
8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335
        {
            var markup = @"
class Program
{
    void M()
    {
        for (int i = 0; i < 5; i++)
        {
            var x = ($$)
            var y = 1;
        }
    }
}
";
C
Cyrus Najmabadi 已提交
8336
            await VerifyItemExistsAsync(markup, "i");
8337
        }
8338 8339

        [WorkItem(1277, "https://github.com/dotnet/roslyn/issues/1277")]
8340
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8341
        public async Task NoInstanceMembersInPropertyInitializer()
8342 8343 8344 8345 8346 8347 8348
        {
            var markup = @"
class A {
    int abc;
    int B { get; } = $$
}
";
C
Cyrus Najmabadi 已提交
8349
            await VerifyItemIsAbsentAsync(markup, "abc");
8350 8351 8352
        }

        [WorkItem(1277, "https://github.com/dotnet/roslyn/issues/1277")]
8353
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8354
        public async Task StaticMembersInPropertyInitializer()
8355 8356 8357
        {
            var markup = @"
class A {
8358 8359 8360 8361
    static Action s_abc;
    event Action B = $$
}
";
C
Cyrus Najmabadi 已提交
8362
            await VerifyItemExistsAsync(markup, "s_abc");
8363 8364 8365
        }


8366
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8367
        public async Task NoInstanceMembersInFieldLikeEventInitializer()
8368 8369 8370 8371 8372 8373 8374
        {
            var markup = @"
class A {
    Action abc;
    event Action B = $$
}
";
C
Cyrus Najmabadi 已提交
8375
            await VerifyItemIsAbsentAsync(markup, "abc");
8376 8377
        }

8378
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8379
        public async Task StaticMembersInFieldLikeEventInitializer()
8380 8381 8382 8383 8384
        {
            var markup = @"
class A {
    static Action s_abc;
    event Action B = $$
8385 8386
}
";
C
Cyrus Najmabadi 已提交
8387
            await VerifyItemExistsAsync(markup, "s_abc");
8388
        }
8389

8390
        [WorkItem(5069, "https://github.com/dotnet/roslyn/issues/5069")]
8391
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8392
        public async Task InstanceMembersInTopLevelFieldInitializer()
8393 8394 8395 8396 8397
        {
            var markup = @"
int aaa = 1;
int bbb = $$
";
C
Cyrus Najmabadi 已提交
8398
            await VerifyItemExistsAsync(markup, "aaa", sourceCodeKind: SourceCodeKind.Script);
8399 8400 8401
        }

        [WorkItem(5069, "https://github.com/dotnet/roslyn/issues/5069")]
8402
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8403
        public async Task InstanceMembersInTopLevelFieldLikeEventInitializer()
8404 8405 8406 8407 8408
        {
            var markup = @"
Action aaa = null;
event Action bbb = $$
";
C
Cyrus Najmabadi 已提交
8409
            await VerifyItemExistsAsync(markup, "aaa", sourceCodeKind: SourceCodeKind.Script);
8410 8411
        }

8412
        [WorkItem(33, "https://github.com/dotnet/roslyn/issues/33")]
8413
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8414
        public async Task NoConditionalAccessCompletionOnTypes1()
8415 8416 8417 8418 8419 8420 8421 8422
        {
            var markup = @"
using A = System
class C
{
    A?.$$
}
";
C
Cyrus Najmabadi 已提交
8423
            await VerifyNoItemsExistAsync(markup);
8424 8425 8426
        }

        [WorkItem(33, "https://github.com/dotnet/roslyn/issues/33")]
8427
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8428
        public async Task NoConditionalAccessCompletionOnTypes2()
8429 8430 8431 8432 8433 8434 8435
        {
            var markup = @"
class C
{
    System?.$$
}
";
C
Cyrus Najmabadi 已提交
8436
            await VerifyNoItemsExistAsync(markup);
8437 8438 8439
        }

        [WorkItem(33, "https://github.com/dotnet/roslyn/issues/33")]
8440
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8441
        public async Task NoConditionalAccessCompletionOnTypes3()
8442 8443 8444 8445 8446 8447 8448
        {
            var markup = @"
class C
{
    System.Console?.$$
}
";
C
Cyrus Najmabadi 已提交
8449
            await VerifyNoItemsExistAsync(markup);
8450
        }
8451

8452
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8453
        public async Task CompletionInIncompletePropertyDeclaration()
8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465
        {
            var markup = @"
class Class1
{
    public string Property1 { get; set; }
}

class Class2
{
    public string Property { get { return this.Source.$$
    public Class1 Source { get; set; }
}";
C
Cyrus Najmabadi 已提交
8466
            await VerifyItemExistsAsync(markup, "Property1");
8467
        }
8468

8469
        [Fact, Trait(Traits.Feature, Traits.Features.Completion)]
C
Cyrus Najmabadi 已提交
8470
        public async Task NoCompletionInShebangComments()
8471
        {
C
Cyrus Najmabadi 已提交
8472 8473
            await VerifyNoItemsExistAsync("#!$$", sourceCodeKind: SourceCodeKind.Script);
            await VerifyNoItemsExistAsync("#! S$$", sourceCodeKind: SourceCodeKind.Script, usePreviousCharAsTrigger: true);
8474
        }
8475 8476
    }
}