diff options
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 38 | 
1 files changed, 9 insertions, 29 deletions
| diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9657b8deb9e..d6d13384b2c 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -1667,21 +1667,11 @@ static bool InjectAnonymousStructOrUnionMembers(Sema &SemaRef, Scope *S,  /// StorageClassSpecToVarDeclStorageClass - Maps a DeclSpec::SCS to  /// a VarDecl::StorageClass. Any error reporting is up to the caller:  /// illegal input values are mapped to VarDecl::None. -/// If the input declaration context is a linkage specification -/// with no braces, then Extern is mapped to None.  static VarDecl::StorageClass -StorageClassSpecToVarDeclStorageClass(DeclSpec::SCS StorageClassSpec, -                                      DeclContext *DC) { +StorageClassSpecToVarDeclStorageClass(DeclSpec::SCS StorageClassSpec) {    switch (StorageClassSpec) {    case DeclSpec::SCS_unspecified:    return VarDecl::None; -  case DeclSpec::SCS_extern: -    // If the current context is a C++ linkage specification -    // having no braces, then the keyword "extern" is properly part -    // of the linkage specification itself, rather than being -    // the written storage class specifier. -    return (DC && isa<LinkageSpecDecl>(DC) && -            !cast<LinkageSpecDecl>(DC)->hasBraces()) -      ? VarDecl::None : VarDecl::Extern; +  case DeclSpec::SCS_extern:         return VarDecl::Extern;    case DeclSpec::SCS_static:         return VarDecl::Static;    case DeclSpec::SCS_auto:           return VarDecl::Auto;    case DeclSpec::SCS_register:       return VarDecl::Register; @@ -1696,21 +1686,11 @@ StorageClassSpecToVarDeclStorageClass(DeclSpec::SCS StorageClassSpec,  /// StorageClassSpecToFunctionDeclStorageClass - Maps a DeclSpec::SCS to  /// a FunctionDecl::StorageClass. Any error reporting is up to the caller:  /// illegal input values are mapped to FunctionDecl::None. -/// If the input declaration context is a linkage specification -/// with no braces, then Extern is mapped to None.  static FunctionDecl::StorageClass -StorageClassSpecToFunctionDeclStorageClass(DeclSpec::SCS StorageClassSpec, -                                           DeclContext *DC) { +StorageClassSpecToFunctionDeclStorageClass(DeclSpec::SCS StorageClassSpec) {    switch (StorageClassSpec) {    case DeclSpec::SCS_unspecified:    return FunctionDecl::None; -  case DeclSpec::SCS_extern: -    // If the current context is a C++ linkage specification -    // having no braces, then the keyword "extern" is properly part -    // of the linkage specification itself, rather than being -    // the written storage class specifier. -    return (DC && isa<LinkageSpecDecl>(DC) && -            !cast<LinkageSpecDecl>(DC)->hasBraces()) -      ? FunctionDecl::None : FunctionDecl::Extern; +  case DeclSpec::SCS_extern:         return FunctionDecl::Extern;    case DeclSpec::SCS_static:         return FunctionDecl::Static;    case DeclSpec::SCS_private_extern: return FunctionDecl::PrivateExtern;      // Illegal SCSs map to None: error reporting is up to the caller. @@ -1851,7 +1831,7 @@ Sema::DeclPtrTy Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS,      DeclSpec::SCS SCSpec = DS.getStorageClassSpec();      assert(SCSpec != DeclSpec::SCS_typedef &&             "Parser allowed 'typedef' as storage class VarDecl."); -    VarDecl::StorageClass SC = StorageClassSpecToVarDeclStorageClass(SCSpec, 0); +    VarDecl::StorageClass SC = StorageClassSpecToVarDeclStorageClass(SCSpec);      if (SCSpec == DeclSpec::SCS_mutable) {        // mutable can only appear on non-static class members, so it's always        // an error here @@ -1861,7 +1841,7 @@ Sema::DeclPtrTy Sema::BuildAnonymousStructOrUnion(Scope *S, DeclSpec &DS,      }      SCSpec = DS.getStorageClassSpecAsWritten();      VarDecl::StorageClass SCAsWritten -      = StorageClassSpecToVarDeclStorageClass(SCSpec, 0); +      = StorageClassSpecToVarDeclStorageClass(SCSpec);      Anon = VarDecl::Create(Context, Owner, Record->getLocation(),                             /*IdentifierInfo=*/0, @@ -2521,7 +2501,7 @@ Sema::ActOnVariableDeclarator(Scope* S, Declarator& D, DeclContext* DC,    DeclSpec::SCS SCSpec = D.getDeclSpec().getStorageClassSpec();    assert(SCSpec != DeclSpec::SCS_typedef &&           "Parser allowed 'typedef' as storage class VarDecl."); -  VarDecl::StorageClass SC = StorageClassSpecToVarDeclStorageClass(SCSpec, 0); +  VarDecl::StorageClass SC = StorageClassSpecToVarDeclStorageClass(SCSpec);    if (SCSpec == DeclSpec::SCS_mutable) {      // mutable can only appear on non-static class members, so it's always      // an error here @@ -2531,7 +2511,7 @@ Sema::ActOnVariableDeclarator(Scope* S, Declarator& D, DeclContext* DC,    }    SCSpec = D.getDeclSpec().getStorageClassSpecAsWritten();    VarDecl::StorageClass SCAsWritten -    = StorageClassSpecToVarDeclStorageClass(SCSpec, DC); +    = StorageClassSpecToVarDeclStorageClass(SCSpec);    IdentifierInfo *II = Name.getAsIdentifierInfo();    if (!II) { @@ -3016,7 +2996,7 @@ Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC,    DeclSpec::SCS SCSpec = D.getDeclSpec().getStorageClassSpecAsWritten();    FunctionDecl::StorageClass SCAsWritten -    = StorageClassSpecToFunctionDeclStorageClass(SCSpec, DC); +    = StorageClassSpecToFunctionDeclStorageClass(SCSpec);    // Check that the return type is not an abstract class type.    // For record types, this is done by the AbstractClassUsageDiagnoser once | 

