Merge pull request #24 from benaadams/no-attribs
Skip resolving ValueTuple names when no CustomAttributes
This commit is contained in:
commit
2f546030d8
@ -518,59 +518,42 @@ namespace System.Diagnostics
|
|||||||
private static ResolvedParameter GetParameter(ParameterInfo parameter)
|
private static ResolvedParameter GetParameter(ParameterInfo parameter)
|
||||||
{
|
{
|
||||||
var parameterType = parameter.ParameterType;
|
var parameterType = parameter.ParameterType;
|
||||||
|
|
||||||
var prefix = GetPrefix(parameter, parameterType);
|
var prefix = GetPrefix(parameter, parameterType);
|
||||||
|
|
||||||
var parameterTypeString = "?";
|
var parameterTypeString = "?";
|
||||||
if (parameterType != null)
|
|
||||||
|
if (parameterType == null)
|
||||||
{
|
{
|
||||||
if (parameterType.IsGenericType)
|
return new ResolvedParameter
|
||||||
{
|
{
|
||||||
var tupleNames = parameter.GetCustomAttributes<TupleElementNamesAttribute>().FirstOrDefault()?.TransformNames;
|
Prefix = prefix,
|
||||||
if (tupleNames != null)
|
Name = parameter.Name,
|
||||||
|
Type = parameterTypeString,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parameterType.IsGenericType)
|
||||||
|
{
|
||||||
|
var customAttribs = parameter.GetCustomAttributes(inherit: false);
|
||||||
|
|
||||||
|
if ((customAttribs?.Length ?? 0) > 0)
|
||||||
|
{
|
||||||
|
var tupleNames = customAttribs
|
||||||
|
.OfType<TupleElementNamesAttribute>().FirstOrDefault()?.TransformNames;
|
||||||
|
|
||||||
|
if (tupleNames?.Count > 0)
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
return GetValueTupleParameter(tupleNames, prefix, parameter.Name, parameterType);
|
||||||
sb.Append("(");
|
|
||||||
var args = parameterType.GetGenericArguments();
|
|
||||||
for (var i = 0; i < args.Length; i++)
|
|
||||||
{
|
|
||||||
if (i > 0)
|
|
||||||
{
|
|
||||||
sb.Append(", ");
|
|
||||||
}
|
|
||||||
sb.Append(TypeNameHelper.GetTypeDisplayName(args[i], fullName: false, includeGenericParameterNames: true));
|
|
||||||
|
|
||||||
if (i >= tupleNames.Count) continue;
|
|
||||||
|
|
||||||
var argName = tupleNames[i];
|
|
||||||
if (argName != null)
|
|
||||||
{
|
|
||||||
sb.Append(" ");
|
|
||||||
sb.Append(argName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.Append(")");
|
|
||||||
parameterTypeString = sb.ToString();
|
|
||||||
|
|
||||||
return new ResolvedParameter
|
|
||||||
{
|
|
||||||
Prefix = prefix,
|
|
||||||
Name = parameter.Name,
|
|
||||||
Type = parameterTypeString,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parameterType.IsByRef)
|
|
||||||
{
|
|
||||||
parameterType = parameterType.GetElementType();
|
|
||||||
}
|
|
||||||
|
|
||||||
parameterTypeString = TypeNameHelper.GetTypeDisplayName(parameterType, fullName: false, includeGenericParameterNames: true);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parameterType.IsByRef)
|
||||||
|
{
|
||||||
|
parameterType = parameterType.GetElementType();
|
||||||
|
}
|
||||||
|
|
||||||
|
parameterTypeString = TypeNameHelper.GetTypeDisplayName(parameterType, fullName: false, includeGenericParameterNames: true);
|
||||||
|
|
||||||
return new ResolvedParameter
|
return new ResolvedParameter
|
||||||
{
|
{
|
||||||
Prefix = prefix,
|
Prefix = prefix,
|
||||||
@ -579,6 +562,45 @@ namespace System.Diagnostics
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ResolvedParameter GetValueTupleParameter(IList<string> tupleNames, string prefix, string name, Type parameterType)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.Append("(");
|
||||||
|
var args = parameterType.GetGenericArguments();
|
||||||
|
for (var i = 0; i < args.Length; i++)
|
||||||
|
{
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
sb.Append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Append(TypeNameHelper.GetTypeDisplayName(args[i], fullName: false, includeGenericParameterNames: true));
|
||||||
|
|
||||||
|
if (i >= tupleNames.Count)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var argName = tupleNames[i];
|
||||||
|
if (argName == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Append(" ");
|
||||||
|
sb.Append(argName);
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Append(")");
|
||||||
|
|
||||||
|
return new ResolvedParameter
|
||||||
|
{
|
||||||
|
Prefix = prefix,
|
||||||
|
Name = name,
|
||||||
|
Type = sb.ToString(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private static bool ShowInStackTrace(MethodBase method)
|
private static bool ShowInStackTrace(MethodBase method)
|
||||||
{
|
{
|
||||||
Debug.Assert(method != null);
|
Debug.Assert(method != null);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user