Rakete1111 added inline comments.
================
Comment at: lib/Sema/Sema.cpp:2006-2019
+bool Sema::isDeclaratorFunctionLike(const Declarator &D) {
+ assert(D.getCXXScopeSpec().isSet() &&
+ "can only be called for qualified names");
+ LookupResult LR(*this, D.getIdentifier(), D.getBeginLoc(),
LookupOrdinaryName,
+ ForVisibleRedeclaration);
+ DeclContext *DC = computeDeclContext(D.getCXXScopeSpec());
+ if (!DC)
----------------
rsmith wrote:
> Some thoughts on this:
>
> * Can this be unified with the lookup code in `HandleDeclarator`? This is
> really the same lookup, repeated in two places.
> * It'd be nice to cache this lookup, rather than performing it three times
> (once when disambiguating a parenthesized initializer from a function
> declaration, once when we're about to parse a parameter-declaration-clause,
> and once in `HandleDeclarator` after parsing completes -- though at least
> that's reduced to two lookups if you make the change I suggested in
> `ParseParameterDeclarationClause`)
> * If we don't do the caching, what happens if lookup fails due to ambiguity?
> Do we get the same error multiple times (once for each time we perform the
> lookup)?
I don't think so, because `HandleDeclarator` is called after having already
parsed the function declaration. I cached it now, but the cleanest solution
that I could think of is to use `new`. Is this appropriate? Or do you have an
alternative suggestion?
Repository:
rC Clang
https://reviews.llvm.org/D53847
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits