public static InvocationExpressionSyntax CreateInvocationStatement(ArgumentSyntax threadArgument) { InvocationExpressionSyntax invocationStatement; if (threadArgument.ChildNodes().OfType <IdentifierNameSyntax>().Any()) { var methodName = threadArgument.ChildNodes().OfType <IdentifierNameSyntax>().First(); invocationStatement = CreateInvocationExpressionSyntax(methodName); } else { var lambda = threadArgument.ChildNodes().OfType <ParenthesizedLambdaExpressionSyntax>().First(); invocationStatement = CreateInvocationExpressionSyntax(lambda); } return(invocationStatement); }
public override void VisitArgument(ArgumentSyntax node) { CheckHttpRequests(node); foreach (var n in node.ChildNodes()) { Visit(n); } }
private void CheckForAllowedSyntaxForConstantBinding( ) { var child = _constantClause.ChildNodes().FirstOrDefault(); if (child == null) { throw new DpdtException( DpdtExceptionTypeEnum.InternalError, $"Unknown error during validation a target in 'constant' binding." ); } var cconstant = _semanticModel.GetConstantValue(child); if (cconstant.HasValue) { //it's a true constant, keep going! return; } var ilsymbol = _semanticModel.GetSymbolInfo(child).Symbol; if (ilsymbol is null) { throw new DpdtException( DpdtExceptionTypeEnum.InternalError, $"Unknown error during validation a target in 'constant' binding." ); } if (ilsymbol.Kind != SymbolKind.Field) { throw new DpdtException( DpdtExceptionTypeEnum.InternalError, $"Unsupported type of 'constant' binding. Allowed compile-time constants, readonly fields and readonly static fields only." ); } var filsymbol = ilsymbol as IFieldSymbol; if (filsymbol is null) { throw new DpdtException( DpdtExceptionTypeEnum.InternalError, $"Unknown error during validation a target in 'constant' binding." ); } if (!filsymbol.IsReadOnly) { throw new DpdtException( DpdtExceptionTypeEnum.InternalError, $"Unsupported type of 'constant' binding. Allowed compile-time constants, readonly fields and readonly static fields only." ); } }
private object GetDetails(ArgumentSyntax argument) { var identifier = argument.ChildNodes().OfType<IdentifierNameSyntax>().FirstOrDefault(); if (identifier == null) { // this is really quite crap var child = argument.ChildNodes().OfType<IdentifierNameSyntax>().FirstOrDefault() ?? (SyntaxNode)argument.ChildNodes().OfType<InvocationExpressionSyntax>().FirstOrDefault(); if (child != null) { identifier = child.ChildNodes().OfType<IdentifierNameSyntax>().First(); } } if (identifier != null) { return identifier.Identifier.ValueText; } var lamda = argument.ChildNodes().OfType<SimpleLambdaExpressionSyntax>().FirstOrDefault(); return lamda; }
/// <summary> /// Generates an argument /// </summary> /// <param name="arg">The argument</param> public void GenerateArgument(ArgumentSyntax arg) { IEnumerable <SyntaxNode> children = arg.ChildNodes(); foreach (ExpressionSyntax child in children) { ITypeSymbol type = m_context.Model.GetTypeInfo(child).Type; if (type != null && !m_context.GenericTypeConvert.IsGeneric(type) && type.TypeKind == TypeKind.Class) { m_context.Writer.Append("(void*)"); } m_context.Generators.Expression.Generate(child); } }
private static bool IsThreadWithMethodArgument(ArgumentSyntax argument) { return(argument.ChildNodes().OfType <IdentifierNameSyntax>().Any()); }