本文整理汇总了C#中TypeSymbol.GetMemberTypeArgumentsNoUseSiteDiagnostics方法的典型用法代码示例。如果您正苦于以下问题:C# TypeSymbol.GetMemberTypeArgumentsNoUseSiteDiagnostics方法的具体用法?C# TypeSymbol.GetMemberTypeArgumentsNoUseSiteDiagnostics怎么用?C# TypeSymbol.GetMemberTypeArgumentsNoUseSiteDiagnostics使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeSymbol
的用法示例。
在下文中一共展示了TypeSymbol.GetMemberTypeArgumentsNoUseSiteDiagnostics方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateReturnConversion
internal BoundExpression CreateReturnConversion(
CSharpSyntaxNode syntax,
DiagnosticBag diagnostics,
BoundExpression argument,
TypeSymbol returnType)
{
// If the return type is not void then the expression must be implicitly convertible.
Conversion conversion;
bool badAsyncReturnAlreadyReported = false;
HashSet<DiagnosticInfo> useSiteDiagnostics = null;
if (IsInAsyncMethod())
{
if (!IsGenericTaskReturningAsyncMethod())
{
conversion = Conversion.NoConversion;
badAsyncReturnAlreadyReported = true;
}
else
{
returnType = returnType.GetMemberTypeArgumentsNoUseSiteDiagnostics().Single();
conversion = this.Conversions.ClassifyConversionFromExpression(argument, returnType, ref useSiteDiagnostics);
}
}
else
{
conversion = this.Conversions.ClassifyConversionFromExpression(argument, returnType, ref useSiteDiagnostics);
}
diagnostics.Add(syntax, useSiteDiagnostics);
if ((!conversion.IsImplicit || !conversion.IsValid) && !argument.HasAnyErrors)
{
if (!badAsyncReturnAlreadyReported)
{
if (IsGenericTaskReturningAsyncMethod() && argument.Type == this.GetCurrentReturnType())
{
// Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'
Error(diagnostics, ErrorCode.ERR_BadAsyncReturnExpression, argument.Syntax, returnType);
}
else
{
GenerateImplicitConversionError(diagnostics, argument.Syntax, conversion, argument, returnType);
if (this.ContainingMemberOrLambda is LambdaSymbol)
{
ReportCantConvertLambdaReturn(argument.Syntax, diagnostics);
}
}
}
}
return CreateConversion(argument.Syntax, argument, conversion, false, returnType, diagnostics);
}
示例2: BuildTypeStringHelper
/// <summary>
/// Same as GetTypeString, but without containing type/namespace.
/// </summary>
private string BuildTypeStringHelper(TypeSymbol symbol, out string typeArgumentsOpt, out string assemblyNameSuffix)
{
if (symbol.GetMemberArity() > 0)
{
PooledStringBuilder pool = PooledStringBuilder.GetInstance();
StringBuilder builder = pool.Builder;
bool first = true;
foreach (TypeSymbol typeArg in symbol.GetMemberTypeArgumentsNoUseSiteDiagnostics())
{
if (!first)
{
builder.Append(",");
}
first = false;
builder.Append(BuildTypeArgumentString(typeArg));
}
typeArgumentsOpt = pool.ToStringAndFree();
}
else
{
typeArgumentsOpt = null;
}
assemblyNameSuffix = ", " + symbol.ContainingAssembly.Identity.GetDisplayName();
return symbol.MetadataName; //should include backtick+arity if required
}