未验证 提交 981f5384 编写于 作者: A AlekseyTs 提交者: GitHub

Cleanup prototype comments in nullable tests (Part 4) (#30036)

上级 4093428b
......@@ -42,7 +42,7 @@ class C
{
static void F(object? x, object?[] y) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyEmitDiagnostics();
}
......@@ -66,7 +66,7 @@ public sealed class NullableAttribute : Attribute
{
static void F(object? x, object?[] y) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, references: new[] { ref0 }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, references: new[] { ref0 }, parseOptions: TestOptions.Regular8);
comp.VerifyEmitDiagnostics();
}
......@@ -85,7 +85,7 @@ class C
{
static void F(object? x, object?[] y) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyEmitDiagnostics(
// (10,19): error CS0656: Missing compiler required member 'System.Runtime.CompilerServices.NullableAttribute..ctor'
// static void F(object? x, object?[] y) { }
......@@ -110,7 +110,7 @@ class C
{
static void F(object? x, object?[] y) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyEmitDiagnostics(
// (10,19): error CS0656: Missing compiler required member 'System.Runtime.CompilerServices.NullableAttribute..ctor'
// static void F(object? x, object?[] y) { }
......@@ -135,7 +135,7 @@ class C
{
static void F(object? x, object?[] y) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyEmitDiagnostics(
// (10,19): error CS0656: Missing compiler required member 'System.Runtime.CompilerServices.NullableAttribute..ctor'
// static void F(object? x, object?[] y) { }
......@@ -300,7 +300,7 @@ void M1()
}
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, symbolValidator: module =>
{
var assembly = module.ContainingAssembly;
......@@ -323,7 +323,7 @@ void M1()
}
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, symbolValidator: module =>
{
var assembly = module.ContainingAssembly;
......@@ -346,7 +346,7 @@ void M1()
}
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, symbolValidator: module =>
{
var assembly = module.ContainingAssembly;
......@@ -385,7 +385,7 @@ public void EmitAttribute_NetModule()
{
public object? F = new object();
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,20): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// public object? F = new object();
......@@ -416,7 +416,7 @@ public class B1 : A<object>
public class B2 : A<object?>
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, symbolValidator: module =>
{
var type = module.ContainingAssembly.GetTypeByMetadataName("A`1");
......@@ -466,7 +466,7 @@ public class B : I<object?>
{
}
";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, validator: assembly =>
{
var reader = assembly.GetMetadataReader();
......@@ -543,7 +543,7 @@ static void G(A a, B b)
F(b, b);
}
}";
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
comp2.VerifyDiagnostics(
// (9,11): warning CS8620: Nullability of reference types in argument of type 'B' doesn't match target type 'I<(object, object)>' for parameter 'a' in 'void C.F(I<(object, object)> a, I<(object, object?)> b)'.
// F(b, b);
......@@ -555,8 +555,6 @@ static void G(A a, B b)
Assert.Equal("I<(System.Object X, System.Object? Y)>", type.Interfaces()[0].ToTestDisplayString());
}
// PROTOTYPE(NullableReferenceTypes): Execute some of these same tests with feature disabled.
[Fact]
public void EmitAttribute_Constraint_Nullable()
{
......@@ -570,7 +568,7 @@ public class C<T> where T : A?
public class D<T> where T : A
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, validator: assembly =>
{
var reader = assembly.GetMetadataReader();
......@@ -600,7 +598,7 @@ static void Main()
new D<B>();
}
}";
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp2.VerifyEmitDiagnostics(
// (10,15): warning CS8627: The type 'A?' cannot be used as type parameter 'T' in the generic type or method 'D<T>'. Nullability of type argument 'A?' doesn't match constraint type 'A'.
// new D<A?>(); // warning
......@@ -624,7 +622,7 @@ static void Main()
Assert.Equal("A!", type.TypeParameters[0].ConstraintTypesNoUseSiteDiagnostics[0].ToTestDisplayString(true));
}
// PROTOTYPE(NullableReferenceTypes): Test with [NonNullTypes].
// https://github.com/dotnet/roslyn/issues/29976: Test with [NonNullTypes].
[Fact]
public void EmitAttribute_Constraint_Oblivious()
{
......@@ -662,7 +660,7 @@ static void Main()
new C<B2?>();
}
}";
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
comp2.VerifyDiagnostics();
var type = comp2.GetMember<NamedTypeSymbol>("C");
......@@ -683,7 +681,7 @@ public class B<T> where T : A<object?>
public class C<T> where T : A<object>
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, validator: assembly =>
{
var reader = assembly.GetMetadataReader();
......@@ -708,7 +706,7 @@ static void Main()
new C<A<object>>();
}
}";
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp2.VerifyEmitDiagnostics(
// (6,15): warning CS8627: The type 'A<object>' cannot be used as type parameter 'T' in the generic type or method 'B<T>'. Nullability of type argument 'A<object>' doesn't match constraint type 'A<object?>'.
// new B<A<object>>(); // warning
......@@ -732,8 +730,7 @@ static void Main()
Assert.Equal("A<System.Object!>!", type.TypeParameters[0].ConstraintTypesNoUseSiteDiagnostics[0].ToTestDisplayString(true));
}
// PROTOTYPE(NullableReferenceTypes): Test `class C<T> where T : class? { }`.
// https://github.com/dotnet/roslyn/issues/29976: Test `class C<T> where T : class? { }`.
[Fact]
public void EmitAttribute_Constraint_TypeParameter()
{
......@@ -743,7 +740,7 @@ public void EmitAttribute_Constraint_TypeParameter()
where U : T?
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, validator: assembly =>
{
var reader = assembly.GetMetadataReader();
......@@ -764,7 +761,7 @@ static void Main()
new C<object, string>();
}
}";
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp2 = CreateCompilation(new[] { source, source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
var expected = new[] {
// (5,15): warning CS8634: The type 'object?' cannot be used as type parameter 'T' in the generic type or method 'C<T, U>'. Nullability of type argument 'object?' doesn't match 'class' constraint.
// new C<object?, string?>();
......@@ -952,7 +949,6 @@ static void G(object o)
}
}";
var comp = CreateCompilation(source, parseOptions: TestOptions.Regular8);
// PROTOTYPE(NullableReferenceTypes): Use AssertNullableAttribute(method.GetReturnTypeAttributes()).
AssertNoNullableAttribute(comp);
}
......@@ -972,7 +968,6 @@ static void G()
}
}";
var comp = CreateCompilation(source, parseOptions: TestOptions.Regular8);
// PROTOTYPE(NullableReferenceTypes): Use AssertNullableAttribute(method.Parameters[0].GetAttributes()).
AssertNoNullableAttribute(comp);
}
......@@ -1084,6 +1079,7 @@ class B : A, I
}
[Fact]
[WorkItem(30010, "https://github.com/dotnet/roslyn/issues/30010")]
public void EmitAttribute_Iterator_01()
{
var source =
......@@ -1104,7 +1100,7 @@ class C
var property = module.ContainingAssembly.GetTypeByMetadataName("C").GetTypeMember("<F>d__0").GetProperty("System.Collections.Generic.IEnumerator<System.Object>.Current");
AssertNoNullableAttribute(property.GetAttributes());
var method = property.GetMethod;
// PROTOTYPE(NullableReferenceTypes): No synthesized attributes for this
// https://github.com/dotnet/roslyn/issues/30010: No synthesized attributes for this
// case which is inconsisten with IEnumerable<object?[]> in test below.
AssertNoNullableAttribute(method.GetReturnTypeAttributes());
AssertAttributes(method.GetAttributes(), "System.Diagnostics.DebuggerHiddenAttribute");
......@@ -1186,7 +1182,7 @@ public void ModuleMissingAttribute_BaseClass()
class B : A<object?>
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (4,7): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// class B : A<object?>
......@@ -1203,7 +1199,7 @@ public void ModuleMissingAttribute_Interface()
class C : I<(object X, object? Y)>
{
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (4,7): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// class C : I<(object X, object? Y)>
......@@ -1218,7 +1214,7 @@ public void ModuleMissingAttribute_MethodReturnType()
{
object? F() => null;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,5): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// object? F() => null;
......@@ -1233,7 +1229,7 @@ public void ModuleMissingAttribute_MethodParameters()
{
void F(object?[] c) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,12): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// void F(object?[] c) { }
......@@ -1248,7 +1244,7 @@ public void ModuleMissingAttribute_ConstructorParameters()
{
C(object?[] c) { }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,7): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// C(object?[] c) { }
......@@ -1263,7 +1259,7 @@ public void ModuleMissingAttribute_PropertyType()
{
object? P => null;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,5): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// object? P => null;
......@@ -1278,7 +1274,7 @@ public void ModuleMissingAttribute_PropertyParameters()
{
object this[object x, object? y] => throw new System.NotImplementedException();
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,27): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// object this[object x, object? y] => throw new System.NotImplementedException();
......@@ -1293,7 +1289,7 @@ public void ModuleMissingAttribute_OperatorReturnType()
{
public static object? operator+(C a, C b) => null;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,19): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// public static object? operator+(C a, C b) => null;
......@@ -1308,7 +1304,7 @@ public void ModuleMissingAttribute_OperatorParameters()
{
public static object operator+(C a, object?[] b) => a;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (3,41): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// public static object operator+(C a, object?[] b) => a;
......@@ -1320,7 +1316,7 @@ public void ModuleMissingAttribute_DelegateReturnType()
{
var source =
@"delegate object? D();";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (1,10): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// delegate object? D();
......@@ -1332,7 +1328,7 @@ public void ModuleMissingAttribute_DelegateParameters()
{
var source =
@"delegate void D(object?[] o);";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (1,17): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// delegate void D(object?[] o);
......@@ -1380,7 +1376,7 @@ static void G()
F((object? o) => { });
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (9,12): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// F((object? o) => { });
......@@ -1399,7 +1395,7 @@ static void M()
L();
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (5,9): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// object?[] L() => throw new System.NotImplementedException();
......@@ -1418,7 +1414,7 @@ static void M()
L(null, 2);
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, options: TestOptions.ReleaseModule);
comp.VerifyEmitDiagnostics(
// (5,16): error CS0518: Predefined type 'System.Runtime.CompilerServices.NullableAttribute' is not defined or imported
// void L(object? x, object y) { }
......@@ -1484,7 +1480,7 @@ static void Main()
A.Long._9.ToString(); // 9
}
}";
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
var comp2 = CreateCompilation(new[] { source2, NonNullTypesTrue }, parseOptions: TestOptions.Regular8, references: new[] { comp.EmitToImageReference() });
comp2.VerifyDiagnostics(
// (5,9): warning CS8602: Possible dereference of a null reference.
// A.Nested._1.Item1.ToString(); // 1
......@@ -1543,7 +1539,7 @@ public class B<T> :
(dynamic? _1, (object _2, dynamic? _3), object _4, dynamic? _5, object _6, dynamic? _7, object _8, dynamic? _9) arg) => arg;
public (dynamic? _1, (object _2, dynamic? _3), object _4, dynamic? _5, object _6, dynamic? _7, object _8, dynamic? _9) Property { get; set; }
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
CompileAndVerify(comp, validator: assembly =>
{
var reader = assembly.GetMetadataReader();
......
......@@ -264,10 +264,8 @@ static void Main()
Diagnostic(ErrorCode.WRN_UnreferencedField, "F3").WithArguments("D<T>.F3"));
}
// PROTOTYPE(NullableReferenceTypes): Implement ContainsNullableReferenceTypes
// with VisitType extension method.
[WorkItem(531368, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/531368")]
[Fact(Skip = "ContainsNullableReferenceTypes")]
[Fact]
public void TestDeepTypeAccessibilityBug18018()
{
// Bug 18018: Deep array types blow the stack during accessibility analysis.
......
......@@ -35,7 +35,7 @@ public void UnconstrainedGenericType()
internal T F4 = default(T);
}";
// https://github.com/dotnet/roslyn/issues/29849 Missing warnings for possible null-assignment to F3 and F4
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition });
var comp = CreateCompilation(new[] { source, NonNullTypesTrue });
comp.VerifyDiagnostics(
// (1,16): warning CS8618: Non-nullable field 'F1' is uninitialized.
// internal class C<T> where T : new()
......@@ -59,7 +59,7 @@ public void ReadWriteFields_DefaultConstructor()
internal object?[] F3;
private object[]? F4;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (1,7): warning CS8618: Non-nullable field 'F3' is uninitialized.
// class C
......@@ -93,7 +93,7 @@ internal C(object x, object y)
F4 = new[] { x, y };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (7,14): warning CS8618: Non-nullable field 'F3' is uninitialized.
// internal C()
......@@ -122,7 +122,7 @@ public void ReadOnlyFields_DefaultConstructor()
internal readonly object?[] F3;
private readonly object[]? F4;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (1,7): warning CS8618: Non-nullable field 'F3' is uninitialized.
// class C
......@@ -156,7 +156,7 @@ internal C(object x, object y)
F4 = new[] { x, y };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (7,14): warning CS8618: Non-nullable field 'F3' is uninitialized.
// internal C()
......@@ -183,12 +183,13 @@ public void FieldInitializers_DefaultConstructor()
internal object?[] F3 = new [] { new object(), null };
private object[]? F4 = new [] { new object() };
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
// PROTOTYPE(NullableReferenceTypes): Report warnings for static fields.
// https://github.com/dotnet/roslyn/issues/30020: Report warnings for static fields.
[Fact]
[WorkItem(30020, "https://github.com/dotnet/roslyn/issues/30020")]
public void StaticFields_DefaultConstructor()
{
var source =
......@@ -200,7 +201,7 @@ public void StaticFields_DefaultConstructor()
private readonly static object F3;
private readonly static object F4 = new object();
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
//// (8,12): warning CS8618: Non-nullable field 'F3' is uninitialized.
//// static C()
......@@ -210,8 +211,9 @@ public void StaticFields_DefaultConstructor()
//Diagnostic(ErrorCode.WRN_UninitializedNonNullableField, "C").WithArguments("field", "F1").WithLocation(8, 12));
}
// PROTOTYPE(NullableReferenceTypes): Report warnings for static fields.
// https://github.com/dotnet/roslyn/issues/30020: Report warnings for static fields.
[Fact]
[WorkItem(30020, "https://github.com/dotnet/roslyn/issues/30020")]
public void StaticFields_ExplicitConstructor()
{
var source =
......@@ -228,7 +230,7 @@ static C()
F4 = new object();
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
//// (8,12): warning CS8618: Non-nullable field 'F3' is uninitialized.
//// static C()
......@@ -270,7 +272,7 @@ internal C(object x, object y, string z) : base()
F3 = z;
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (7,13): warning CS8618: Non-nullable field 'F2' is uninitialized.
// private C()
......@@ -310,7 +312,7 @@ internal C(object x, object y)
P4 = new[] { x, y };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (7,14): warning CS8618: Non-nullable property 'P3' is uninitialized.
// internal C()
......@@ -350,7 +352,7 @@ internal C(object x, object y)
P4 = new[] { x, y };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (7,14): warning CS8618: Non-nullable property 'P3' is uninitialized.
// internal C()
......@@ -375,7 +377,7 @@ public void AutoPropertyInitializers_DefaultConstructor()
private object P1 { get; } = new object();
internal object P2 { get; set; } = new object();
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
......@@ -395,7 +397,7 @@ internal C(object o)
P2 = new object?[] { o };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
......@@ -413,16 +415,10 @@ internal C()
{
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
[Fact]
public void Events_ExplicitConstructors()
{
// PROTOTYPE(NullableReferenceTypes): Handle events.
}
[Fact]
public void GenericType()
{
......@@ -443,7 +439,7 @@ private C(T t)
P4 = t;
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (10,13): warning CS8618: Non-nullable field 'F2' is uninitialized.
// private C(T t)
......@@ -473,7 +469,7 @@ private C()
{
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (10,13): warning CS8618: Non-nullable property 'P1' is uninitialized.
// private C()
......@@ -499,11 +495,12 @@ private C()
{
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
[WorkItem(29065, "https://github.com/dotnet/roslyn/issues/29065")]
[WorkItem(30021, "https://github.com/dotnet/roslyn/issues/30021")]
[Fact]
public void GenericType_NonNullTypes()
{
......@@ -528,7 +525,7 @@ class C<T> where T : struct
}";
// [NonNullTypes(true)]
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (11,5): warning CS8618: Non-nullable field 'F2' is uninitialized.
// B() { }
......@@ -538,9 +535,9 @@ class C<T> where T : struct
Diagnostic(ErrorCode.WRN_UninitializedNonNullableField, "A").WithArguments("field", "F1").WithLocation(5, 5));
// [NonNullTypes(false)]
comp = CreateCompilation(new[] { source, NonNullTypesFalse, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
comp = CreateCompilation(new[] { source, NonNullTypesFalse }, parseOptions: TestOptions.Regular8);
// PROTOTYPE(NullableReferenceTypes): It feels like the following warning is confusing
// https://github.com/dotnet/roslyn/issues/30021: It feels like the following warning is confusing
// (11,5): warning CS8618: Non-nullable field 'F3' is uninitialized.
// B() { }
//
......@@ -576,10 +573,10 @@ class C<T> where T : struct
Diagnostic(ErrorCode.ERR_NullableUnconstrainedTypeParameter, "T?").WithLocation(10, 5)
);
// PROTOTYPE(NullableReferenceTypes): Test with [NonNullTypes(Warnings=false)].
// https://github.com/dotnet/roslyn/issues/29976: Test with [NonNullTypes(Warnings=false)].
}
// PROTOTYPE(NullableReferenceTypes): Test `where T : unmanaged`.
// https://github.com/dotnet/roslyn/issues/29976: Test `where T : unmanaged`.
[Fact]
public void TypeParameterConstraints()
{
......@@ -611,7 +608,7 @@ class C5<T, U> where T : A where U : T
T F5;
U G5;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (4,7): warning CS8618: Non-nullable field 'G1' is uninitialized.
// class C1<T, U> where U : T
......@@ -651,7 +648,7 @@ public void Tuple()
internal readonly (object, object? B) F3;
internal readonly (object?, object?) F4;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
......@@ -672,7 +669,7 @@ internal C(string s)
P = new [] { s };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (6,14): warning CS8618: Non-nullable property 'P' is uninitialized.
// internal C(string s)
......@@ -699,7 +696,7 @@ internal S(string s)
P = new [] { s };
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (6,14): error CS0843: Auto-implemented property 'S.P' must be fully assigned before control is returned to the caller.
// internal S(string s)
......@@ -725,12 +722,13 @@ public void EmptyStruct()
{
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
// PROTOTYPE(NullableReferenceTypes): Struct assign `this`.
[Fact(Skip = "Assign this")]
// https://github.com/dotnet/roslyn/issues/30022: Struct assign `this`.
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30022")]
[WorkItem(30022, "https://github.com/dotnet/roslyn/issues/30022")]
public void StructAssignThis()
{
var source =
......@@ -744,7 +742,7 @@ internal S(S s)
this = s;
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
......@@ -767,7 +765,7 @@ static void Main()
F(new S() { F = string.Empty });
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
......@@ -782,16 +780,10 @@ class C
private readonly S s;
private int i;
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics();
}
[Fact]
public void TryCatch()
{
// PROTOTYPE(NullableReferenceTypes):
}
[Fact]
public void LocalFunction()
{
......@@ -810,7 +802,7 @@ void L(object o)
L(new object());
}
}";
var comp = CreateCompilation(new[] { source, NonNullTypesTrue, NonNullTypesAttributesDefinition }, parseOptions: TestOptions.Regular8);
var comp = CreateCompilation(new[] { source, NonNullTypesTrue }, parseOptions: TestOptions.Regular8);
comp.VerifyDiagnostics(
// (6,5): warning CS8618: Non-nullable field 'G' is uninitialized.
// C()
......
......@@ -14,6 +14,7 @@ namespace Microsoft.CodeAnalysis.CSharp.UnitTests.Symbols
public class TypeTests : CSharpTestBase
{
[Fact]
[WorkItem(30023, "https://github.com/dotnet/roslyn/issues/30023")]
public void Bug18280()
{
string brackets = "[][][][][][][][][][][][][][][][][][][][]";
......@@ -35,7 +36,7 @@ public void Bug18280()
var arr = x.Type.TypeSymbol;
arr.GetHashCode();
// PROTOTYPE(NullableReferenceTypes): StackOverflowException in SetUnknownNullabilityForReferenceTypes.
// https://github.com/dotnet/roslyn/issues/30023: StackOverflowException in SetUnknownNullabilityForReferenceTypes.
//arr.SetUnknownNullabilityForReferenceTypes();
}
......
......@@ -52,9 +52,6 @@ public NullableAttribute(bool[] transformFlags)
}
";
// PROTOTYPE(NullableReferenceTypes): remove
protected const string NonNullTypesAttributesDefinition = @"";
protected const string NotNullWhenTrueAttributeDefinition = @"
namespace System.Runtime.CompilerServices
{
......@@ -556,17 +553,16 @@ public static SyntaxTree ParseWithRoundTripCheck(string text, CSharpParseOptions
var compilation = createCompilationLambda();
// 'skipUsesIsNullable' may need to be set for some tests, particularly those that want to verify
// symbols are created lazily, since 'UsesIsNullableVisitor' will eagerly visit all members.
// PROTOTYPE(NullableReferenceTypes): Remove skipUsesIsNullable and call VerifyNoNullability
// on a separate Compilation instance created with createCompilationLambda.
if (!skipUsesIsNullable && !IsNullableEnabled(compilation))
{
VerifyUsesOfNullability(compilation.SourceModule.GlobalNamespace, expectedUsesOfNullable: ImmutableArray<string>.Empty);
VerifyUsesOfNullability(createCompilationLambda().SourceModule.GlobalNamespace, expectedUsesOfNullable: ImmutableArray<string>.Empty);
}
return compilation;
}
internal static bool IsNullableEnabled(CSharpCompilation compilation)
{
// This method should not cause any binding, including resolving references, etc.
var trees = compilation.SyntaxTrees;
if (trees.IsDefaultOrEmpty)
{
......
......@@ -333,9 +333,7 @@ static IEnumerator<IList<DateTime>> M()
await TestInRegularAndScriptAsync(initial, expected);
}
// PROTOTYPE(NullableReferenceTypes): Assert in CustomModifierUtils.CopyMethodCustomModifiers
// fails with difference in nullability in D<W>.P1.
[Fact(Skip = "TODO"), Trait(Traits.Feature, Traits.Features.CodeActionsChangeToYield)]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsChangeToYield)]
public async Task TestAddYieldNoTypeArguments()
{
var initial =
......
......@@ -272,8 +272,9 @@ class Program
}", parameters: s_nullableFeature);
}
[Fact(Skip = "PROTOTYPE(NullableReferenceTypes): the warning is temporarily disabled in this scenario to avoid cycle")]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30026: the warning is temporarily disabled in this scenario to avoid cycle")]
[WorkItem(26626, "https://github.com/dotnet/roslyn/issues/26626")]
[WorkItem(30026, "https://github.com/dotnet/roslyn/issues/30026")]
public async Task FixOptionalParameter()
{
await TestInRegularAndScript1Async(
......
......@@ -8,6 +8,7 @@
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.UnitTests;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics.Async
......@@ -344,8 +345,8 @@ class C
index: 1);
}
// PROTOTYPE(NullableReferenceTypes): Enable.
[Fact(Skip = "TODO")]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30027")]
[WorkItem(30027, "https://github.com/dotnet/roslyn/issues/30027")]
public async Task UpgradeAllProjectsToCSharp8_NullableReferenceType()
{
await TestLanguageVersionUpgradedAsync(
......
......@@ -829,7 +829,7 @@ public override int X
}
[WorkItem(545615, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545615")]
[Fact(Skip = "PROTOTYPE(NullableReferenceTypes): Needs investigation"), Trait(Traits.Feature, Traits.Features.CodeActionsImplementAbstractClass)]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsImplementAbstractClass)]
public async Task TestParamsArray()
{
await TestAllOptionsOffAsync(
......
......@@ -3714,9 +3714,9 @@ void M()
'a {FeaturesResources.is_} new {{ }}"));
}
// PROTOTYPE(NullableReferenceTypes):
[WorkItem(543873, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543873")]
[Fact(Skip = "PROTOTYPE(NullableReferenceTypes)"), Trait(Traits.Feature, Traits.Features.QuickInfo)]
[WorkItem(30035, "https://github.com/dotnet/roslyn/issues/30035")]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30035"), Trait(Traits.Feature, Traits.Features.QuickInfo)]
public async Task TestNestedAnonymousType()
{
// verify nested anonymous types are listed in the same order for different properties
......
......@@ -1836,7 +1836,7 @@ class D : C
End Function
<WorkItem(545664, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545664")>
<WpfFact(Skip:="PROTOTYPE(NullableReferenceTypes) Needs investigation"), Trait(Traits.Feature, Traits.Features.Completion)>
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function TestArrayAfterOptionalParameter() As Task
Using state = TestState.CreateCSharpTestState(
<Document><![CDATA[
......
......@@ -3654,6 +3654,7 @@ .maxstack 1
/// Netmodules with same name.
/// </summary>
[Fact]
[WorkItem(30031, "https://github.com/dotnet/roslyn/issues/30031")]
public void NetModuleDuplicateReferences()
{
// Netmodule 0
......@@ -3697,7 +3698,7 @@ static void M()
}
}";
var assemblyName = ExpressionCompilerUtilities.GenerateUniqueName();
// PROTOTYPE(NullableReferenceTypes): error CS0101: The namespace 'System.Runtime.CompilerServices' already contains a definition for 'NullableAttribute'
// https://github.com/dotnet/roslyn/issues/30031: error CS0101: The namespace 'System.Runtime.CompilerServices' already contains a definition for 'NullableAttribute'
var parseOptions = TestOptions.Regular7;
var compilationN0 = CreateCompilation(
sourceN0,
......@@ -6441,8 +6442,9 @@ void M(D lambda)
Assert.Contains(AttributeDescription.IsReadOnlyAttribute.FullName + "..ctor()", methodsGenerated);
}
// PROTOTYPE(NullableReferenceTypes): EnsureNullableAttributeExists is not called.
[Fact(Skip = "TODO")]
// https://github.com/dotnet/roslyn/issues/30033: EnsureNullableAttributeExists is not called.
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30033")]
[WorkItem(30033, "https://github.com/dotnet/roslyn/issues/30033")]
public void EmitNullableAttribute_ExpressionType()
{
var source =
......@@ -6484,11 +6486,12 @@ .maxstack 1
});
}
// PROTOTYPE(NullableReferenceTypes): Expression below currently reports
// https://github.com/dotnet/roslyn/issues/30034: Expression below currently reports
// "CS0453: The type 'object' must be a non-nullable value type ... 'Nullable<T>'"
// because CSharpCompilationExtensions.IsFeatureEnabled() fails when there
// the Compilation contains no syntax trees.
[Fact(Skip = "TODO")]
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/30034")]
[WorkItem(30034, "https://github.com/dotnet/roslyn/issues/30034")]
public void EmitNullableAttribute_LambdaParameters()
{
var source =
......
......@@ -1249,6 +1249,7 @@ .maxstack 2
// An assembly with the expected corlib name and with System.Object should
// be considered the corlib, even with references to external assemblies.
[WorkItem(13275, "https://github.com/dotnet/roslyn/issues/13275")]
[WorkItem(30030, "https://github.com/dotnet/roslyn/issues/30030")]
[Fact]
public void CorLibWithAssemblyReferences()
{
......@@ -1314,7 +1315,7 @@ static void M()
{
}
}";
// PROTOTYPE(NullableReferenceTypes): C#8 projects require System.Attribute.
// https://github.com/dotnet/roslyn/issues/30030: C#8 projects require System.Attribute.
var comp = CreateEmptyCompilation(source, options: TestOptions.DebugDll, parseOptions: TestOptions.Regular7, references: new[] { refLib, AssemblyMetadata.Create(module).GetReference() });
comp.VerifyDiagnostics();
......
......@@ -207,6 +207,7 @@ class C
}
[Fact]
[WorkItem(30030, "https://github.com/dotnet/roslyn/issues/30030")]
public void ImportKinds()
{
var source = @"
......@@ -226,7 +227,7 @@ void M()
}
}
";
// PROTOTYPE(NullableReferenceTypes): C#8 projects require System.Attribute.
// https://github.com/dotnet/roslyn/issues/30030: C#8 projects require System.Attribute.
var aliasedRef = CreateEmptyCompilation("", assemblyName: "Lib", parseOptions: TestOptions.Regular7).EmitToImageReference(aliases: ImmutableArray.Create("A"));
var comp = CreateCompilation(source, new[] { aliasedRef });
WithRuntimeInstance(comp, runtime =>
......@@ -299,6 +300,7 @@ void M()
}
[Fact]
[WorkItem(30030, "https://github.com/dotnet/roslyn/issues/30030")]
public void ForwardToModule()
{
var source = @"
......@@ -328,7 +330,7 @@ void M2()
}
}
";
// PROTOTYPE(NullableReferenceTypes): C#8 projects require System.Attribute.
// https://github.com/dotnet/roslyn/issues/30030: C#8 projects require System.Attribute.
var aliasedRef = CreateEmptyCompilation("", assemblyName: "Lib", parseOptions: TestOptions.Regular7).EmitToImageReference(aliases: ImmutableArray.Create("A"));
var comp = CreateCompilation(source, new[] { aliasedRef });
......@@ -635,7 +637,6 @@ int M()
}
}
";
// PROTOTYPE(NullableReferenceTypes): NamespaceSymbol.Extent.Kind is set to Compilation rather than Module.
var comp = CreateCompilation(source, parseOptions: TestOptions.Regular7);
comp.GetDiagnostics().Where(d => d.Severity > DiagnosticSeverity.Info).Verify();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册