@@ -34,30 +34,30 @@ public static Doc PrintMemberChain(ExpressionSyntax node, FormattingContext cont
34
34
var cutoff = shouldMergeFirstTwoGroups ? 3 : 2 ;
35
35
36
36
var forceOneLine =
37
- groups . Count <= cutoff
38
- && (
39
- groups
40
- . Skip ( shouldMergeFirstTwoGroups ? 1 : 0 )
41
- . Any ( o =>
42
- o . Last ( ) . Node
43
- is not (
44
- InvocationExpressionSyntax
45
- or ElementAccessExpressionSyntax
46
- or PostfixUnaryExpressionSyntax
47
- {
48
- Operand : InvocationExpressionSyntax
49
- }
50
- )
37
+ (
38
+ groups . Count <= cutoff
39
+ && (
40
+ groups
41
+ . Skip ( shouldMergeFirstTwoGroups ? 1 : 0 )
42
+ . Any ( o =>
43
+ o . Last ( ) . Node
44
+ is not (
45
+ InvocationExpressionSyntax
46
+ or ElementAccessExpressionSyntax
47
+ or PostfixUnaryExpressionSyntax
48
+ {
49
+ Operand : InvocationExpressionSyntax
50
+ }
51
+ )
52
+ )
53
+ // if the last group contains just a !, make sure it doesn't end up on a new line
54
+ || (
55
+ groups . Last ( ) . Count == 1
56
+ && groups . Last ( ) [ 0 ] . Node is PostfixUnaryExpressionSyntax
51
57
)
52
- // if the last group contains just a !, make sure it doesn't end up on a new line
53
- || (
54
- groups . Last ( ) . Count == 1
55
- && groups . Last ( ) [ 0 ] . Node is PostfixUnaryExpressionSyntax
56
58
)
57
- ) ;
58
-
59
- if (
60
- forceOneLine
59
+ )
60
+ || node . HasParent ( typeof ( InterpolatedStringExpressionSyntax ) )
61
61
// this handles the case of a multiline string being part of an invocation chain
62
62
// conditional groups don't propagate breaks so we need to avoid the conditional group
63
63
|| groups [ 0 ]
@@ -78,8 +78,9 @@ is LiteralExpressionSyntax
78
78
Token . Text . Length : > 0
79
79
} literalExpressionSyntax
80
80
&& literalExpressionSyntax . Token . Text . Contains ( '\n ' )
81
- )
82
- )
81
+ ) ;
82
+
83
+ if ( forceOneLine )
83
84
{
84
85
return Doc . Group ( oneLine ) ;
85
86
}
0 commit comments