private void PrintBracedBlock(LNode body, NewlineOpt beforeBrace, bool skipFirstStmt = false, Symbol spaceName = null, BraceMode mode = BraceMode.Normal)
		{
			using (WithFlags(CheckOneLiner(_flags, body)))
			{
				int oldLineNum = _out.LineNumber;
				if (mode != BraceMode.BlockStmt)
					PrintTrivia(body, trailingTrivia: false);
				else
					G.Verify(PrintAttrs(AttrStyle.AllowKeywordAttrs) == 0);
				if (oldLineNum == _out.LineNumber && beforeBrace != 0)
					NewlineOrSpace(beforeBrace, IsDefaultNewlineSuppressed(body));
				_out.Write('{', true);
				// body.Target represents the opening brace. Injector adds trailing trivia only, not leading
				PrintTrivia(body.Target, trailingTrivia: true);

				using (WithSpace(spaceName))
				{
					if (mode == BraceMode.Initializer || mode == BraceMode.Enum)
					{
						Debug.Assert(!skipFirstStmt);
						PrintExpressionsInBraces(body, mode == BraceMode.Initializer);
					}
					else
						PrintStatementsInBraces(body, skipFirstStmt, newlinesByDefault: mode != BraceMode.AutoProp);
				}

				_out.Write('}', true);
				if (mode != BraceMode.BlockStmt)
					PrintTrivia(body, trailingTrivia: true);
			}
		}
Beispiel #2
0
        private void PrintBracedBlock(LNode body, NewlineOpt beforeBrace, bool skipFirstStmt = false, Symbol spaceName = null, BraceMode mode = BraceMode.Normal)
        {
            using (WithFlags(CheckOneLiner(_flags, body)))
            {
                int oldLineNum = _out.LineNumber;
                if (mode != BraceMode.BlockStmt)
                {
                    PrintTrivia(body, trailingTrivia: false);
                }
                else
                {
                    G.Verify(PrintAttrs(AttrStyle.AllowKeywordAttrs) == 0);
                }
                if (oldLineNum == _out.LineNumber && beforeBrace != 0)
                {
                    NewlineOrSpace(beforeBrace, IsDefaultNewlineSuppressed(body));
                }
                _out.Write('{', true);
                // body.Target represents the opening brace. Injector adds trailing trivia only, not leading
                PrintTrivia(body.Target, trailingTrivia: true);

                using (WithSpace(spaceName))
                {
                    if (mode == BraceMode.Initializer || mode == BraceMode.Enum)
                    {
                        Debug.Assert(!skipFirstStmt);
                        PrintExpressionsInBraces(body, mode == BraceMode.Initializer);
                    }
                    else
                    {
                        PrintStatementsInBraces(body, skipFirstStmt, newlinesByDefault: mode != BraceMode.AutoProp);
                    }
                }

                _out.Write('}', true);
                if (mode != BraceMode.BlockStmt)
                {
                    PrintTrivia(body, trailingTrivia: true);
                }
            }
        }
        private void PrintBracedBlock(LNode body, NewlineOpt beforeBrace, bool skipFirstStmt = false, Symbol spaceName = null, BraceMode mode = BraceMode.Normal)
        {
            if (mode != BraceMode.BlockExpr)
            {
                if (mode != BraceMode.BlockStmt)
                {
                    PrintTrivia(body, trailingTrivia: false);
                }
                else
                {
                    G.Verify(PrintAttrs(AttrStyle.AllowKeywordAttrs) == 0);
                }
                if (!_out.LastCharWritten.IsOneOf('\n', ' ', '\t') && beforeBrace != 0)
                {
                    NewlineOrSpace(beforeBrace, IsDefaultNewlineSuppressed(body));
                }
            }
            _out.Write('{');
            // body.Target represents the opening brace. Injector adds trailing trivia only, not leading
            PrintTrivia(body.Target, trailingTrivia: true);

            using (WithSpace(spaceName))
            {
                if (mode == BraceMode.Initializer || mode == BraceMode.Enum || mode == BraceMode.SwitchExpression)
                {
                    Debug.Assert(!skipFirstStmt);
                    PrintExpressionsInBraces(body, mode == BraceMode.Initializer,
                                             mode == BraceMode.SwitchExpression ? Ambiguity.InSwitchExpr : 0);
                }
                else
                {
                    PrintStatementsInBraces(body, skipFirstStmt, newlinesByDefault: mode != BraceMode.AutoProp);
                }
            }

            _out.Write('}');
            if (mode != BraceMode.BlockStmt)
            {
                PrintTrivia(body, trailingTrivia: true);
            }
        }