// NYI: /addmodule support // TODO: Add tests for assembly attributes emitted into netmodules which suppress synthesized CompilationRelaxationsAttribute/RuntimeCompatibilityAttribute #endregion #region DebuggableAttribute private void VerifyDebuggableAttribute(CSharpAttributeData attribute, SourceAssemblySymbol sourceAssembly, DebuggableAttribute.DebuggingModes expectedDebuggingMode) { ModuleSymbol module = sourceAssembly.Modules[0]; NamespaceSymbol diagnosticsNS = Get_System_Diagnostics_NamespaceSymbol(module); NamedTypeSymbol debuggableAttributeType = diagnosticsNS.GetTypeMember("DebuggableAttribute"); var debuggableAttributeCtor = (MethodSymbol)sourceAssembly.DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_Diagnostics_DebuggableAttribute__ctorDebuggingModes); Assert.Equal(debuggableAttributeType, attribute.AttributeClass); Assert.Equal(debuggableAttributeCtor, attribute.AttributeConstructor); Assert.Equal(1, attribute.CommonConstructorArguments.Length); attribute.VerifyValue(0, TypedConstantKind.Enum, (int)expectedDebuggingMode); Assert.Equal(0, attribute.CommonNamedArguments.Length); }
private void VerifyCompilationRelaxationsAttribute(CSharpAttributeData attribute, SourceAssemblySymbol sourceAssembly, bool isSynthesized) { ModuleSymbol module = sourceAssembly.Modules[0]; NamespaceSymbol compilerServicesNS = Get_System_Runtime_CompilerServices_NamespaceSymbol(module); NamedTypeSymbol compilationRelaxationsAttrType = compilerServicesNS.GetTypeMember("CompilationRelaxationsAttribute"); var compilationRelaxationsCtor = (MethodSymbol)sourceAssembly.DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_CompilerServices_CompilationRelaxationsAttribute__ctorInt32); Assert.Equal(compilationRelaxationsAttrType, attribute.AttributeClass); Assert.Equal(compilationRelaxationsCtor, attribute.AttributeConstructor); int expectedArgValue = isSynthesized ? (int)CompilationRelaxations.NoStringInterning : 0; Assert.Equal(1, attribute.CommonConstructorArguments.Length); attribute.VerifyValue<int>(0, TypedConstantKind.Primitive, expectedArgValue); Assert.Equal(0, attribute.CommonNamedArguments.Length); }