Changes in src/AST/Convert.cpp [665f432:37cdd97]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r665f432 r37cdd97 10 10 // Created On : Thu May 09 15::37::05 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 25 22:21:46201913 // Update Count : 1312 // Last Modified On : Wed Dec 11 21:39:32 2019 13 // Update Count : 33 14 14 // 15 15 … … 245 245 auto decl = new StructDecl( 246 246 node->name, 247 node->kind,247 (AggregateDecl::Aggregate)node->kind, 248 248 get<Attribute>().acceptL( node->attributes ), 249 249 LinkageSpec::Spec( node->linkage.val ) … … 493 493 } 494 494 495 const ast::Stmt * visit(const ast::SuspendStmt * node ) override final { 496 if ( inCache( node ) ) return nullptr; 497 auto stmt = new SuspendStmt(); 498 stmt->then = get<CompoundStmt>().accept1( node->then ); 499 switch(node->type) { 500 case ast::SuspendStmt::None : stmt->type = SuspendStmt::None ; break; 501 case ast::SuspendStmt::Coroutine: stmt->type = SuspendStmt::Coroutine; break; 502 case ast::SuspendStmt::Generator: stmt->type = SuspendStmt::Generator; break; 503 } 504 return stmtPostamble( stmt, node ); 505 } 506 495 507 const ast::Stmt * visit( const ast::WaitForStmt * node ) override final { 496 508 if ( inCache( node ) ) return nullptr; … … 675 687 676 688 const ast::Expr * visit( const ast::KeywordCastExpr * node ) override final { 677 KeywordCastExpr::Target castTarget = KeywordCastExpr::NUMBER_OF_TARGETS; 678 switch (node->target) { 679 case ast::KeywordCastExpr::Coroutine: 680 castTarget = KeywordCastExpr::Coroutine; 681 break; 682 case ast::KeywordCastExpr::Thread: 683 castTarget = KeywordCastExpr::Thread; 684 break; 685 case ast::KeywordCastExpr::Monitor: 686 castTarget = KeywordCastExpr::Monitor; 687 break; 688 default: 689 break; 690 } 691 assert ( castTarget < KeywordCastExpr::NUMBER_OF_TARGETS ); 689 AggregateDecl::Aggregate castTarget = (AggregateDecl::Aggregate)node->target; 690 assert( AggregateDecl::Generator <= castTarget && castTarget <= AggregateDecl::Thread ); 692 691 auto expr = visitBaseExpr( node, 693 692 new KeywordCastExpr( … … 1236 1235 cv( node ), 1237 1236 node->name, 1238 node->kind == ast::Type Var::Ftype,1237 node->kind == ast::TypeDecl::Ftype, 1239 1238 get<Attribute>().acceptL( node->attributes ) 1240 1239 }; … … 1504 1503 old->location, 1505 1504 old->name, 1506 old->kind,1505 (ast::AggregateDecl::Aggregate)old->kind, 1507 1506 GET_ACCEPT_V(attributes, Attribute), 1508 1507 { old->linkage.val } … … 1591 1590 { old->storageClasses.val }, 1592 1591 GET_ACCEPT_1(base, Type), 1593 (ast::Type Var::Kind)(unsigned)old->kind,1592 (ast::TypeDecl::Kind)(unsigned)old->kind, 1594 1593 old->sized, 1595 1594 GET_ACCEPT_1(init, Type) … … 1872 1871 } 1873 1872 1873 virtual void visit( const SuspendStmt * old ) override final { 1874 if ( inCache( old ) ) return; 1875 ast::SuspendStmt::Type type; 1876 switch (old->type) { 1877 case SuspendStmt::Coroutine: type = ast::SuspendStmt::Coroutine; break; 1878 case SuspendStmt::Generator: type = ast::SuspendStmt::Generator; break; 1879 case SuspendStmt::None : type = ast::SuspendStmt::None ; break; 1880 default: abort(); 1881 } 1882 this->node = new ast::SuspendStmt( 1883 old->location, 1884 GET_ACCEPT_1(then , CompoundStmt), 1885 type, 1886 GET_LABELS_V(old->labels) 1887 ); 1888 cache.emplace( old, this->node ); 1889 } 1890 1874 1891 virtual void visit( const WaitForStmt * old ) override final { 1875 1892 if ( inCache( old ) ) return; … … 2045 2062 } 2046 2063 2047 virtual void visit( const KeywordCastExpr * old) override final { 2048 ast::KeywordCastExpr::Target castTarget = ast::KeywordCastExpr::NUMBER_OF_TARGETS; 2049 switch (old->target) { 2050 case KeywordCastExpr::Coroutine: 2051 castTarget = ast::KeywordCastExpr::Coroutine; 2052 break; 2053 case KeywordCastExpr::Thread: 2054 castTarget = ast::KeywordCastExpr::Thread; 2055 break; 2056 case KeywordCastExpr::Monitor: 2057 castTarget = ast::KeywordCastExpr::Monitor; 2058 break; 2059 default: 2060 break; 2061 } 2062 assert ( castTarget < ast::KeywordCastExpr::NUMBER_OF_TARGETS ); 2064 virtual void visit( const KeywordCastExpr * old ) override final { 2065 ast::AggregateDecl::Aggregate castTarget = (ast::AggregateDecl::Aggregate)old->target; 2066 assert( ast::AggregateDecl::Generator <= castTarget && castTarget <= ast::AggregateDecl::Thread ); 2063 2067 this->node = visitBaseExpr( old, 2064 2068 new ast::KeywordCastExpr( … … 2587 2591 ty = new ast::TypeInstType{ 2588 2592 old->name, 2589 old->isFtype ? ast::Type Var::Ftype : ast::TypeVar::Dtype,2593 old->isFtype ? ast::TypeDecl::Ftype : ast::TypeDecl::Dtype, 2590 2594 cv( old ), 2591 2595 GET_ACCEPT_V( attributes, Attribute )
Note:
See TracChangeset
for help on using the changeset viewer.