diff options
Diffstat (limited to 'clang/lib/Format')
| -rw-r--r-- | clang/lib/Format/ContinuationIndenter.cpp | 13 | ||||
| -rw-r--r-- | clang/lib/Format/Format.cpp | 10 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 3711ee01c48..db4fe8f0a3f 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -1222,9 +1222,20 @@ void ContinuationIndenter::moveStatePastScopeOpener(LineState &State,          Current.MatchingParen->getPreviousNonComment() &&          Current.MatchingParen->getPreviousNonComment()->is(tok::comma); +    // If ObjCBinPackProtocolList is unspecified, fall back to BinPackParameters +    // for backwards compatibility. +    bool ObjCBinPackProtocolList = +        (Style.ObjCBinPackProtocolList == FormatStyle::BPS_Auto && +         Style.BinPackParameters) || +        Style.ObjCBinPackProtocolList == FormatStyle::BPS_Always; + +    bool BinPackDeclaration = +        (State.Line->Type != LT_ObjCDecl && Style.BinPackParameters) || +        (State.Line->Type == LT_ObjCDecl && ObjCBinPackProtocolList); +      AvoidBinPacking =          (Style.Language == FormatStyle::LK_JavaScript && EndsInComma) || -        (State.Line->MustBeDeclaration && !Style.BinPackParameters) || +        (State.Line->MustBeDeclaration && !BinPackDeclaration) ||          (!State.Line->MustBeDeclaration && !Style.BinPackArguments) ||          (Style.ExperimentalAutoDetectBinPacking &&           (Current.PackingKind == PPK_OnePerLine || diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 631d186e629..90b14e74f97 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -105,6 +105,14 @@ template <> struct ScalarEnumerationTraits<FormatStyle::ShortFunctionStyle> {    }  }; +template <> struct ScalarEnumerationTraits<FormatStyle::BinPackStyle> { +  static void enumeration(IO &IO, FormatStyle::BinPackStyle &Value) { +    IO.enumCase(Value, "Auto", FormatStyle::BPS_Auto); +    IO.enumCase(Value, "Always", FormatStyle::BPS_Always); +    IO.enumCase(Value, "Never", FormatStyle::BPS_Never); +  } +}; +  template <> struct ScalarEnumerationTraits<FormatStyle::BinaryOperatorStyle> {    static void enumeration(IO &IO, FormatStyle::BinaryOperatorStyle &Value) {      IO.enumCase(Value, "All", FormatStyle::BOS_All); @@ -378,6 +386,7 @@ template <> struct MappingTraits<FormatStyle> {      IO.mapOptional("MacroBlockEnd", Style.MacroBlockEnd);      IO.mapOptional("MaxEmptyLinesToKeep", Style.MaxEmptyLinesToKeep);      IO.mapOptional("NamespaceIndentation", Style.NamespaceIndentation); +    IO.mapOptional("ObjCBinPackProtocolList", Style.ObjCBinPackProtocolList);      IO.mapOptional("ObjCBlockIndentWidth", Style.ObjCBlockIndentWidth);      IO.mapOptional("ObjCSpaceAfterProperty", Style.ObjCSpaceAfterProperty);      IO.mapOptional("ObjCSpaceBeforeProtocolList", @@ -637,6 +646,7 @@ FormatStyle getLLVMStyle() {    LLVMStyle.MaxEmptyLinesToKeep = 1;    LLVMStyle.KeepEmptyLinesAtTheStartOfBlocks = true;    LLVMStyle.NamespaceIndentation = FormatStyle::NI_None; +  LLVMStyle.ObjCBinPackProtocolList = FormatStyle::BPS_Auto;    LLVMStyle.ObjCBlockIndentWidth = 2;    LLVMStyle.ObjCSpaceAfterProperty = false;    LLVMStyle.ObjCSpaceBeforeProtocolList = true; | 

