[PATCH] Add CommentOptions, allow specifying custom comment block commands

Dmitri Gribenko gribozavr at gmail.com
Tue Feb 5 07:54:36 PST 2013


Hi Doug,

To support custom commands in comments we need some mechanism to tell
inline and block commands apart, because command kind (inline/block)
affects comment parsing.  This patch adds CommentOptions inside
LangOptions to store a list of block commands that are registered
dynamically.

The final issue is CommentOptions serialization and PCH.  It looks
like ASTContext can be created with empty LangOpts -- it will be
deserialized later.  But block commands from CommentOptions should be
registered in CommandTraits...

Can you please take a look at
http://llvm-reviews.chandlerc.com/D272?vs=879&id=882&whitespace=ignore-all#toc
?

Dmitri

On Tue, Feb 5, 2013 at 5:45 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
>
>   Please also update `checkLanguageOptions` in ASTReader.cpp to compare CommentOptions, too.
>
>
> ================
> Comment at: lib/AST/CommentCommandTraits.cpp:24
> @@ +23,3 @@
> +
> +void CommandTraits::RegisterCommentOptions(
> +  const CommentOptions &CommentOptions) {
> ----------------
> Functions' names start with a lowercase letter.
>
> ================
> Comment at: lib/AST/CommentCommandTraits.cpp:25
> @@ +24,3 @@
> +void CommandTraits::RegisterCommentOptions(
> +  const CommentOptions &CommentOptions) {
> +  for (CommentOptions::BlockCommandNamesTy::const_iterator I =
> ----------------
> 'const' should be indented by at least 4 spaces.
>
> ================
> Comment at: lib/Frontend/ASTUnit.cpp:579-580
> @@ -576,1 +578,4 @@
> +    // constructed, so register them now.
> +    Context.getCommentCommandTraits().RegisterCommentOptions(
> +      LangOpt.CommentOpts);
>    }
> ----------------
> As far as I see, updated() can be called multiple times.  We will get multiple commands with the same name registered.
>
> I'm not sure that this is the correct place to put this, though.  Not all PCH loading is done through ASTUnit.  CompilerInstance::createPCHExternalASTSource might be the correct one, but I'm not sure.  I'll ask Doug.
>
>
> http://llvm-reviews.chandlerc.com/D272



-- 
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/



More information about the cfe-commits mailing list