diff options
Diffstat (limited to 'clang/lib/Format/Format.cpp')
| -rw-r--r-- | clang/lib/Format/Format.cpp | 111 | 
1 files changed, 98 insertions, 13 deletions
| diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index edd126c..dd14fcd 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -32,6 +32,13 @@ using clang::format::FormatStyle;  LLVM_YAML_IS_SEQUENCE_VECTOR(FormatStyle::RawStringFormat) +enum BracketAlignmentStyle : int8_t { +  BAS_Align, +  BAS_DontAlign, +  BAS_AlwaysBreak, +  BAS_BlockIndent +}; +  namespace llvm {  namespace yaml {  template <> @@ -204,16 +211,16 @@ template <> struct MappingTraits<FormatStyle::BraceWrappingFlags> {    }  }; -template <> struct ScalarEnumerationTraits<FormatStyle::BracketAlignmentStyle> { -  static void enumeration(IO &IO, FormatStyle::BracketAlignmentStyle &Value) { -    IO.enumCase(Value, "Align", FormatStyle::BAS_Align); -    IO.enumCase(Value, "DontAlign", FormatStyle::BAS_DontAlign); -    IO.enumCase(Value, "AlwaysBreak", FormatStyle::BAS_AlwaysBreak); -    IO.enumCase(Value, "BlockIndent", FormatStyle::BAS_BlockIndent); +template <> struct ScalarEnumerationTraits<BracketAlignmentStyle> { +  static void enumeration(IO &IO, BracketAlignmentStyle &Value) { +    IO.enumCase(Value, "Align", BAS_Align); +    IO.enumCase(Value, "DontAlign", BAS_DontAlign);      // For backward compatibility. -    IO.enumCase(Value, "true", FormatStyle::BAS_Align); -    IO.enumCase(Value, "false", FormatStyle::BAS_DontAlign); +    IO.enumCase(Value, "true", BAS_Align); +    IO.enumCase(Value, "false", BAS_DontAlign); +    IO.enumCase(Value, "AlwaysBreak", BAS_AlwaysBreak); +    IO.enumCase(Value, "BlockIndent", BAS_BlockIndent);    }  }; @@ -979,6 +986,54 @@ template <> struct MappingTraits<FormatStyle> {      bool SpacesInCStyleCastParentheses = false;      bool SpacesInParentheses = false; +    if (IO.outputting()) { +      IO.mapOptional("AlignAfterOpenBracket", Style.AlignAfterOpenBracket); +    } else { +      // For backward compatibility. +      BracketAlignmentStyle LocalBAS = BAS_Align; +      if (IsGoogleOrChromium) { +        FormatStyle::LanguageKind Language = Style.Language; +        if (Language == FormatStyle::LK_None) +          Language = ((FormatStyle *)IO.getContext())->Language; +        if (Language == FormatStyle::LK_JavaScript) +          LocalBAS = BAS_AlwaysBreak; +        else if (Language == FormatStyle::LK_Java) +          LocalBAS = BAS_DontAlign; +      } else if (BasedOnStyle.equals_insensitive("webkit")) { +        LocalBAS = BAS_DontAlign; +      } +      IO.mapOptional("AlignAfterOpenBracket", LocalBAS); +      Style.BreakAfterOpenBracketBracedList = false; +      Style.BreakAfterOpenBracketFunction = false; +      Style.BreakAfterOpenBracketIf = false; +      Style.BreakAfterOpenBracketLoop = false; +      Style.BreakAfterOpenBracketSwitch = false; +      Style.BreakBeforeCloseBracketBracedList = false; +      Style.BreakBeforeCloseBracketFunction = false; +      Style.BreakBeforeCloseBracketIf = false; +      Style.BreakBeforeCloseBracketLoop = false; +      Style.BreakBeforeCloseBracketSwitch = false; + +      switch (LocalBAS) { +      case BAS_DontAlign: +        Style.AlignAfterOpenBracket = false; +        break; +      case BAS_BlockIndent: +        Style.BreakBeforeCloseBracketBracedList = true; +        Style.BreakBeforeCloseBracketFunction = true; +        Style.BreakBeforeCloseBracketIf = true; +        [[fallthrough]]; +      case BAS_AlwaysBreak: +        Style.BreakAfterOpenBracketBracedList = true; +        Style.BreakAfterOpenBracketFunction = true; +        Style.BreakAfterOpenBracketIf = true; +        [[fallthrough]]; +      case BAS_Align: +        Style.AlignAfterOpenBracket = true; +        break; +      } +    } +      // For backward compatibility.      if (!IO.outputting()) {        IO.mapOptional("AlignEscapedNewlinesLeft", Style.AlignEscapedNewlines); @@ -1014,7 +1069,6 @@ template <> struct MappingTraits<FormatStyle> {      }      IO.mapOptional("AccessModifierOffset", Style.AccessModifierOffset); -    IO.mapOptional("AlignAfterOpenBracket", Style.AlignAfterOpenBracket);      IO.mapOptional("AlignArrayOfStructures", Style.AlignArrayOfStructures);      IO.mapOptional("AlignConsecutiveAssignments",                     Style.AlignConsecutiveAssignments); @@ -1079,10 +1133,29 @@ template <> struct MappingTraits<FormatStyle> {      IO.mapOptional("BreakAfterAttributes", Style.BreakAfterAttributes);      IO.mapOptional("BreakAfterJavaFieldAnnotations",                     Style.BreakAfterJavaFieldAnnotations); +    IO.mapOptional("BreakAfterOpenBracketBracedList", +                   Style.BreakAfterOpenBracketBracedList); +    IO.mapOptional("BreakAfterOpenBracketFunction", +                   Style.BreakAfterOpenBracketFunction); +    IO.mapOptional("BreakAfterOpenBracketIf", Style.BreakAfterOpenBracketIf); +    IO.mapOptional("BreakAfterOpenBracketLoop", +                   Style.BreakAfterOpenBracketLoop); +    IO.mapOptional("BreakAfterOpenBracketSwitch", +                   Style.BreakAfterOpenBracketSwitch);      IO.mapOptional("BreakAfterReturnType", Style.BreakAfterReturnType);      IO.mapOptional("BreakArrays", Style.BreakArrays);      IO.mapOptional("BreakBeforeBinaryOperators",                     Style.BreakBeforeBinaryOperators); +    IO.mapOptional("BreakBeforeCloseBracketBracedList", +                   Style.BreakBeforeCloseBracketBracedList); +    IO.mapOptional("BreakBeforeCloseBracketFunction", +                   Style.BreakBeforeCloseBracketFunction); +    IO.mapOptional("BreakBeforeCloseBracketIf", +                   Style.BreakBeforeCloseBracketIf); +    IO.mapOptional("BreakBeforeCloseBracketLoop", +                   Style.BreakBeforeCloseBracketLoop); +    IO.mapOptional("BreakBeforeCloseBracketSwitch", +                   Style.BreakBeforeCloseBracketSwitch);      IO.mapOptional("BreakBeforeConceptDeclarations",                     Style.BreakBeforeConceptDeclarations);      IO.mapOptional("BreakBeforeBraces", Style.BreakBeforeBraces); @@ -1561,7 +1634,7 @@ static void expandPresetsSpacesInParens(FormatStyle &Expanded) {  FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {    FormatStyle LLVMStyle;    LLVMStyle.AccessModifierOffset = -2; -  LLVMStyle.AlignAfterOpenBracket = FormatStyle::BAS_Align; +  LLVMStyle.AlignAfterOpenBracket = true;    LLVMStyle.AlignArrayOfStructures = FormatStyle::AIAS_None;    LLVMStyle.AlignConsecutiveAssignments = {};    LLVMStyle.AlignConsecutiveAssignments.PadOperators = true; @@ -1621,10 +1694,20 @@ FormatStyle getLLVMStyle(FormatStyle::LanguageKind Language) {    LLVMStyle.BreakAdjacentStringLiterals = true;    LLVMStyle.BreakAfterAttributes = FormatStyle::ABS_Leave;    LLVMStyle.BreakAfterJavaFieldAnnotations = false; +  LLVMStyle.BreakAfterOpenBracketBracedList = false; +  LLVMStyle.BreakAfterOpenBracketFunction = false; +  LLVMStyle.BreakAfterOpenBracketIf = false; +  LLVMStyle.BreakAfterOpenBracketLoop = false; +  LLVMStyle.BreakAfterOpenBracketSwitch = false;    LLVMStyle.BreakAfterReturnType = FormatStyle::RTBS_None;    LLVMStyle.BreakArrays = true;    LLVMStyle.BreakBeforeBinaryOperators = FormatStyle::BOS_None;    LLVMStyle.BreakBeforeBraces = FormatStyle::BS_Attach; +  LLVMStyle.BreakBeforeCloseBracketBracedList = false; +  LLVMStyle.BreakBeforeCloseBracketFunction = false; +  LLVMStyle.BreakBeforeCloseBracketIf = false; +  LLVMStyle.BreakBeforeCloseBracketLoop = false; +  LLVMStyle.BreakBeforeCloseBracketSwitch = false;    LLVMStyle.BreakBeforeConceptDeclarations = FormatStyle::BBCDS_Always;    LLVMStyle.BreakBeforeInlineASMColon = FormatStyle::BBIAS_OnlyMultiline;    LLVMStyle.BreakBeforeTemplateCloser = false; @@ -1877,7 +1960,7 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) {    GoogleStyle.PenaltyReturnTypeOnItsOwnLine = 200;    if (Language == FormatStyle::LK_Java) { -    GoogleStyle.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign; +    GoogleStyle.AlignAfterOpenBracket = false;      GoogleStyle.AlignOperands = FormatStyle::OAS_DontAlign;      GoogleStyle.AlignTrailingComments = {};      GoogleStyle.AlignTrailingComments.Kind = FormatStyle::TCAS_Never; @@ -1889,7 +1972,9 @@ FormatStyle getGoogleStyle(FormatStyle::LanguageKind Language) {      GoogleStyle.SpaceAfterCStyleCast = true;      GoogleStyle.SpacesBeforeTrailingComments = 1;    } else if (Language == FormatStyle::LK_JavaScript) { -    GoogleStyle.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak; +    GoogleStyle.BreakAfterOpenBracketBracedList = true; +    GoogleStyle.BreakAfterOpenBracketFunction = true; +    GoogleStyle.BreakAfterOpenBracketIf = true;      GoogleStyle.AlignOperands = FormatStyle::OAS_DontAlign;      GoogleStyle.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_Empty;      // TODO: still under discussion whether to switch to SLS_All. @@ -2026,7 +2111,7 @@ FormatStyle getMozillaStyle() {  FormatStyle getWebKitStyle() {    FormatStyle Style = getLLVMStyle();    Style.AccessModifierOffset = -4; -  Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign; +  Style.AlignAfterOpenBracket = false;    Style.AlignOperands = FormatStyle::OAS_DontAlign;    Style.AlignTrailingComments = {};    Style.AlignTrailingComments.Kind = FormatStyle::TCAS_Never; | 
