<MoqVersion>4.12.0</MoqVersion>
<FsCheckVersion>2.14.3</FsCheckVersion>
<SdkVersionForWorkloadTesting>7.0.100-preview.3.22151.18</SdkVersionForWorkloadTesting>
- <CompilerPlatformTestingVersion>1.1.1-beta1.22103.1</CompilerPlatformTestingVersion>
+ <CompilerPlatformTestingVersion>1.1.2-beta1.22122.4</CompilerPlatformTestingVersion>
<!-- Docs -->
<MicrosoftPrivateIntellisenseVersion>6.0.0-preview-20220104.1</MicrosoftPrivateIntellisenseVersion>
<!-- ILLink -->
{
public class AdditionalAttributesOnStub
{
- [ConditionalFact]
+ [Fact]
public async Task SkipLocalsInitAdded()
{
string source = @"
Assert.Contains(stubMethod.GetAttributes(), attr => attr.AttributeClass!.ToDisplayString() == typeof(SkipLocalsInitAttribute).FullName);
}
- [ConditionalFact]
+ [Fact]
public async Task SkipLocalsInitNotAddedOnForwardingStub()
{
string source = @"
Assert.DoesNotContain(stubMethod.GetAttributes(), attr => attr.AttributeClass!.ToDisplayString() == typeof(SkipLocalsInitAttribute).FullName);
}
- [ConditionalFact]
+ [Fact]
public async Task GeneratedCodeAdded()
{
string source = @"
Assert.Contains(stubMethod.GetAttributes(), attr => attr.AttributeClass!.ToDisplayString() == typeof(System.CodeDom.Compiler.GeneratedCodeAttribute).FullName);
}
- [ConditionalFact]
+ [Fact]
public async Task GeneratedCodeNotAddedOnForwardingStub()
{
string source = @"
yield return new object[] { TestTargetFramework.Framework, false };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(GetDownlevelTargetFrameworks))]
public async Task SkipLocalsInitOnDownlevelTargetFrameworks(TestTargetFramework targetFramework, bool expectSkipLocalsInit)
{
}
}
- [ConditionalFact]
+ [Fact]
public async Task SkipLocalsInitNotAddedWhenDefinedAtModuleLevel()
{
string source = @"
Assert.DoesNotContain(stubMethod.GetAttributes(), attr => attr.AttributeClass!.ToDisplayString() == typeof(SkipLocalsInitAttribute).FullName);
}
- [ConditionalFact]
+ [Fact]
public async Task SkipLocalsInitNotAddedWhenDefinedAtClassLevel()
{
string source = @"
Assert.DoesNotContain(stubMethod.GetAttributes(), attr => attr.AttributeClass!.ToDisplayString() == typeof(SkipLocalsInitAttribute).FullName);
}
- [ConditionalFact]
+ [Fact]
public async Task SkipLocalsInitNotAddedWhenDefinedOnMethodByUser()
{
string source = @"
{
public class AttributeForwarding
{
- [ConditionalTheory]
+ [Theory]
[InlineData("SuppressGCTransition", "System.Runtime.InteropServices.SuppressGCTransitionAttribute")]
[InlineData("UnmanagedCallConv", "System.Runtime.InteropServices.UnmanagedCallConvAttribute")]
public async Task KnownParameterlessAttribute(string attributeSourceName, string attributeMetadataName)
attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, attributeType));
}
- [ConditionalFact]
+ [Fact]
public async Task UnmanagedCallConvAttribute_EmptyCallConvArray()
{
string source = @"
&& attr.NamedArguments[0].Value.Values.Length == 0);
}
- [ConditionalFact]
+ [Fact]
public async Task UnmanagedCallConvAttribute_SingleCallConvType()
{
string source = @"
callConvType));
}
- [ConditionalFact]
+ [Fact]
public async Task UnmanagedCallConvAttribute_MultipleCallConvTypes()
{
string source = @"
callConvType2));
}
- [ConditionalFact]
+ [Fact]
public async Task DefaultDllImportSearchPathsAttribute()
{
string source = @$"
&& expected == (DllImportSearchPath)attr.ConstructorArguments[0].Value!);
}
- [ConditionalFact]
+ [Fact]
public async Task OtherAttributeType()
{
string source = @"
attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, attributeType));
}
- [ConditionalFact]
+ [Fact]
public async Task InOutAttributes_Forwarded_To_ForwardedParameter()
{
string source = @"
}));
}
- [ConditionalFact]
+ [Fact]
public async Task MarshalAsAttribute_Forwarded_To_ForwardedParameter()
{
string source = @"
}));
}
- [ConditionalFact]
+ [Fact]
public async Task MarshalAsAttribute_Forwarded_To_ForwardedParameter_Array()
{
string source = @"
yield return new object[] { CodeSnippets.RefReturn("int"), 2, 2 };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToCompile))]
public async Task ValidateSnippets(string source, int expectedGeneratorErrors, int expectedCompilerErrors)
{
yield return new object[] { CodeSnippets.IncorrectAttributeFieldType, 1, 1 };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToCompile_InvalidCode))]
public async Task ValidateSnippets_InvalidCodeGracefulFailure(string source, int expectedGeneratorErrors, int expectedCompilerErrors)
{
yield return new[] { CodeSnippets.CollectionsOfCollectionsStress };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToCompile))]
public async Task ValidateSnippets(string source)
{
yield return new object[] { CodeSnippets.PreprocessorIfAfterAttributeAroundFunctionAdditionalFunctionAfter("Foo"), Array.Empty<string>() };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToCompileWithPreprocessorSymbols))]
public async Task ValidateSnippetsWithPreprocessorDefintions(string source, IEnumerable<string> preprocessorSymbols)
{
}
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToValidateFallbackForwarder))]
public async Task ValidateSnippetsFallbackForwarder(string source, TestTargetFramework targetFramework, bool expectFallbackForwarder)
{
yield return new[] { CodeSnippets.BasicParameterByValue("int") };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(FullyBlittableSnippetsToCompile))]
public async Task ValidateSnippetsWithBlittableAutoForwarding(string source)
{
yield return new[] { CodeSnippets.SetLastErrorTrue<int>() };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(SnippetsWithBlittableTypesButNonBlittableDataToCompile))]
public async Task ValidateSnippetsWithBlittableTypesButNonBlittableMetadataDoNotAutoForward(string source)
{
#pragma warning disable xUnit1004 // Test methods should not be skipped.
// If we have any new experimental APIs that we are implementing that have not been approved,
// we will add new scenarios for this test.
- [ConditionalTheory(Skip = "No current scenarios to test.")]
+ [Theory(Skip = "No current scenarios to test.")]
#pragma warning restore
[MemberData(nameof(CodeSnippetsToCompileWithMarshalType))]
public async Task ValidateSnippetsWithMarshalType(string source)
yield return new object[] { new[] { CodeSnippets.BasicParameterByValue("int[]", CodeSnippets.DisableRuntimeMarshalling), CodeSnippets.BasicParameterWithByRefModifier("ref", "int") } };
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(CodeSnippetsToCompileMultipleSources))]
public async Task ValidateSnippetsWithMultipleSources(string[] sources)
{
new object[] { typeof(System.Text.StringBuilder) },
};
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(MarshallingRequiredTypes))]
[MemberData(nameof(NoMarshallingRequiredTypes))]
[ActiveIssue("https://github.com/dotnet/runtime/issues/60909", typeof(PlatformDetection), nameof(PlatformDetection.IsArm64Process), nameof(PlatformDetection.IsWindows))]
.WithArguments("Method_Return"));
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(MarshallingRequiredTypes))]
[MemberData(nameof(NoMarshallingRequiredTypes))]
public async Task ByRef_ReportsDiagnostic(Type type)
.WithArguments("Method_Ref"));
}
- [ConditionalFact]
+ [Fact]
public async Task SetLastErrorTrue_ReportsDiagnostic()
{
string source = @$"
.WithArguments("Method2"));
}
- [ConditionalTheory]
+ [Theory]
[MemberData(nameof(UnsupportedTypes))]
public async Task UnsupportedType_NoDiagnostic(Type type)
{
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalTheory]
+ [Theory]
[InlineData(UnmanagedType.Interface)]
[InlineData(UnmanagedType.IDispatch)]
[InlineData(UnmanagedType.IInspectable)]
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task LibraryImport_NoDiagnostic()
{
string source = @$"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NotDllImport_NoDiagnostic()
{
string source = @$"
{
private const string ConvertToLibraryImportKey = "ConvertToLibraryImport";
- [ConditionalFact]
+ [Fact]
public async Task Basic()
{
string source = @$"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task Comments()
{
string source = @$"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task MultipleAttributes()
{
string source = @$"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task NamedArguments()
{
string source = @$"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task RemoveableNamedArguments()
{
string source = @$"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task ReplaceableExplicitPlatformDefaultCallingConvention()
{
string source = @$"
fixedSource);
}
- [ConditionalTheory]
+ [Theory]
[InlineData(CallingConvention.Cdecl, typeof(CallConvCdecl))]
[InlineData(CallingConvention.StdCall, typeof(CallConvStdcall))]
[InlineData(CallingConvention.ThisCall, typeof(CallConvThiscall))]
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task PreferredAttributeOrder()
{
string source = @$"
[InlineData(CharSet.Ansi, 'A')]
[InlineData(CharSet.Unicode, 'W')]
- [ConditionalTheory]
+ [Theory]
public async Task ExactSpelling_False_NoAutoCharSet_Provides_No_Suffix_And_Suffix_Fix(CharSet charSet, char suffix)
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithSuffix, $"{ConvertToLibraryImportKey}{suffix}");
}
- [ConditionalFact]
+ [Fact]
public async Task ExactSpelling_False_AutoCharSet_Provides_No_Suffix_And_Both_Suffix_Fixes()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithWSuffix, $"{ConvertToLibraryImportKey}W");
}
- [ConditionalFact]
+ [Fact]
public async Task ExactSpelling_False_ImplicitAnsiCharSet_Provides_No_Suffix_And_Suffix_Fix()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithASuffix, $"{ConvertToLibraryImportKey}A");
}
- [ConditionalFact]
+ [Fact]
public async Task ExactSpelling_False_ConstantNonLiteralEntryPoint()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithASuffix, $"{ConvertToLibraryImportKey}A");
}
- [ConditionalFact]
+ [Fact]
public async Task Implicit_ExactSpelling_False_Offers_Suffix_Fix()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithASuffix, $"{ConvertToLibraryImportKey}A");
}
- [ConditionalFact]
+ [Fact]
public async Task ExactSpelling_False_NameOfEntryPoint()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithASuffix, $"{ConvertToLibraryImportKey}A");
}
- [ConditionalFact]
+ [Fact]
public async Task ExactSpelling_False_ImplicitEntryPointName()
{
string source = $@"
await VerifyCS.VerifyCodeFixAsync(source, fixedSourceWithASuffix, $"{ConvertToLibraryImportKey}A");
}
- [ConditionalFact]
+ [Fact]
public async Task PreserveSigFalseSignatureModified()
{
string source = @"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task MakeEnclosingTypesPartial()
{
string source = @"
fixedSource);
}
- [ConditionalFact]
+ [Fact]
public async Task BooleanMarshalAsAdded()
{
string source = @$"
{
public class Diagnostics
{
- [ConditionalTheory]
+ [Theory]
[InlineData(TestTargetFramework.Framework)]
[InlineData(TestTargetFramework.Core)]
[InlineData(TestTargetFramework.Standard)]
Assert.Empty(newCompDiags);
}
- [ConditionalTheory]
+ [Theory]
[InlineData(TestTargetFramework.Framework)]
[InlineData(TestTargetFramework.Core)]
[InlineData(TestTargetFramework.Standard)]
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ParameterTypeNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ReturnTypeNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ParameterTypeNotSupportedWithDetails_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ReturnTypeNotSupportedWithDetails_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ParameterConfigurationNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task ReturnConfigurationNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task MarshalAsUnmanagedTypeNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task MarshalAsFieldNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task StringMarshallingForwardingNotSupported_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task InvalidStringMarshallingConfiguration_ReportsDiagnostic()
{
string source = @$"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task NonPartialMethod_ReportsDiagnostic()
{
string source = @"
Assert.Empty(newCompDiags);
}
- [ConditionalFact]
+ [Fact]
public async Task NonStaticMethod_ReportsDiagnostic()
{
string source = @"
TestUtils.AssertPreSourceGeneratorCompilation(newComp);
}
- [ConditionalFact]
+ [Fact]
public async Task GenericMethod_ReportsDiagnostic()
{
string source = @"
TestUtils.AssertPreSourceGeneratorCompilation(newComp);
}
- [ConditionalTheory]
+ [Theory]
[InlineData("class")]
[InlineData("struct")]
[InlineData("record")]
TestUtils.AssertPreSourceGeneratorCompilation(newComp, additionalDiag);
}
- [ConditionalTheory]
+ [Theory]
[InlineData("class")]
[InlineData("struct")]
[InlineData("record")]
public const string RequiresIncrementalSyntaxTreeModifySupport = "The GeneratorDriver treats all SyntaxTree replace operations on a Compilation as an Add/Remove operation instead of a Modify operation"
+ ", so all cached results based on that input are thrown out. As a result, we cannot validate that unrelated changes within the same SyntaxTree do not cause regeneration.";
- [ConditionalFact]
+ [Fact]
public async Task AddingNewUnrelatedType_DoesNotRegenerateSource()
{
string source = CodeSnippets.BasicParametersAndModifiers<int>();
});
}
- [ConditionalFact]
+ [Fact]
public async Task AppendingUnrelatedSource_DoesNotRegenerateSource()
{
string source = $"namespace NS{{{CodeSnippets.BasicParametersAndModifiers<int>()}}}";
});
}
- [ConditionalFact]
+ [Fact]
public async Task AddingFileWithNewLibraryImport_DoesNotRegenerateOriginalMethod()
{
string source = CodeSnippets.BasicParametersAndModifiers<int>();
});
}
- [ConditionalFact]
+ [Fact]
public async Task ReplacingFileWithNewLibraryImport_DoesNotRegenerateStubsInOtherFiles()
{
Compilation comp1 = await TestUtils.CreateCompilation(new string[] { CodeSnippets.BasicParametersAndModifiers<int>(), CodeSnippets.BasicParametersAndModifiers<bool>() });
});
}
- [ConditionalFact]
+ [Fact]
public async Task ChangingMarshallingStrategy_RegeneratesStub()
{
string stubSource = CodeSnippets.BasicParametersAndModifiers("CustomType");
});
}
- [ConditionalFact]
+ [Fact]
public async Task ChangingMarshallingAttributes_SameStrategy_DoesNotRegenerate()
{
string source = CodeSnippets.BasicParametersAndModifiers<int>();
[ActiveIssue("https://github.com/dotnet/runtime/issues/60650", TestRuntimes.Mono)]
public class ManualTypeMarshallingAnalyzerTests
{
- [ConditionalFact]
+ [Fact]
public async Task NullNativeType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeNonNullRule).WithLocation(0).WithArguments("S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonNamedNativeType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("int*", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeBlittableRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task ClassNativeType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task BlittableNativeType_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task BlittableNativeWithNonBlittableValueProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeBlittableRule).WithLocation(0).WithArguments("string", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeTypeWithBlittableValueProperty_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task ClassNativeTypeWithValueProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableGetPinnableReferenceReturnType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(GetPinnableReferenceReturnTypeBlittableRule).WithLocation(0));
}
- [ConditionalFact]
+ [Fact]
public async Task BlittableGetPinnableReferenceReturnType_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableMarshallerGetPinnableReferenceReturnType_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task BlittableMarshallerGetPinnableReferenceReturnType_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task TypeWithGetPinnableReferenceNonPointerReturnType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBePointerSizedRule).WithLocation(0).WithArguments("int", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task TypeWithGetPinnableReferencePointerReturnType_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task TypeWithGetPinnableReferenceByRefValuePropertyType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(RefValuePropertyUnsupportedRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithGetPinnableReferenceByRefValuePropertyType_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(RefValuePropertyUnsupportedRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithGetPinnableReferenceNoValueProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(MarshallerGetPinnableReferenceRequiresValuePropertyRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithGetPinnableReferenceWithNonPointerValueProperty_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithNoMarshallingMethods_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithNoMarshallingMethods_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CollectionNativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithWrongConstructor_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CollectionNativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithCorrectConstructor_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithIncorrectStackallocConstructor_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CollectionNativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithOnlyStackallocConstructor_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CallerAllocMarshallingShouldSupportAllocatingMarshallingFallbackRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithMissingManagedValuesProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CollectionNativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task CollectionNativeTypeWithMissingNativeValueStorageProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CollectionNativeTypeMustHaveRequiredShapeRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithOnlyConstructor_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithOnlyToManagedMethod_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithOnlyStackallocConstructor_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(CallerAllocMarshallingShouldSupportAllocatingMarshallingFallbackRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task TypeWithOnlyNativeStackallocConstructorAndGetPinnableReference_ReportsDiagnostics()
{
string source = @"
VerifyCS.Diagnostic(GetPinnableReferenceShouldSupportAllocatingMarshallingFallbackRule).WithLocation(0).WithArguments("S", "Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithConstructorAndSetOnlyValueProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(ValuePropertyMustHaveGetterRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithToManagedAndGetOnlyValueProperty_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(ValuePropertyMustHaveSetterRule).WithLocation(0).WithArguments("Native"));
}
- [ConditionalFact]
+ [Fact]
public async Task BlittableNativeTypeOnMarshalUsingParameter_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeTypeOnMarshalUsingParameter_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeBlittableRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeTypeOnMarshalUsingParameter_MultipleCompilations_ReportsDiagnostic_WithLocation()
{
string source1 = @"
await test.RunAsync();
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeTypeOnMarshalUsingReturn_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeBlittableRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task NonBlittableNativeTypeOnMarshalUsingField_ReportsDiagnostic()
{
string source = @"
VerifyCS.Diagnostic(NativeTypeMustBeBlittableRule).WithLocation(0).WithArguments("Native", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task GenericNativeTypeWithValueTypeValueProperty_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task GenericNativeTypeWithGenericMemberInstantiatedWithBlittable_DoesNotReportDiagnostic()
{
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task UninstantiatedGenericNativeTypeOnNonGeneric_ReportsDiagnostic()
{
await VerifyCS.VerifyAnalyzerAsync(source, VerifyCS.Diagnostic(NativeGenericTypeMustBeClosedOrMatchArityRule).WithLocation(0).WithArguments("Native<>", "S"));
}
- [ConditionalFact]
+ [Fact]
public async Task UninstantiatedGenericNativeTypeOnGenericWithArityMismatch_ReportsDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source, VerifyCS.Diagnostic(NativeGenericTypeMustBeClosedOrMatchArityRule).WithLocation(0).WithArguments("Native<,>", "S<T>"));
}
- [ConditionalFact]
+ [Fact]
public async Task UninstantiatedGenericNativeTypeOnGenericWithArityMatch_DoesNotReportDiagnostic()
{
string source = @"
await VerifyCS.VerifyAnalyzerAsync(source);
}
- [ConditionalFact]
+ [Fact]
public async Task NativeTypeWithStackallocConstructorWithoutBufferSize_ReportsDiagnostic()
{
string source = @"
optionsProvider: options,
driverOptions: driverOptions);
- // The non-configurable test-packages folder may be incomplete/corrupt.
- // - https://github.com/dotnet/roslyn-sdk/issues/487
- // - https://github.com/dotnet/roslyn-sdk/issues/590
- internal static void ThrowSkipExceptionIfPackagingException(Exception e)
- {
- if (e.GetType().FullName == "NuGet.Packaging.Core.PackagingException")
- throw new SkipTestException($"Skipping test due to issue with test-packages ({e.Message}). See https://github.com/dotnet/roslyn-sdk/issues/590.");
- }
-
private static async Task<ImmutableArray<MetadataReference>> ResolveReferenceAssemblies(ReferenceAssemblies referenceAssemblies)
{
try
ResolveRedirect.Instance.Start();
return await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
}
- catch (Exception e)
- {
- ThrowSkipExceptionIfPackagingException(e);
- throw;
- }
finally
{
ResolveRedirect.Instance.Stop();
return true;
}));
}
-
- protected override async Task RunImplAsync(CancellationToken cancellationToken)
- {
- try
- {
- await base.RunImplAsync(cancellationToken);
- }
- catch (System.Exception e)
- {
- TestUtils.ThrowSkipExceptionIfPackagingException(e);
- throw;
- }
- }
}
}
}