benhamilton created this revision. benhamilton added reviewers: krasimir, djasper, sammccall. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Test Plan: New tests added. Ran tests with: % ninja FormatTests && ./tools/clang/unittests/Format/FormatTests Confirmed tests failed before change and passed after change. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D64775 Files: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTestObjC.cpp Index: clang/unittests/Format/FormatTestObjC.cpp =================================================================== --- clang/unittests/Format/FormatTestObjC.cpp +++ clang/unittests/Format/FormatTestObjC.cpp @@ -886,6 +886,18 @@ " bb:42\n" " cc:42];"); + // Avoid breaking between unary operators and ObjC method expressions. + Style.ColumnLimit = 45; + verifyFormat("if (a012345678901234567890123 &&\n" + " ![foo bar]) {\n" + "}"); + verifyFormat("if (a012345678901234567890123 &&\n" + " +[foo bar]) {\n" + "}"); + verifyFormat("if (a012345678901234567890123 &&\n" + " -[foo bar]) {\n" + "}"); + Style.ColumnLimit = 70; verifyFormat( "void f() {\n" Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -2425,6 +2425,8 @@ if (Left.is(TT_JavaAnnotation)) return 50; + if (Left.is(TT_UnaryOperator) && Right.is(TT_ObjCMethodExpr)) + return 60; if (Left.isOneOf(tok::plus, tok::comma) && Left.Previous && Left.Previous->isLabelString() && (Left.NextOperator || Left.OperatorIndex != 0))
Index: clang/unittests/Format/FormatTestObjC.cpp =================================================================== --- clang/unittests/Format/FormatTestObjC.cpp +++ clang/unittests/Format/FormatTestObjC.cpp @@ -886,6 +886,18 @@ " bb:42\n" " cc:42];"); + // Avoid breaking between unary operators and ObjC method expressions. + Style.ColumnLimit = 45; + verifyFormat("if (a012345678901234567890123 &&\n" + " ![foo bar]) {\n" + "}"); + verifyFormat("if (a012345678901234567890123 &&\n" + " +[foo bar]) {\n" + "}"); + verifyFormat("if (a012345678901234567890123 &&\n" + " -[foo bar]) {\n" + "}"); + Style.ColumnLimit = 70; verifyFormat( "void f() {\n" Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -2425,6 +2425,8 @@ if (Left.is(TT_JavaAnnotation)) return 50; + if (Left.is(TT_UnaryOperator) && Right.is(TT_ObjCMethodExpr)) + return 60; if (Left.isOneOf(tok::plus, tok::comma) && Left.Previous && Left.Previous->isLabelString() && (Left.NextOperator || Left.OperatorIndex != 0))
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits