Details
Details
- Reviewers
- MyDeveloperDay - HazardyKnusperkeks - owenpan 
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
| Time | Test | |
|---|---|---|
| 50 ms | x64 debian > LLVM.Bindings/Go::go.test | 
Event Timeline
Comment Actions
Thank you for doing this.
With the patch, I get this diff:
diff diff --git a/sources/details/waarudo.details.utilities.cpp b/sources/details/waarudo.details.utilities.cpp index 0b3680e..6e234ac 100644 --- a/sources/details/waarudo.details.utilities.cpp +++ b/sources/details/waarudo.details.utilities.cpp @@ -7,8 +7,8 @@ namespace waarudo { export template<class T, template<class...> class U> concept specialization_of = // (requires(T v) { - []<class... V>(U<V...>) requires std::same_as<T, U<V...>> { } - (v); + []<class... V>(U<V...>) requires std::same_as<T, U<V...>> { + }(v); }); template<class T, class U> concept value_trait_for = // diff --git a/sources/waarudo.quantities.cpp b/sources/waarudo.quantities.cpp index 83a17db..fdc4c53 100644 --- a/sources/waarudo.quantities.cpp +++ b/sources/waarudo.quantities.cpp @@ -52,12 +52,20 @@ export template<class Id, number Number> struct quantity { requires std::convertible_to<const Number&, Number2> [[nodiscard]] constexpr operator quantity<Id, Number2>() const { return {number}; } - constexpr quantity& operator++() & requires ordered_number<Number> { return ++number, *this; } - constexpr quantity& operator--() & requires ordered_number<Number> { return --number, *this; } - [[nodiscard]] constexpr quantity operator++(int) & requires ordered_number<Number> { return {number++}; } - [[nodiscard]] constexpr quantity operator--(int) & requires ordered_number<Number> { return {number--}; } + constexpr quantity& operator++() & requires ordered_number<Number> { + return ++number, *this; + } constexpr quantity& operator--() & requires ordered_number<Number> { + return --number, *this; + } [[nodiscard]] constexpr quantity operator++(int) & requires ordered_number<Number> { + return {number++}; + } [[nodiscard]] constexpr quantity operator--(int) & requires ordered_number<Number> { + return {number--}; + } - constexpr quantity& operator+=(const relative_quantity_for<quantity> auto& d) & { return number += d.number, *this; } + constexpr quantity& + operator+=(const relative_quantity_for<quantity> auto& d) & { + return number += d.number, *this; + } constexpr quantity& operator-=(const relative_quantity_for<quantity> auto& d) & { return number -= d.number, *this; } template<relative_quantity_for<quantity> Q>
Here's how it looks without the patch:
namespace waarudo {
export template<class T, template<class...> class U> concept specialization_of = //
  (requires(T v) {
    []<class... V>(U<V...>) requires std::same_as<T, U<V...>> { }
    (v);
  });
struct x {
  constexpr quantity& operator++() & requires ordered_number<Number> { return ++number, *this; }
  constexpr quantity& operator--() & requires ordered_number<Number> { return --number, *this; }
  [[nodiscard]] constexpr quantity operator++(int) & requires ordered_number<Number> { return {number++}; }
  [[nodiscard]] constexpr quantity operator--(int) & requires ordered_number<Number> { return {number--}; }
  constexpr quantity& operator+=(const relative_quantity_for<quantity> auto& d) & { return number += d.number, *this; }
  constexpr quantity& operator-=(const relative_quantity_for<quantity> auto& d) & { return number -= d.number, *this; }
};
} // namespace waarudoHere's my .clang-format:
AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: None
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: No
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeConceptDeclarations: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DeriveLineEnding: false
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
FixNamespaceComments: true
IncludeBlocks: Preserve
IncludeCategories:
  - Regex:      '<(experimental/)?[a-z_]+>' # C++ standard library
    Priority:   1
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentPPDirectives: AfterHash
IndentRequires: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
PointerAlignment: Left
PPIndentWidth: -1
ReflowComments: true
ShortNamespaceLines: 0
SortIncludes: CaseInsensitive
SortUsingDeclarations: true
SpaceAfterLogicalNot: true
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInLineCommentPrefix:
  Minimum: 1
  Maximum: 1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
TabWidth: 2
UseCRLF: false
UseTab: NeverThe second file in the diff, sources/waarudo.quantities.cpp, has a problem. The problem is that I've built my .clang-format to minimize line breaks, but for some reason, what fit on a line before, now doesn't.
On inspection, its first diff does not insert a line break before the start of new functions. Its second diff changes just the first function. If I remove the lines in the previous diff so that x only has operators += and -=, they remain unchanged.