omarahmed marked 3 inline comments as done and an inline comment as not done.
omarahmed added inline comments.


================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3396
              spaceRequiredBeforeParens(Right);
+    if (Style.SpaceBeforeParens == FormatStyle::SBPO_Custom &&
+        Left.isOneOf(tok::kw_new, tok::kw_delete) &&
----------------
HazardyKnusperkeks wrote:
> omarahmed wrote:
> > MyDeveloperDay wrote:
> > > shouldn't the very first part of this be? 
> > > 
> > > 
> > > ```
> > > if (Style.SpaceBeforeParensOptions.AfterPlacementOperator != 
> > > FormatStyle::SpaceBeforeParensCustom::APO_Leave)
> > > {
> > > 
> > > ....
> > > 
> > > }
> > > ```
> > > 
> > > i.e. don't we want a zero change if someone says "Leave"
> > The current code logic, when we do not enter this suggested condition, will 
> > switch to [this 
> > condition](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3580).
> >  And will not leave the code as it is, but will change it.
> > 
> > I have thought of getting rid of this condition entirely, but it handles 
> > the default situation suggested here, not only for cpp but for other 
> > languages like js:
> > >>As I understand, the default behavior for when the user didn't use 
> > >>`SBPO_Custom` is to add a space in placement operators based on [this 
> > >>issue](https://github.com/llvm/llvm-project/issues/54703). And, at the 
> > >>same time, the default behavior should be `APO_Never` when we have 
> > >>`SBPO_Custom` so that we handle other code that depends on that. the 
> > >>existing tests confirm this understanding. So, the current logic was 
> > >>added based on this understanding.
> > 
> > I tried to add an extra condition to [this 
> > condition](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3580)
> >  to support the main logic that we are pursuing. so that it would be like 
> > that:
> > ```
> > if (Style.SpaceBeforeParensOptions.AfterPlacementOperator != 
> > FormatStyle::SpaceBeforeParensCustom::APO_Leave && 
> > Left.isOneOf(tok::kw_new, tok::kw_delete))
> > ```
> > But that wouldn't fix the leave situation, as it will be also at the end, 
> > reach [this 
> > part](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3598)
> >  which will  
> > ```
> > return false
> > ``` 
> > and force no space.
> > 
> > I think all of that was raised because all current 
> > "SpaceBeforeParanthesesOptions" are either true or false and this is the 
> > only enum
> > 
> > However, I completely agree with this logic which is to begin our checking 
> > for leave. But I think we should refactor all the 
> > "spaceBeforeParenthesesOptions" conditions to handle this and do that after 
> > all the options have been transformed to enums.
> > 
> `SpaceBeforeParensOptions` should always be expanded, regardless of 
> `SpaceBeforeParens`, as far as I remember. `SpaceBeforeParens` is only for 
> the one configuring clang-format, the code that formats should always and 
> only check `SpaceBeforeParensOptions`.
But in general, doesn't that could create some kind of conflict like if someone 
used a specific option in `SpaceBeforeParens ` and then defined inside 
`SpaceBeforeParensOptions ` some rules that could conflict with 
`SpaceBeforeParens `, what should be the priority between them?



================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3396
              spaceRequiredBeforeParens(Right);
+    if (Style.SpaceBeforeParens == FormatStyle::SBPO_Custom &&
+        Left.isOneOf(tok::kw_new, tok::kw_delete) &&
----------------
omarahmed wrote:
> HazardyKnusperkeks wrote:
> > omarahmed wrote:
> > > MyDeveloperDay wrote:
> > > > shouldn't the very first part of this be? 
> > > > 
> > > > 
> > > > ```
> > > > if (Style.SpaceBeforeParensOptions.AfterPlacementOperator != 
> > > > FormatStyle::SpaceBeforeParensCustom::APO_Leave)
> > > > {
> > > > 
> > > > ....
> > > > 
> > > > }
> > > > ```
> > > > 
> > > > i.e. don't we want a zero change if someone says "Leave"
> > > The current code logic, when we do not enter this suggested condition, 
> > > will switch to [this 
> > > condition](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3580).
> > >  And will not leave the code as it is, but will change it.
> > > 
> > > I have thought of getting rid of this condition entirely, but it handles 
> > > the default situation suggested here, not only for cpp but for other 
> > > languages like js:
> > > >>As I understand, the default behavior for when the user didn't use 
> > > >>`SBPO_Custom` is to add a space in placement operators based on [this 
> > > >>issue](https://github.com/llvm/llvm-project/issues/54703). And, at the 
> > > >>same time, the default behavior should be `APO_Never` when we have 
> > > >>`SBPO_Custom` so that we handle other code that depends on that. the 
> > > >>existing tests confirm this understanding. So, the current logic was 
> > > >>added based on this understanding.
> > > 
> > > I tried to add an extra condition to [this 
> > > condition](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3580)
> > >  to support the main logic that we are pursuing. so that it would be like 
> > > that:
> > > ```
> > > if (Style.SpaceBeforeParensOptions.AfterPlacementOperator != 
> > > FormatStyle::SpaceBeforeParensCustom::APO_Leave && 
> > > Left.isOneOf(tok::kw_new, tok::kw_delete))
> > > ```
> > > But that wouldn't fix the leave situation, as it will be also at the end, 
> > > reach [this 
> > > part](https://github.com/llvm/llvm-project/blob/c2bb2e5973acd24c45c1823e95e8e33003c59484/clang/lib/Format/TokenAnnotator.cpp#L3598)
> > >  which will  
> > > ```
> > > return false
> > > ``` 
> > > and force no space.
> > > 
> > > I think all of that was raised because all current 
> > > "SpaceBeforeParanthesesOptions" are either true or false and this is the 
> > > only enum
> > > 
> > > However, I completely agree with this logic which is to begin our 
> > > checking for leave. But I think we should refactor all the 
> > > "spaceBeforeParenthesesOptions" conditions to handle this and do that 
> > > after all the options have been transformed to enums.
> > > 
> > `SpaceBeforeParensOptions` should always be expanded, regardless of 
> > `SpaceBeforeParens`, as far as I remember. `SpaceBeforeParens` is only for 
> > the one configuring clang-format, the code that formats should always and 
> > only check `SpaceBeforeParensOptions`.
> But in general, doesn't that could create some kind of conflict like if 
> someone used a specific option in `SpaceBeforeParens ` and then defined 
> inside `SpaceBeforeParensOptions ` some rules that could conflict with 
> `SpaceBeforeParens `, what should be the priority between them?
> 
In this specific case, for `AfterPlacementOperator` if someone doesn't define 
it, it should keep the default behavior in the past which is to add a space, 
and we defined the default to be `APO_Never`, so that's why I have conditioned 
it with `Custom` so that if someone doesn't want to define it, then we keep the 
old behavior.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127270/new/

https://reviews.llvm.org/D127270

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to