/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/CSharp/Portable/ExtractMethod/CSharpMethodExtractor.FormattingProvider.cs
71 строка
3 KB
Cyrus Najmabadi
Move under common types to share generics
22 дек 2024, 00:58
22 дек 2024, 00:58
f17b48d
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.Generic; using Microsoft.CodeAnalysis.Formatting.Rules; namespace Microsoft.CodeAnalysis.CSharp.ExtractMethod; internal sealed partial class CSharpExtractMethodService { internal sealed partial class CSharpMethodExtractor { private sealed class FormattingRule : AbstractFormattingRule { public static readonly FormattingRule Instance = new(); private FormattingRule() { } public override AdjustNewLinesOperation? GetAdjustNewLinesOperation(in SyntaxToken previousToken, in SyntaxToken currentToken, in NextGetAdjustNewLinesOperation nextOperation) { // for extract method case, for a hybrid case, don't force rule, but preserve user style var operation = base.GetAdjustNewLinesOperation(in previousToken, in currentToken, in nextOperation); if (operation == null) { return null; } if (operation.Option == AdjustNewLinesOption.ForceLinesIfOnSingleLine) { return FormattingOperations.CreateAdjustNewLinesOperation(operation.Line, AdjustNewLinesOption.PreserveLines); } if (operation.Option != AdjustNewLinesOption.ForceLines) { return operation; } if (previousToken.RawKind == (int)SyntaxKind.OpenBraceToken) { return operation; } if (previousToken.BetweenFieldAndNonFieldMember(currentToken)) { // make sure to have at least 2 line breaks between field and other members except field return FormattingOperations.CreateAdjustNewLinesOperation(2, AdjustNewLinesOption.PreserveLines); } if (previousToken.HasHybridTriviaBetween(currentToken)) { return FormattingOperations.CreateAdjustNewLinesOperation(operation.Line, AdjustNewLinesOption.PreserveLines); } return operation; } public override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation) { if (node.Kind() is SyntaxKind.SimpleLambdaExpression or SyntaxKind.ParenthesizedLambdaExpression or SyntaxKind.AnonymousMethodExpression) { return; } nextOperation.Invoke(); } } } }