Changes in src/AST/Convert.cpp [37cdd97:665f432]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r37cdd97 r665f432 10 10 // Created On : Thu May 09 15::37::05 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 21:39:32201913 // Update Count : 3312 // Last Modified On : Thu Jul 25 22:21:46 2019 13 // Update Count : 13 14 14 // 15 15 … … 245 245 auto decl = new StructDecl( 246 246 node->name, 247 (AggregateDecl::Aggregate)node->kind,247 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 507 495 const ast::Stmt * visit( const ast::WaitForStmt * node ) override final { 508 496 if ( inCache( node ) ) return nullptr; … … 687 675 688 676 const ast::Expr * visit( const ast::KeywordCastExpr * node ) override final { 689 AggregateDecl::Aggregate castTarget = (AggregateDecl::Aggregate)node->target; 690 assert( AggregateDecl::Generator <= castTarget && castTarget <= AggregateDecl::Thread ); 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 ); 691 692 auto expr = visitBaseExpr( node, 692 693 new KeywordCastExpr( … … 1235 1236 cv( node ), 1236 1237 node->name, 1237 node->kind == ast::Type Decl::Ftype,1238 node->kind == ast::TypeVar::Ftype, 1238 1239 get<Attribute>().acceptL( node->attributes ) 1239 1240 }; … … 1503 1504 old->location, 1504 1505 old->name, 1505 (ast::AggregateDecl::Aggregate)old->kind,1506 old->kind, 1506 1507 GET_ACCEPT_V(attributes, Attribute), 1507 1508 { old->linkage.val } … … 1590 1591 { old->storageClasses.val }, 1591 1592 GET_ACCEPT_1(base, Type), 1592 (ast::Type Decl::Kind)(unsigned)old->kind,1593 (ast::TypeVar::Kind)(unsigned)old->kind, 1593 1594 old->sized, 1594 1595 GET_ACCEPT_1(init, Type) … … 1871 1872 } 1872 1873 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 1891 1874 virtual void visit( const WaitForStmt * old ) override final { 1892 1875 if ( inCache( old ) ) return; … … 2062 2045 } 2063 2046 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 ); 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 ); 2067 2063 this->node = visitBaseExpr( old, 2068 2064 new ast::KeywordCastExpr( … … 2591 2587 ty = new ast::TypeInstType{ 2592 2588 old->name, 2593 old->isFtype ? ast::Type Decl::Ftype : ast::TypeDecl::Dtype,2589 old->isFtype ? ast::TypeVar::Ftype : ast::TypeVar::Dtype, 2594 2590 cv( old ), 2595 2591 GET_ACCEPT_V( attributes, Attribute )
Note:
See TracChangeset
for help on using the changeset viewer.