Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix bunch of annontations #1959

Merged
merged 5 commits into from Jul 12, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -18,8 +18,8 @@
<DocumentationFile>$(OutputPath)\$(TargetFramework)\Microsoft.Data.SqlClient.xml</DocumentationFile>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Product>Core $(BaseProduct)</Product>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
<NoWarn>$(NoWarn);IL2026;IL2057;IL2067;IL2070;IL2072;IL2075;IL2077;IL2080;IL2093;IL2111</NoWarn>
<EnableTrimAnalyzer Condition="$(TargetFramework)=='net6.0'">true</EnableTrimAnalyzer>
JRahnama marked this conversation as resolved.
Show resolved Hide resolved
<NoWarn>$(NoWarn);IL2026;IL2057;IL2072;IL2075</NoWarn>
</PropertyGroup>
<PropertyGroup>
<DebugType>portable</DebugType>
Expand Down
Expand Up @@ -9,6 +9,7 @@
using System.Data.Common;
using System.Data.SqlTypes;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.Reflection;
Expand Down Expand Up @@ -438,6 +439,10 @@ internal void Bind(TdsParserStateObject stateObj)
_defaultLCID = _parser.DefaultLCID;
}

#if NET6_0_OR_GREATER
[SuppressMessage("ReflectionAnalysis", "IL2111",
Justification = "System.Type.TypeInitializer would not be used in dataType and providerSpecificDataType columns.")]
#endif
internal DataTable BuildSchemaTable()
{
_SqlMetaDataSet md = this.MetaData;
Expand Down Expand Up @@ -1232,6 +1237,11 @@ override public IEnumerator GetEnumerator()
}

/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlDataReader.xml' path='docs/members[@name="SqlDataReader"]/GetFieldType/*' />
#if NET6_0_OR_GREATER
[SuppressMessage("ReflectionAnalysis", "IL2093:MismatchOnMethodReturnValueBetweenOverrides",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What kind of annotations? and were they shipped in 7?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think issue was that ref assembly was missing this annotations.
https://github.com/dotnet/runtime/blame/main/src/libraries/System.Data.Common/ref/System.Data.Common.cs#L2323-L2324

and yes, it was fixed in .NET 7 (or even .NET 8)

Justification = "Annotations for DbDataReader was not shipped in net6.0")]
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)]
#endif
override public Type GetFieldType(int i)
{
SqlStatistics statistics = null;
Expand All @@ -1248,6 +1258,9 @@ override public Type GetFieldType(int i)
}
}

#if NET6_0_OR_GREATER
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)]
#endif
private Type GetFieldTypeInternal(_SqlMetaData metaData)
{
Type fieldType = null;
Expand Down
Expand Up @@ -10,6 +10,7 @@
using System.Data.Common;
using System.Data.SqlTypes;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Security;
using System.Security.Authentication;
Expand Down Expand Up @@ -564,6 +565,9 @@ public void CopyFrom(SqlMetaDataXmlSchemaCollection original)

sealed internal class SqlMetaDataUdt
{
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
#endif
internal Type Type;
internal string DatabaseName;
internal string SchemaName;
Expand Down
Expand Up @@ -4,6 +4,7 @@

using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Text.RegularExpressions;

Expand Down Expand Up @@ -154,7 +155,11 @@ private static SqlRetryLogicBaseProvider ResolveRetryLogicProvider(string config
return null;
}

private static object CreateInstance(Type type, string retryMethodName, SqlRetryLogicOption option)
private static object CreateInstance(
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicMethods)]
#endif
Type type, string retryMethodName, SqlRetryLogicOption option)
{
string methodName = nameof(CreateInstance);
SqlClientEventSource.Log.TryTraceEvent("<sc.{0}.{1}|INFO> Entry point.", TypeName, methodName);
Expand Down
Expand Up @@ -7,6 +7,7 @@
using System.Data;
using System.Data.SqlTypes;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;

namespace Microsoft.Data.SqlClient.Server
Expand Down Expand Up @@ -228,6 +229,9 @@ internal class SmiMetaData
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType
)
: this(
Expand All @@ -253,6 +257,9 @@ Type userDefinedType
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool isMultiValued,
IList<SmiExtendedMetaData> fieldTypes,
Expand Down Expand Up @@ -282,6 +289,9 @@ SmiMetaDataPropertyCollection extendedProperties
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string udtAssemblyQualifiedName,
bool isMultiValued,
Expand Down Expand Up @@ -759,6 +769,9 @@ internal class SmiExtendedMetaData : SmiMetaData
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string name,
string typeSpecificNamePart1,
Expand Down Expand Up @@ -792,6 +805,9 @@ string typeSpecificNamePart3
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool isMultiValued,
IList<SmiExtendedMetaData> fieldMetaData,
Expand Down Expand Up @@ -829,6 +845,9 @@ string typeSpecificNamePart3
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string udtAssemblyQualifiedName,
bool isMultiValued,
Expand Down Expand Up @@ -903,6 +922,9 @@ internal sealed class SmiParameterMetaData : SmiExtendedMetaData
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool isMultiValued,
IList<SmiExtendedMetaData> fieldMetaData,
Expand Down Expand Up @@ -942,6 +964,9 @@ ParameterDirection direction
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like that this isn't clear that it applies to the parameter following the #endif but i can't see another way to format the code to make it clear :(

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that's unfortunate.

[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string udtAssemblyQualifiedName,
bool isMultiValued,
Expand Down Expand Up @@ -1020,6 +1045,9 @@ internal class SmiStorageMetaData : SmiExtendedMetaData
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string name,
string typeSpecificNamePart1,
Expand Down Expand Up @@ -1069,6 +1097,9 @@ bool isIdentity
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool isMultiValued,
IList<SmiExtendedMetaData> fieldMetaData,
Expand Down Expand Up @@ -1123,6 +1154,9 @@ bool isIdentity
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string udtAssemblyQualifiedName,
bool isMultiValued,
Expand Down Expand Up @@ -1233,6 +1267,9 @@ internal class SmiQueryMetaData : SmiStorageMetaData
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string name,
string typeSpecificNamePart1,
Expand Down Expand Up @@ -1290,6 +1327,9 @@ SqlBoolean isHidden
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool isMultiValued,
IList<SmiExtendedMetaData> fieldMetaData,
Expand Down Expand Up @@ -1352,6 +1392,9 @@ SqlBoolean isHidden
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string udtAssemblyQualifiedName,
bool isMultiValued,
Expand Down
Expand Up @@ -5,6 +5,7 @@
using System;
using System.Data;
using System.Data.SqlTypes;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Data.Common;
using Microsoft.Data.ProviderBase;

Expand Down Expand Up @@ -51,6 +52,9 @@ public virtual string GetDataTypeName(int ordinal)
}

/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/GetFieldType/*' />
#if NET6_0_OR_GREATER
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)]
#endif
public virtual Type GetFieldType(int ordinal) => GetFieldTypeFrameworkSpecific(ordinal);

/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/GetValue/*' />
Expand Down
Expand Up @@ -5,13 +5,17 @@
using System;
using System.Data;
using System.Data.SqlTypes;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Data.Common;

namespace Microsoft.Data.SqlClient.Server
{
/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlDataRecord.xml' path='docs/members[@name="SqlDataRecord"]/SqlDataRecord/*' />
public partial class SqlDataRecord : IDataRecord
{
{
#if NET6_0_OR_GREATER
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)]
#endif
private Type GetFieldTypeFrameworkSpecific(int ordinal)
=> MetaType.GetMetaTypeFromSqlDbType(GetSqlMetaData(ordinal).SqlDbType, false).ClassType;

Expand Down
Expand Up @@ -7,6 +7,7 @@
using System.Globalization;
using System.Data.SqlTypes;
using Microsoft.Data.Common;
using System.Diagnostics.CodeAnalysis;

namespace Microsoft.Data.SqlClient.Server
{
Expand Down Expand Up @@ -237,14 +238,22 @@ int sortOrdinal

/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlMetaData.xml' path='docs/members[@name="SqlMetaData"]/ctorNameDbTypeUserDefinedType/*' />
// udt ctor without tvp extended properties
public SqlMetaData(string name, SqlDbType dbType, Type userDefinedType)
public SqlMetaData(string name, SqlDbType dbType,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType)
{
Construct(name, dbType, userDefinedType, null, DefaultUseServerDefault, DefaultIsUniqueKey, DefaultColumnSortOrder, DefaultSortOrdinal);
}

/// <include file='../../../../../../../doc/snippets/Microsoft.Data.SqlClient.Server/SqlMetaData.xml' path='docs/members[@name="SqlMetaData"]/ctorNameDbTypeUserDefinedTypeServerTypeName/*' />
// udt ctor without tvp extended properties
public SqlMetaData(string name, SqlDbType dbType, Type userDefinedType, string serverTypeName)
public SqlMetaData(string name, SqlDbType dbType,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType, string serverTypeName)
{
Construct(name, dbType, userDefinedType, serverTypeName, DefaultUseServerDefault, DefaultIsUniqueKey, DefaultColumnSortOrder, DefaultSortOrdinal);
}
Expand All @@ -253,7 +262,10 @@ public SqlMetaData(string name, SqlDbType dbType, Type userDefinedType, string s
// udt ctor
public SqlMetaData(
string name,
SqlDbType dbType,
SqlDbType dbType,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string serverTypeName,
bool useServerDefault,
Expand Down Expand Up @@ -345,6 +357,9 @@ int sortOrdinal
byte scale,
long locale,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType
) : this(
name,
Expand Down Expand Up @@ -373,6 +388,9 @@ Type userDefinedType
byte scale,
long localeId,
SqlCompareOptions compareOptions,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
bool useServerDefault,
bool isUniqueKey,
Expand Down Expand Up @@ -874,7 +892,10 @@ int sortOrdinal
// Construction for Udt type
private void Construct(
string name,
SqlDbType dbType,
SqlDbType dbType,
#if NET6_0_OR_GREATER
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
#endif
Type userDefinedType,
string serverTypeName,
bool useServerDefault,
Expand Down