klimek added inline comments.
Comment at: lib/Sema/SemaCodeComplete.cpp:2453
std::string PlaceholderStr = FormatFunctionParameter(Policy, Param);
+ if (Param->hasDefaultArg() && PlaceholderStr.find("=") ==
+ std::string DefaultValue =
> klimek wrote:
> > yvvan wrote:
> > > klimek wrote:
> > > > Why the check for = in the PlaceholderStr?
> > > Not to add default value twice. If there's already "=" in placeholder
> > > string that means we've already added it in FormatFunctionParameter call
> > In which cases would the default value not be added in
> > FormatFunctionParameter if there is one, and need to be added here?
> If Param->evaluateValue() can evaluate it it will set the default value in
> FormatFunctionParameter (that means it's a primitive type like "void func(int
> i = 0)").
> In case it's some kind of non-primitive type like "void func(Foo foo = Foo(0,
> 0))" it will not be evaluated and we can use here the source manager to get
> the default value string. In this example it will be Foo(0, 0).
Why don't we always add it in the unevaluated form? I'd expect constants from
macros are useful to see unevaluated?
cfe-commits mailing list