Changeset 7aaec67


Ignore:
Timestamp:
Jan 31, 2018, 4:56:26 PM (4 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
60914351
Parents:
c453ac4
Message:

Add with clause support to PassVisitor?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Common/PassVisitor.impl.h

    rc453ac4 r7aaec67  
    392392        indexerAddId( node );
    393393
     394        maybeAccept_impl( node->withExprs, *this );
    394395        {
    395396                // with clause introduces a level of scope (for the with expression members).
     
    397398                // shadow with exprs and not the other way around.
    398399                auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
    399                 // implicit add __func__ identifier as specified in the C manual 6.4.2.2
    400                 static ObjectDecl func(
    401                         "__func__", noStorageClasses, LinkageSpec::C, nullptr,
    402                         new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
    403                         nullptr
    404                 );
    405                 indexerAddId( &func );
    406                 maybeAccept_impl( node->type, *this );
    407                 maybeAccept_impl( node->statements, *this );
    408                 maybeAccept_impl( node->attributes, *this );
     400                indexerAddWith( node->withExprs );
     401                {
     402                        auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
     403                        // implicit add __func__ identifier as specified in the C manual 6.4.2.2
     404                        static ObjectDecl func(
     405                                "__func__", noStorageClasses, LinkageSpec::C, nullptr,
     406                                new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
     407                                nullptr
     408                        );
     409                        indexerAddId( &func );
     410                        maybeAccept_impl( node->type, *this );
     411                        maybeAccept_impl( node->statements, *this );
     412                        maybeAccept_impl( node->attributes, *this );
     413                }
    409414        }
    410415
     
    423428                // shadow with exprs and not the other way around.
    424429                auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
    425                 // implicit add __func__ identifier as specified in the C manual 6.4.2.2
    426                 static ObjectDecl func(
    427                         "__func__", noStorageClasses, LinkageSpec::C, nullptr,
    428                         new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
    429                         nullptr
    430                 );
    431                 indexerAddId( &func );
    432                 maybeMutate_impl( node->type, *this );
    433                 maybeMutate_impl( node->statements, *this );
    434                 maybeMutate_impl( node->attributes, *this );
     430                indexerAddWith( node->withExprs );
     431                {
     432                        auto guard = makeFuncGuard( [this]() { indexerScopeEnter(); }, [this]() { indexerScopeLeave(); } );
     433                        // implicit add __func__ identifier as specified in the C manual 6.4.2.2
     434                        static ObjectDecl func(
     435                                "__func__", noStorageClasses, LinkageSpec::C, nullptr,
     436                                new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), nullptr, true, false ),
     437                                nullptr
     438                        );
     439                        indexerAddId( &func );
     440                        maybeMutate_impl( node->type, *this );
     441                        maybeMutate_impl( node->statements, *this );
     442                        maybeMutate_impl( node->attributes, *this );
     443                }
    435444        }
    436445
Note: See TracChangeset for help on using the changeset viewer.