本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.BoundExpression.HasExpressionType方法的典型用法代码示例。如果您正苦于以下问题:C# BoundExpression.HasExpressionType方法的具体用法?C# BoundExpression.HasExpressionType怎么用?C# BoundExpression.HasExpressionType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CSharp.BoundExpression
的用法示例。
在下文中一共展示了BoundExpression.HasExpressionType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetAnonymousTypeFieldType
/// <summary>
/// Returns the type to be used as a field type; generates errors in case the type is not
/// supported for anonymous type fields.
/// </summary>
private TypeSymbol GetAnonymousTypeFieldType(BoundExpression expression, CSharpSyntaxNode errorSyntax, DiagnosticBag diagnostics, ref bool hasError)
{
object errorArg = null;
TypeSymbol expressionType = expression.Type;
if (!expression.HasAnyErrors)
{
if (expression.HasExpressionType())
{
if (expressionType.SpecialType == SpecialType.System_Void)
{
errorArg = expressionType;
expressionType = CreateErrorType(SyntaxFacts.GetText(SyntaxKind.VoidKeyword));
}
else if (expressionType.IsUnsafe())
{
errorArg = expressionType;
// CONSIDER: we could use an explicit error type instead of the unsafe type.
}
else if (expressionType.IsRestrictedType())
{
errorArg = expressionType;
}
}
else
{
if (expression.Kind == BoundKind.UnboundLambda)
{
errorArg = ((UnboundLambda)expression).MessageID.Localize();
}
else if (expression.Kind == BoundKind.MethodGroup)
{
errorArg = MessageID.IDS_MethodGroup.Localize();
}
else
{
Debug.Assert(expression.IsLiteralNull(), "How did we successfully bind an expression without a type?");
errorArg = MessageID.IDS_NULL.Localize();
}
}
}
if ((object)expressionType == null)
{
expressionType = CreateErrorType("error");
}
if (errorArg != null)
{
hasError = true;
Error(diagnostics, ErrorCode.ERR_AnonymousTypePropertyAssignedBadValue, errorSyntax, errorArg);
// NOTE: ERR_QueryRangeVariableAssignedBadValue is being generated
// by query binding code and never reach this point
}
return expressionType;
}
示例2: GetAnonymousTypeFieldType
/// <summary>
/// Returns the type to be used as a field type; generates errors in case the type is not
/// supported for anonymous type fields.
/// </summary>
private TypeSymbol GetAnonymousTypeFieldType(BoundExpression expression, CSharpSyntaxNode errorSyntax, DiagnosticBag diagnostics, ref bool hasError)
{
object errorArg = null;
TypeSymbol expressionType = expression.Type;
if (!expression.HasAnyErrors)
{
if (expression.HasExpressionType())
{
if (expressionType.SpecialType == SpecialType.System_Void)
{
errorArg = expressionType;
expressionType = CreateErrorType(SyntaxFacts.GetText(SyntaxKind.VoidKeyword));
}
else if (expressionType.IsUnsafe())
{
errorArg = expressionType;
// CONSIDER: we could use an explicit error type instead of the unsafe type.
}
else if (expressionType.IsRestrictedType())
{
errorArg = expressionType;
}
}
else
{
errorArg = expression.Display;
}
}
if ((object)expressionType == null)
{
expressionType = CreateErrorType("error");
}
if (errorArg != null)
{
hasError = true;
Error(diagnostics, ErrorCode.ERR_AnonymousTypePropertyAssignedBadValue, errorSyntax, errorArg);
// NOTE: ERR_QueryRangeVariableAssignedBadValue is being generated
// by query binding code and never reach this point
}
return expressionType;
}