klimek added a comment.

In D59309#1428807 <https://reviews.llvm.org/D59309#1428807>, @MyDeveloperDay 
wrote:

> In D59309#1428799 <https://reviews.llvm.org/D59309#1428799>, @klimek wrote:
>
> > Why did the numeric constant break this? Which path would the function run 
> > through?
>
>
> as its looking though the parameter list is doesn't recognize a numeric 
> constant as being a valid thing it would see in an argument list and so falls 
> through the bottom to return false, it will only be where there is a 
> numeric_constant as the first argument, if it has a second argument and that 
> argument is just a simple type it would still fail, but switch them around 
> and it won't
>
> As I look more at this, even this would (and still would) fail to break
>
>   int TestFn(A=1)
>   {
>     return a;
>   }
>
>
> originally I didn't have the counting of the <> but one of the unit tests 
> failed where we had
>
>   verifyFormat("LoooooooooooooooooooooooooooooooooooooooongType\n"
>                "    LoooooooooooooooooooooooooooooooooooooooongVariable(1);");
>   
>   
>
> I guess they wanted to do something like this when the type and name is very 
> long
>
> int
>  variable(1);
>
> but I think this gets thought of as being a potential FunctionDecl
>
> so I held off just adding tok::numeric_constant to the isOneOf(), and went 
> with the use case
>
> I think perhaps I could solve the default argument by adding a
>
> startsSequence(tok::equal, tok::numeric_constant)


How does this even work for

  void Test(A a)
  {
  }

This code seems to deeply assume that the { is the last thing in the line for a 
definition. One question is whether we can just mark this as a function 
definition when we see the { in the UnwrappedLineParser...


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

https://reviews.llvm.org/D59309



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

Reply via email to