зеркало из https://github.com/microsoft/clang-1.git
objective-c++ parsing. Turn off delayed parsing
of out-of-line c++ method definition which happens to be inside an objc class implementation until I can figure out how to do it. This is to fix a broken project. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159772 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
d797a85866
Коммит
39700f81c5
|
@ -1322,7 +1322,9 @@ Parser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS,
|
|||
// Look at the next token to make sure that this isn't a function
|
||||
// declaration. We have to check this because __attribute__ might be the
|
||||
// start of a function definition in GCC-extended K&R C.
|
||||
!isDeclarationAfterDeclarator()) {
|
||||
!isDeclarationAfterDeclarator() &&
|
||||
(!CurParsedObjCImpl || Tok.isNot(tok::l_brace) ||
|
||||
(getLangOpts().CPlusPlus && D.getCXXScopeSpec().isSet()))) {
|
||||
|
||||
if (isStartOfFunctionDefinition(D)) {
|
||||
if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {
|
||||
|
|
|
@ -773,9 +773,7 @@ bool Parser::isDeclarationAfterDeclarator() {
|
|||
Tok.is(tok::kw_asm) || // int X() __asm__ -> not a function def
|
||||
Tok.is(tok::kw___attribute) || // int X() __attr__ -> not a function def
|
||||
(getLangOpts().CPlusPlus &&
|
||||
Tok.is(tok::l_paren)) || // int X(0) -> not a function def [C++]
|
||||
(CurParsedObjCImpl &&
|
||||
Tok.is(tok::l_brace)); // C-function nested in an @implementation
|
||||
Tok.is(tok::l_paren)); // int X(0) -> not a function def [C++]
|
||||
}
|
||||
|
||||
/// \brief Determine whether the current token, if it occurs after a
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
struct X {
|
||||
X();
|
||||
void SortWithCollator();
|
||||
};
|
||||
|
||||
@interface MyClass
|
||||
|
@ -39,5 +40,5 @@ static int test() {
|
|||
int x{17};
|
||||
|
||||
X::X() = default;
|
||||
|
||||
void X::SortWithCollator() {}
|
||||
@end
|
||||
|
|
Загрузка…
Ссылка в новой задаче