diff --git a/DnSpyCommon.props b/DnSpyCommon.props index b6d6436f0c..c0dcfaadef 100644 --- a/DnSpyCommon.props +++ b/DnSpyCommon.props @@ -55,7 +55,7 @@ 15.5.27130 13.0.3 5.0.1 - 4.10.0 + 4.11.0 8.0.0 6.11.0 8.0.532401 diff --git a/dnSpy/Roslyn/Roslyn.ExpressionCompiler b/dnSpy/Roslyn/Roslyn.ExpressionCompiler index abc68a46d7..2855a033a7 160000 --- a/dnSpy/Roslyn/Roslyn.ExpressionCompiler +++ b/dnSpy/Roslyn/Roslyn.ExpressionCompiler @@ -1 +1 @@ -Subproject commit abc68a46d7addc4c4268e2991f26545670fcef45 +Subproject commit 2855a033a749c7a3eb25993b584352e4e9cf6b86 diff --git a/dnSpy/Roslyn/dnSpy.Roslyn.CSharp.Internal/SmartIndent/CSharpSmartTokenFormatter.cs b/dnSpy/Roslyn/dnSpy.Roslyn.CSharp.Internal/SmartIndent/CSharpSmartTokenFormatter.cs index d1ba214e32..48747e37ab 100644 --- a/dnSpy/Roslyn/dnSpy.Roslyn.CSharp.Internal/SmartIndent/CSharpSmartTokenFormatter.cs +++ b/dnSpy/Roslyn/dnSpy.Roslyn.CSharp.Internal/SmartIndent/CSharpSmartTokenFormatter.cs @@ -16,6 +16,7 @@ using Microsoft.CodeAnalysis.Indentation; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.Shared.Extensions; +using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.Text; using Roslyn.Utilities; @@ -90,7 +91,7 @@ public IList FormatToken(SyntaxToken token, CancellationToken cancel } } - var smartTokenformattingRules = new SmartTokenFormattingRule().Concat(_formattingRules); + ImmutableArray smartTokenFormattingRules = [new SmartTokenFormattingRule(), .. _formattingRules]; var adjustedStartPosition = previousToken.SpanStart; if (token.IsKind(SyntaxKind.OpenBraceToken) && _options.IndentStyle != FormattingOptions2.IndentStyle.Smart) { RoslynDebug.AssertNotNull(token.SyntaxTree); @@ -101,7 +102,7 @@ public IList FormatToken(SyntaxToken token, CancellationToken cancel var formatter = CSharpSyntaxFormatting.Instance; var result = formatter.GetFormattingResult( - _root, new[] { TextSpan.FromBounds(adjustedStartPosition, adjustedEndPosition) }, _options.FormattingOptions, smartTokenformattingRules, cancellationToken); + _root, [ TextSpan.FromBounds(adjustedStartPosition, adjustedEndPosition) ], _options.FormattingOptions, smartTokenFormattingRules, cancellationToken); return result.GetTextChanges(cancellationToken); } @@ -127,7 +128,7 @@ public override AdjustNewLinesOperation GetAdjustNewLinesOperation(in SyntaxToke } private class SmartTokenFormattingRule : NoLineChangeFormattingRule { - public override void AddSuppressOperations(List list, SyntaxNode node, + public override void AddSuppressOperations(ArrayBuilder list, SyntaxNode node, in NextSuppressOperationAction nextOperation) { // don't suppress anything } diff --git a/dnSpy/Roslyn/dnSpy.Roslyn.Internal/SmartIndent/VBHackCompatAbstractFormattingRule.cs b/dnSpy/Roslyn/dnSpy.Roslyn.Internal/SmartIndent/VBHackCompatAbstractFormattingRule.cs new file mode 100644 index 0000000000..50d0258e3d --- /dev/null +++ b/dnSpy/Roslyn/dnSpy.Roslyn.Internal/SmartIndent/VBHackCompatAbstractFormattingRule.cs @@ -0,0 +1,12 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.PooledObjects; +using Microsoft.CodeAnalysis.Formatting.Rules; + +namespace dnSpy.Roslyn.Internal.SmartIndent { + internal class VBHackCompatAbstractFormattingRule : CompatAbstractFormattingRule { + public override void AddSuppressOperationsSlow(ArrayBuilder list, SyntaxNode node, + ref NextSuppressOperationAction nextOperation) { + // don't suppress anything + } + } +} diff --git a/dnSpy/Roslyn/dnSpy.Roslyn.VisualBasic.Internal/SmartIndent/SpecialFormattingOperation.vb b/dnSpy/Roslyn/dnSpy.Roslyn.VisualBasic.Internal/SmartIndent/SpecialFormattingOperation.vb index 0acbc10583..857272fbbc 100644 --- a/dnSpy/Roslyn/dnSpy.Roslyn.VisualBasic.Internal/SmartIndent/SpecialFormattingOperation.vb +++ b/dnSpy/Roslyn/dnSpy.Roslyn.VisualBasic.Internal/SmartIndent/SpecialFormattingOperation.vb @@ -2,18 +2,18 @@ ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. +Imports dnSpy.Roslyn.Internal.SmartIndent Imports Microsoft.CodeAnalysis Imports Microsoft.CodeAnalysis.Formatting Imports Microsoft.CodeAnalysis.Formatting.Rules -Imports Microsoft.CodeAnalysis.Options +Imports Microsoft.CodeAnalysis.PooledObjects Imports Microsoft.CodeAnalysis.Text Imports Microsoft.CodeAnalysis.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Syntax -Imports Roslyn.Utilities Namespace Global.dnSpy.Roslyn.VisualBasic.Internal.SmartIndent Friend Class SpecialFormattingRule - Inherits CompatAbstractFormattingRule + Inherits VBHackCompatAbstractFormattingRule Private ReadOnly _indentStyle As FormattingOptions2.IndentStyle @@ -21,9 +21,10 @@ Namespace Global.dnSpy.Roslyn.VisualBasic.Internal.SmartIndent _indentStyle = indentStyle End Sub - Public Overrides Sub AddSuppressOperationsSlow(list As List(Of SuppressOperation), node As SyntaxNode, ByRef nextOperation As NextSuppressOperationAction) - ' don't suppress anything - End Sub + ' VBHackCompatAbstractFormattingRule implements this to avoid a ambiguity +' Public Overrides Sub AddSuppressOperationsSlow(list As ArrayBuilder(Of SuppressOperation), node As SyntaxNode, ByRef nextOperation As NextSuppressOperationAction) +' ' don't suppress anything +' End Sub Public Overrides Function GetAdjustNewLinesOperationSlow(ByRef previousToken As SyntaxToken, ByRef currentToken As SyntaxToken, ByRef nextOperation As NextGetAdjustNewLinesOperation) As AdjustNewLinesOperation