MyDeveloperDay marked 2 inline comments as done.
MyDeveloperDay added a comment.

I feel like there might something of a concencus forming.. If I take the time 
to redo following the suggestions @sammccall do you think you could live with 
it?



================
Comment at: clang/include/clang/Format/Format.h:1632
+  bool isCppOnly() const { return Language == LK_Cpp; }
+  bool isObjectiveC() const { return Language == LK_ObjC; }
+  bool isCpp() const { return isCppOnly() || isObjectiveC(); }
----------------
Quuxplusone wrote:
> curdeius wrote:
> > sammccall wrote:
> > > Just my 2c - I find the current meaning of isCpp easier to understand, 
> > > and would prefer isObjectiveC to mean objective-C/C++. h if it exists.
> > > 
> > > Reasons:
> > >  - this is consistent with LangOptions::CPlusPlus and LangOptions::ObjC
> > >  - when checking for C++, also applying these rules to ObjC++ should be 
> > > the common/default case, and excluding ObjC++ the special case that 
> > > justifies more precise syntax (and honestly, I'd find `isCpp && !isObjC` 
> > > to carry the clearest intent in that case). IOW, this seems like it will 
> > > attract bugs.
> > > 
> > > > perhaps a better name for isCpp() is isCStyleLanguages()
> > > 
> > > Clang uses the term "C family languages", and this includes C, C++, ObjC, 
> > > ObjC++.
> > > If you really want to avoid the conflict between C++ the boolean language 
> > > option and C++ the precise language mode, I'd suggest `isPlusPlus()` and 
> > > `isObjective()`. But I think consistency with LangOptions is worth more.
> > I'd rather go for coherence with `LanguageKind` options and spell it 
> > `isObjC()`.
> Peanut gallery says: Please be consistent! If you're going to do 
> `isCppOrObjC()`, then you should also do `isObjC()`, not `isObjectiveC()`. 
> (Or vice versa.)
> 
> What about Objective-C++? Are people using `isCppOrObjectiveC()` to mean 
> "well actually it's Objective-C++ but we have no LanguageKind for that, oops?"
> 
> Re the term "C family languages," I've heard "curly-brace languages" — but 
> that would include C#, Java, and JavaScript as well.
> 
> It seems to be that the members should be
> ```
> bool isC() const { return Language == LK_Cpp; }  // no LK_C yet
> bool isCpp() const { return Language == LK_Cpp; }
> bool isObjectiveC() const { return Language == LK_ObjectiveC; }
> bool isObjectiveCpp() const { return Language == LK_ObjectiveC; }  // no 
> LK_ObjectiveCpp yet
> bool includesCpp() const { return isCpp() || is ObjectiveCpp(); }
> ```
> and that most of the callers you're talking about should be using 
> `includesCpp()` instead of `isCpp()`.
So I think I'd refrain from adding the `isC()` and `isObjectiveCpp()` unless 
they were added to clang itself. But if they were then I think I'd be 100% with 
you.

I'm not really a fan of the IsCppOnly() this was really to minimize the initial 
changes to use a function, I actually think 'isCppOrObjC()' is a better choice,

but I think I'd do that transistion from `isCpp -> isCppOrObjC()` and 
`isCppOnly() -> isCpp()` in a separate revision.


================
Comment at: clang/include/clang/Format/Format.h:1635
   bool isCSharp() const { return Language == LK_CSharp; }
+  bool isProtoBuf() const { return Language == LK_Proto; }
+  bool isTableGen() const { return Language == LK_TableGen; }
----------------
Quuxplusone wrote:
> curdeius wrote:
> > sammccall wrote:
> > > These functions that don't *even in principle* do more than compare to an 
> > > enum seem like extra indirection that hurts understanding of the code 
> > > (have to look up what isObjectiveC() does, or have subtle bugs).
> > > 
> > > I suspect isCSharp() was added due to a misunderstanding of what isCpp() 
> > > was for.
> > Ditto, maybe `isProto` and `isTextProto`?
> If the name of the language is "Protobuf", then the name of the function 
> should be `isProtobuf()`.
I'm good with changing it to use the correct for obj `isObjC()` and `isProto()` 
annd `isTextProto()`

I don't really mind what we call them I just don't like the extra visual 
complexity that the `Style.Langauge == LK_XXX` and `Style.Langauge != LK_XXX` 
brings


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

https://reviews.llvm.org/D80079



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

Reply via email to