public override void VisitEndBlockStatement(EndBlockStatementSyntax node) { if (Options.IgnoreBlockBoundary) { TextSpan span = node.Span; TextLine line = Lines.GetLineFromPosition(span.Start); if (line.IsEmptyOrWhiteSpace(TextSpan.FromBounds(line.Start, span.Start))) { if (Options.IncludeComments) { if (line.IsEmptyOrWhiteSpace(TextSpan.FromBounds(span.End, line.End))) { BlockBoundaryLineCount += Lines.GetLineCount(span); } } else if (AnalyzeTrailingTrivia(node.GetTrailingTrivia())) { BlockBoundaryLineCount += Lines.GetLineCount(span); } } } base.VisitEndBlockStatement(node);
public override void VisitEndBlockStatement(EndBlockStatementSyntax node) { if (Options.IgnoreBlockBoundary) { TextSpan span = node.Span; TextLine line = Lines.GetLineFromPosition(span.Start); if (line.IsEmptyOrWhiteSpace(TextSpan.FromBounds(line.Start, span.Start))) { if (Options.IncludeComments) { if (line.IsEmptyOrWhiteSpace(TextSpan.FromBounds(span.End, line.End))) { BlockBoundaryLineCount += Lines.GetLineCount(span); } } else if (AnalyzeTrailingTrivia(node.GetTrailingTrivia())) { BlockBoundaryLineCount += Lines.GetLineCount(span); } } } base.VisitEndBlockStatement(node); bool AnalyzeTrailingTrivia(in SyntaxTriviaList trailingTrivia) { SyntaxTriviaList.Enumerator en = trailingTrivia.GetEnumerator(); while (en.MoveNext()) { switch (en.Current.Kind()) { case SyntaxKind.EndOfLineTrivia: case SyntaxKind.CommentTrivia: { return(true); } case SyntaxKind.WhitespaceTrivia: { break; } default: { return(false); } } } return(false); } }
private static LambdaHeaderSyntax CreateFunctionHeader(SyntaxTokenList modifiers, ParameterListSyntax parameterList, out EndBlockStatementSyntax endBlock, out SyntaxKind multiLineExpressionKind) { LambdaHeaderSyntax header; header = SyntaxFactory.FunctionLambdaHeader(SyntaxFactory.List <AttributeListSyntax>(), ConvertModifiers(modifiers, SyntaxKindExtensions.TokenContext.Local), parameterList, null); endBlock = SyntaxFactory.EndBlockStatement(SyntaxKind.EndFunctionStatement, SyntaxFactory.Token(SyntaxKind.FunctionKeyword)); multiLineExpressionKind = SyntaxKind.MultiLineFunctionLambdaExpression; return(header); }
private static LambdaExpressionSyntax CreateLambdaExpression(SyntaxKind singleLineKind, SyntaxKind multiLineExpressionKind, LambdaHeaderSyntax header, SyntaxList <StatementSyntax> statements, EndBlockStatementSyntax endBlock) { if (statements.Count == 1 && TryGetNodeForeSingleLineLambdaExpression(singleLineKind, statements[0], out VisualBasicSyntaxNode singleNode)) { return(SyntaxFactory.SingleLineLambdaExpression(singleLineKind, header, singleNode)); } return(SyntaxFactory.MultiLineLambdaExpression(multiLineExpressionKind, header, statements, endBlock)); }