r200320 - clang-format: Add support for a space after @property

Nico Weber thakis at chromium.org
Tue Jan 28 09:06:09 PST 2014


It should probably default to true in llvm too, given that that's what the
official property documentation (
https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html)
uses. (Not that there's much ObjC code in llvm.)


On Tue, Jan 28, 2014 at 7:20 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Tue Jan 28 09:20:33 2014
> New Revision: 200320
>
> URL: http://llvm.org/viewvc/llvm-project?rev=200320&view=rev
> Log:
> clang-format: Add support for a space after @property
>
> Mozilla and WebKit seem to use a space after @property (verified by
> grepping their codebases) so we turn this on there as well.
>
> Change by Christian Legnitto. Thank you!
>
> Modified:
>     cfe/trunk/include/clang/Format/Format.h
>     cfe/trunk/lib/Format/Format.cpp
>     cfe/trunk/lib/Format/TokenAnnotator.cpp
>     cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/include/clang/Format/Format.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=200320&r1=200319&r2=200320&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Format/Format.h (original)
> +++ cfe/trunk/include/clang/Format/Format.h Tue Jan 28 09:20:33 2014
> @@ -163,6 +163,10 @@ struct FormatStyle {
>    /// line.
>    bool AllowShortFunctionsOnASingleLine;
>
> +  /// \brief Add a space after \c @property in Objective-C, i.e. use
> +  /// <tt>@property (readonly)</tt> instead of
> <tt>@property(readonly)</tt>.
> +  bool ObjCSpaceAfterProperty;
> +
>    /// \brief Add a space in front of an Objective-C protocol list, i.e.
> use
>    /// <tt>Foo <Protocol></tt> instead of \c Foo<Protocol>.
>    bool ObjCSpaceBeforeProtocolList;
> @@ -329,6 +333,7 @@ struct FormatStyle {
>             IndentWidth == R.IndentWidth && Language == R.Language &&
>             MaxEmptyLinesToKeep == R.MaxEmptyLinesToKeep &&
>             NamespaceIndentation == R.NamespaceIndentation &&
> +           ObjCSpaceAfterProperty == R.ObjCSpaceAfterProperty &&
>             ObjCSpaceBeforeProtocolList == R.ObjCSpaceBeforeProtocolList &&
>             PenaltyBreakComment == R.PenaltyBreakComment &&
>             PenaltyBreakFirstLessLess == R.PenaltyBreakFirstLessLess &&
>
> Modified: cfe/trunk/lib/Format/Format.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=200320&r1=200319&r2=200320&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Tue Jan 28 09:20:33 2014
> @@ -164,6 +164,7 @@ template <> struct MappingTraits<FormatS
>      IO.mapOptional("IndentCaseLabels", Style.IndentCaseLabels);
>      IO.mapOptional("MaxEmptyLinesToKeep", Style.MaxEmptyLinesToKeep);
>      IO.mapOptional("NamespaceIndentation", Style.NamespaceIndentation);
> +    IO.mapOptional("ObjCSpaceAfterProperty",
> Style.ObjCSpaceAfterProperty);
>      IO.mapOptional("ObjCSpaceBeforeProtocolList",
>                     Style.ObjCSpaceBeforeProtocolList);
>      IO.mapOptional("PenaltyBreakBeforeFirstCallParameter",
> @@ -267,6 +268,7 @@ FormatStyle getLLVMStyle() {
>    LLVMStyle.TabWidth = 8;
>    LLVMStyle.MaxEmptyLinesToKeep = 1;
>    LLVMStyle.NamespaceIndentation = FormatStyle::NI_None;
> +  LLVMStyle.ObjCSpaceAfterProperty = false;
>    LLVMStyle.ObjCSpaceBeforeProtocolList = true;
>    LLVMStyle.PointerBindsToType = false;
>    LLVMStyle.SpacesBeforeTrailingComments = 1;
> @@ -305,6 +307,7 @@ FormatStyle getGoogleStyle() {
>    GoogleStyle.DerivePointerBinding = true;
>    GoogleStyle.IndentCaseLabels = true;
>    GoogleStyle.IndentFunctionDeclarationAfterType = true;
> +  GoogleStyle.ObjCSpaceAfterProperty = false;
>    GoogleStyle.ObjCSpaceBeforeProtocolList = false;
>    GoogleStyle.PointerBindsToType = true;
>    GoogleStyle.SpacesBeforeTrailingComments = 2;
> @@ -349,6 +352,7 @@ FormatStyle getMozillaStyle() {
>    MozillaStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true;
>    MozillaStyle.DerivePointerBinding = true;
>    MozillaStyle.IndentCaseLabels = true;
> +  MozillaStyle.ObjCSpaceAfterProperty = true;
>    MozillaStyle.ObjCSpaceBeforeProtocolList = false;
>    MozillaStyle.PenaltyReturnTypeOnItsOwnLine = 200;
>    MozillaStyle.PointerBindsToType = true;
> @@ -365,6 +369,7 @@ FormatStyle getWebKitStyle() {
>    Style.ColumnLimit = 0;
>    Style.IndentWidth = 4;
>    Style.NamespaceIndentation = FormatStyle::NI_Inner;
> +  Style.ObjCSpaceAfterProperty = true;
>    Style.PointerBindsToType = true;
>    return Style;
>  }
>
> Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=200320&r1=200319&r2=200320&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
> +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Tue Jan 28 09:20:33 2014
> @@ -1260,6 +1260,9 @@ bool TokenAnnotator::spaceRequiredBetwee
>          (Left.TokenText == "returns" || Left.TokenText == "option"))
>        return true;
>    }
> +  if (Style.ObjCSpaceAfterProperty && Line.Type == LT_ObjCProperty &&
> +      Left.Tok.getObjCKeywordID() == tok::objc_property)
> +    return true;
>    if (Right.is(tok::hashhash))
>      return Left.is(tok::hash);
>    if (Left.isOneOf(tok::hashhash, tok::hash))
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=200320&r1=200319&r2=200320&view=diff
>
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Tue Jan 28 09:20:33 2014
> @@ -5872,6 +5872,12 @@ TEST_F(FormatTest, ObjCSnippets) {
>    verifyFormat("@property(assign, nonatomic) CGFloat hoverAlpha;");
>    verifyFormat("@property(assign, getter=isEditable) BOOL editable;");
>    verifyGoogleFormat("@property(assign, getter=isEditable) BOOL
> editable;");
> +  verifyFormat("@property (assign, getter=isEditable) BOOL editable;",
> +               getMozillaStyle());
> +  verifyFormat("@property BOOL editable;", getMozillaStyle());
> +  verifyFormat("@property (assign, getter=isEditable) BOOL editable;",
> +               getWebKitStyle());
> +  verifyFormat("@property BOOL editable;", getWebKitStyle());
>
>    verifyFormat("@import foo.bar;\n"
>                 "@import baz;");
> @@ -7323,6 +7329,7 @@ TEST_F(FormatTest, ParsesConfiguration)
>    CHECK_PARSE_BOOL(ConstructorInitializerAllOnOneLineOrOnePerLine);
>    CHECK_PARSE_BOOL(DerivePointerBinding);
>    CHECK_PARSE_BOOL(IndentCaseLabels);
> +  CHECK_PARSE_BOOL(ObjCSpaceAfterProperty);
>    CHECK_PARSE_BOOL(ObjCSpaceBeforeProtocolList);
>    CHECK_PARSE_BOOL(PointerBindsToType);
>    CHECK_PARSE_BOOL(Cpp11BracedListStyle);
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140128/d14ce73a/attachment.html>


More information about the cfe-commits mailing list