]> granicus.if.org Git - clang/commitdiff
In a declarator, consider an identifier a constructor only if it is followed by '('.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 8 Nov 2008 01:09:16 +0000 (01:09 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sat, 8 Nov 2008 01:09:16 +0000 (01:09 +0000)
Previously:

class C {
  int C;  // Declarator::SetConstructor was called here.
};

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58880 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseDecl.cpp

index 2b18be02a3df2977410a8305ac3e8e326158c22a..39d3acc0f9ebe282861958d6159df46c8a4b1d68 100644 (file)
@@ -1363,7 +1363,8 @@ void Parser::ParseDirectDeclarator(Declarator &D) {
     // Determine whether this identifier is a C++ constructor name or
     // a normal identifier.
     if (getLang().CPlusPlus && 
-        Actions.isCurrentClassName(*Tok.getIdentifierInfo(), CurScope))
+        Actions.isCurrentClassName(*Tok.getIdentifierInfo(), CurScope) &&
+        NextToken().is(tok::l_paren))
       D.SetConstructor(Actions.isTypeName(*Tok.getIdentifierInfo(), CurScope),
                        Tok.getIdentifierInfo(), Tok.getLocation());
     else