[cfe-commits] clang formatter patch to move and rename RewriterTestContext.h

jahanian fjahanian at apple.com
Tue Dec 18 12:01:06 PST 2012


On Dec 18, 2012, at 11:45 AM, Manuel Klimek <klimek at google.com> wrote:

> On Tue, Dec 18, 2012 at 8:36 PM, Douglas Gregor <dgregor at apple.com> wrote:
> 
> On Dec 18, 2012, at 11:31 AM, Manuel Klimek <klimek at google.com> wrote:
> 
>> On Tue, Dec 18, 2012 at 7:55 PM, Douglas Gregor <dgregor at apple.com> wrote:
>> [Re-adding cfe-commits]
>> 
>> On Dec 18, 2012, at 10:16 AM, Daniel Jasper <djasper at google.com> wrote:
>> 
>>> 
>>> 
>>> 
>>> On Tue, Dec 18, 2012 at 6:41 PM, Douglas Gregor <dgregor at apple.com> wrote:
>>> 
>>> On Dec 18, 2012, at 1:09 AM, Daniel Jasper <djasper at google.com> wrote:
>>> 
>>>> 
>>>> 
>>>> 
>>>> On Mon, Dec 17, 2012 at 11:04 PM, Douglas Gregor <dgregor at apple.com> wrote:
>>>> 
>>>> On Dec 17, 2012, at 9:55 AM, Daniel Jasper <djasper at google.com> wrote:
>>>> 
>>>>> Hi Fariborz,
>>>>> 
>>>>> I am taking a look at your patch, but please bear with me for another day or two. I am not yet convinced that mingling C++ and ObjC formatting that closely is a wise decision. I think we might need something that clearly separates the different modes. And you touch a lot of code that I intended to refactor into something halfway sane this week. I will take your patch into consideration when doing so, but it might need some changes afterwards.
>>>> 
>>>> If we're going to distinguish the modes, we need to do so syntactically. Objective-C++ is a very popular dialect; we can't simply rely on extrinsic knowledge of whether we're dealing with Objective-C or C++ to make these decisions.
>>>> 
>>>> I am not sure I fully understand this. We are currently relying on a Lexer which in turn requires LangOptions to create the correct tokens. Same for the identifier table we use to split raw_identifiers into identifiers and keywords. Are you saying the formatter should not capitalize on this knowledge of the input token stream?
>>> 
>>> Oh, it should certainly capitalize on this knowledge. My concern is that, when you mentioned that we might need something that "clearly separates the different modes", you were thinking of Objective-C and C++ as independent languages that aren't used together. Fortunately, we can tell syntactically whether we're in an Objective-C method declaration fairly easily: they start with + or -, almost always in the first column, so if it would be better to go down a different code-formatting path where the rules for spacing around (/)/: are different, we could do that instead.
>>> 
>>> 	- Doug
>>> 
>>> Yeah, "clearly separate" was probably stronger phrased than intended. One of the things I wonder is the following:
>>> If we are not in Objective-C according to the LangOptions and we discover a + or - at the beginning of a "line", should we assume an error has happened (e.g. forgotten "}" or ";") or try to format as an Objective-C declaration?
>> 
>> I think we should assume that an error has occurred. If clients don't know the language dialect, they should pick something maximally inclusive (e.g., Objective-C++11). 
>> 
>> For files, I assume it's easy enough to detect by the file extension?
> 
> And .h means what, exactly?
> 
> I assume with that comment you're telling me it's used for Objective-C, too? :) Reading up the wikipedia page suggests so ... 
> 
> How different is Objective-C usually layed out? Will we need a configuration to tell us which files in a project are which language, or will we get away with auto-detection? I assume auto-detection is hard as there will be keywords that have special layout rules in both languages?

Objective-C keywords all start with '@'. Common names words with special meanings in objC can be detected in the objective-C syntax. For example, 'copy'  in @property (copy) … 
Outside objective-C specific syntax, we stick to what common formatter will give us. For example, I don't see that we want to change layout of ivar declarations any different than
struct fields (even that can be detected and changed if we want to).

- Fariborz

> 
> Cheers,
> /Manuel
> _______________________________________________
> 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/20121218/a0438aa9/attachment.html>


More information about the cfe-commits mailing list