Changeset 522363e for src/Common
- Timestamp:
- Sep 14, 2017, 1:46:06 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 3e3d923, bff09c8, f92c696
- Parents:
- c57ded70
- Location:
- src/Common
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/PassVisitor.impl.h
rc57ded70 r522363e 66 66 DeclList_t* beforeDecls = visitor.get_beforeDecls(); 67 67 DeclList_t* afterDecls = visitor.get_afterDecls(); 68 SemanticError errors; 68 69 69 70 for ( std::list< Declaration* >::iterator i = decls.begin(); ; ++i ) { … … 73 74 if ( i == decls.end() ) break; 74 75 75 // run mutator on declaration 76 maybeAccept( *i, visitor ); 76 try { 77 // run visitor on declaration 78 maybeAccept( *i, visitor ); 79 } catch( SemanticError &e ) { 80 e.set_location( (*i)->location ); 81 errors.append( e ); 82 } 77 83 78 84 // splice in new declarations before current decl 79 85 if ( !empty( beforeDecls ) ) { decls.splice( i, *beforeDecls ); } 80 86 } 87 if ( ! errors.isEmpty() ) { 88 throw errors; 89 } 81 90 } 82 91 … … 86 95 DeclList_t* beforeDecls = mutator.get_beforeDecls(); 87 96 DeclList_t* afterDecls = mutator.get_afterDecls(); 97 SemanticError errors; 88 98 89 99 for ( std::list< Declaration* >::iterator i = decls.begin(); ; ++i ) { … … 92 102 93 103 if ( i == decls.end() ) break; 94 95 // run mutator on declaration 96 *i = maybeMutate( *i, mutator ); 104 try { 105 // run mutator on declaration 106 *i = maybeMutate( *i, mutator ); 107 } catch( SemanticError &e ) { 108 e.set_location( (*i)->location ); 109 errors.append( e ); 110 } 97 111 98 112 // splice in new declarations before current decl 99 113 if ( !empty( beforeDecls ) ) { decls.splice( i, *beforeDecls ); } 114 } 115 if ( ! errors.isEmpty() ) { 116 throw errors; 100 117 } 101 118 } … … 445 462 indexerAddEnum( node ); 446 463 447 // unlike structs, contexts, and unions, enums inject their members into the global scope464 // unlike structs, traits, and unions, enums inject their members into the global scope 448 465 maybeMutateRef( node->parameters, *this ); 449 466 maybeMutateRef( node->members , *this ); -
src/Common/PassVisitor.proto.h
rc57ded70 r522363e 179 179 180 180 template<typename pass_type> 181 static inline auto indexer_impl_enterScope( pass_type &, int) {}181 static inline auto indexer_impl_enterScope( pass_type &, long ) {} 182 182 183 183 template<typename pass_type> … … 187 187 188 188 template<typename pass_type> 189 static inline auto indexer_impl_leaveScope( pass_type &, int) {}189 static inline auto indexer_impl_leaveScope( pass_type &, long ) {} 190 190 191 191 … … 197 197 \ 198 198 template<typename pass_type> \ 199 static inline void indexer_impl_##func ( pass_type &, long, type ) { } \199 static inline void indexer_impl_##func ( pass_type &, long, type ) { } \ 200 200 201 201 INDEXER_FUNC( addId , DeclarationWithType * ); … … 215 215 216 216 template<typename pass_type> 217 static inline auto indexer_impl_addStructFwd( pass_type &, int, StructDecl * ) {}217 static inline auto indexer_impl_addStructFwd( pass_type &, long, StructDecl * ) {} 218 218 219 219 template<typename pass_type> … … 225 225 226 226 template<typename pass_type> 227 static inline auto indexer_impl_addUnionFwd( pass_type &, int, UnionDecl * ) {}227 static inline auto indexer_impl_addUnionFwd( pass_type &, long, UnionDecl * ) {} 228 228 229 229 template<typename pass_type> … … 235 235 236 236 template<typename pass_type> 237 static inline auto indexer_impl_addStruct( pass_type &, int, const std::string & ) {}237 static inline auto indexer_impl_addStruct( pass_type &, long, const std::string & ) {} 238 238 239 239 template<typename pass_type> … … 245 245 246 246 template<typename pass_type> 247 static inline auto indexer_impl_addUnion( pass_type &, int, const std::string & ) {}247 static inline auto indexer_impl_addUnion( pass_type &, long, const std::string & ) {}
Note:
See TracChangeset
for help on using the changeset viewer.