Skip to content

Commit

Permalink
Merge pull request #52 from Sergio0694/dev/requires-dynamic-code
Browse files Browse the repository at this point in the history
Add [RequiresDynamicCode] polyfill
  • Loading branch information
Sergio0694 authored Jan 18, 2023
2 parents db53c4a + c0b30ec commit 7821fdf
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ It also includes the following optional runtime-supported polyfills:
- `[DynamicallyAccessedMembers]`
- `[DynamicDependency]`
- `[RequiresUnreferencedCode]`
- `[RequiresDynamicCode]`
- `[UnconditionalSuppressMessage]`
- `[StackTraceHidden]` (see [here](https://makolyte.com/csharp-exclude-exception-throw-helper-methods-from-the-stack-trace/))
- `[UnmanagedCallersOnly]` (see [docs](https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.unmanagedcallersonlyattribute)))
Expand Down
1 change: 1 addition & 0 deletions src/PolySharp.Package/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ It also includes the following optional runtime-supported polyfills:
- `[DynamicallyAccessedMembers]`
- `[DynamicDependency]`
- `[RequiresUnreferencedCode]`
- `[RequiresDynamicCode]`
- `[UnconditionalSuppressMessage]`
- `[StackTraceHidden]` (see [here](https://makolyte.com/csharp-exclude-exception-throw-helper-methods-from-the-stack-trace/))
- `[UnmanagedCallersOnly]` (see [docs](https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.unmanagedcallersonlyattribute)))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// <auto-generated/>
#pragma warning disable
#nullable enable annotations

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System.Diagnostics.CodeAnalysis
{
/// <summary>
/// Indicates that the specified method requires the ability to generate new code at runtime,
/// for example through <see cref="global::System.Reflection"/>.
/// </summary>
/// <remarks>
/// This allows tools to understand which methods are unsafe to call when compiling ahead of time.
/// </remarks>
[global::System.AttributeUsage(
global::System.AttributeTargets.Method |
global::System.AttributeTargets.Constructor |
global::System.AttributeTargets.Class,
Inherited = false)]
internal sealed class RequiresDynamicCodeAttribute : global::System.Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="global::System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute"/> class
/// with the specified message.
/// </summary>
/// <param name="message">
/// A message that contains information about the usage of dynamic code.
/// </param>
public RequiresDynamicCodeAttribute(string message)
{
Message = message;
}

/// <summary>
/// Gets a message that contains information about the usage of dynamic code.
/// </summary>
public string Message { get; }

/// <summary>
/// Gets or sets an optional URL that contains more information about the method,
/// why it requires dynamic code, and what options a consumer has to deal with it.
/// </summary>
public string? Url { get; set; }
}
}
5 changes: 5 additions & 0 deletions tests/PolySharp.Tests/RuntimeSupport.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,9 @@ public void SuppressEverything(Type type)
{
_ = type.GetProperties();
}

[RequiresDynamicCode("This method creates some type at runtime")]
public void MakeUpSomeNewType()
{
}
}

0 comments on commit 7821fdf

Please sign in to comment.