[cfe-dev] Two patches

Olaf Krzikalla Olaf.Krzikalla at tu-dresden.de
Mon Nov 15 08:30:20 PST 2010


Hi @clang,

I've attached two patches and hope that both will be soon or later 
committed. I've subdivided them, because the first one is very tiny and 
was already discussed here.
In particular:

1.
parentmap.patch adds a function "addStmt" to ParentMap which actually 
adds a statement or updates the parent-children relations of an already 
existing statement. The comment to "addStmt" respects the remarks that 
some of you made at an earlier attempt ("A patch for printing policy and 
other stuff").

2.
rewrite_options.patch adds two code rewrite options to the pretty 
printer of the clang frontend:
-rewrite-indent <value> Indentation of formatted rewrite output 
-rewrite-style <value>  Style of formatted rewrite output: KR|ANSI

The ANSI style now works with the majority of statements and 
declarations with the exception of some ObjC constructs. I'm not sure 
whether there is a de facto standard for ObjC syntax or whether there 
are any syntactic restrictions in ObjC. Maybe someone familiar with ObjC 
can extend the pretty printer in order to respect the rewrite style for 
ObjC too.
However, there are some remarks necessary:
- A namespace declaration is always rewritten in KR mode. This is by 
intent.
- There are two other changes hidden in the patch: 
PrinterHelper::handledStmt got the current indentation level as an 
argument and I made Rewriter::getMappedOffset public. Both changes 
should be harmless.
- The IMHO most arguable point is the placement of the two options. They 
are now members of LangOptions, which is the pragmatic solution. Leaving 
them in PrintingPolicy would have caused a lot of refactoring during 
argument parsing (at that time there is no PrintingPolicy yet). Placing 
them in FrontendOptions (the more natural place) would have not only 
introduced more dependencies but also over-complicated the construction 
of PrintingPolicy.


I hope these patches make it into clang (my own source-to-source
transformer relies on them).


Best Olaf
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rewrite_options.patch
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20101115/0b3716ec/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: parentmap.patch
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20101115/0b3716ec/attachment-0001.ksh>


More information about the cfe-dev mailing list