Changes in src/AST/Convert.cpp [ae265b55:f6cc734e]
- File:
-
- 1 edited
-
src/AST/Convert.cpp (modified) (93 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
rae265b55 rf6cc734e 518 518 } 519 519 520 const ast:: Decl* visit( const ast::WithStmt * node ) override final {520 const ast::Stmt * visit( const ast::WithStmt * node ) override final { 521 521 if ( inCache( node ) ) return nullptr; 522 522 auto stmt = new WithStmt( … … 524 524 get<Statement>().accept1( node->stmt ) 525 525 ); 526 declPostamble( stmt, node ); 527 return nullptr; 526 return stmtPostamble( stmt, node ); 528 527 } 529 528 … … 1051 1050 get<Expression>().accept1(node->expr), 1052 1051 inCache(node->deleteStmt) ? 1053 strict_dynamic_cast<Declaration*>(this->node):1054 get< Declaration>().accept1(node->deleteStmt)1052 this->node : 1053 get<BaseSyntaxNode>().accept1(node->deleteStmt) 1055 1054 ) 1056 1055 ); … … 1367 1366 ast::Node * node = nullptr; 1368 1367 /// cache of nodes that might be referenced by readonly<> for de-duplication 1369 std::unordered_map< constBaseSyntaxNode *, ast::Node * > cache = {};1368 std::unordered_map< BaseSyntaxNode *, ast::Node * > cache = {}; 1370 1369 1371 1370 // Local Utilities: … … 1434 1433 to<std::vector>::from( make_labels( std::move( labels ) ) ) 1435 1434 1436 static ast::CV::Qualifiers cv( const Type * ty ) { return { ty->tq.val }; }1435 static ast::CV::Qualifiers cv( Type * ty ) { return { ty->get_qualifiers().val }; } 1437 1436 1438 1437 /// returns true and sets `node` if in cache 1439 bool inCache( constBaseSyntaxNode * old ) {1438 bool inCache( BaseSyntaxNode * old ) { 1440 1439 auto it = cache.find( old ); 1441 1440 if ( it == cache.end() ) return false; … … 1446 1445 // Now all the visit functions: 1447 1446 1448 virtual void visit( constObjectDecl * old ) override final {1447 virtual void visit( ObjectDecl * old ) override final { 1449 1448 auto&& type = GET_ACCEPT_1(type, Type); 1450 1449 auto&& init = GET_ACCEPT_1(init, Init); … … 1477 1476 } 1478 1477 1479 virtual void visit( constFunctionDecl * old ) override final {1478 virtual void visit( FunctionDecl * old ) override final { 1480 1479 if ( inCache( old ) ) return; 1481 1480 auto decl = new ast::FunctionDecl{ … … 1510 1509 } 1511 1510 1512 virtual void visit( constStructDecl * old ) override final {1511 virtual void visit( StructDecl * old ) override final { 1513 1512 if ( inCache( old ) ) return; 1514 1513 auto decl = new ast::StructDecl( … … 1535 1534 } 1536 1535 1537 virtual void visit( constUnionDecl * old ) override final {1536 virtual void visit( UnionDecl * old ) override final { 1538 1537 if ( inCache( old ) ) return; 1539 1538 auto decl = new ast::UnionDecl( … … 1555 1554 } 1556 1555 1557 virtual void visit( constEnumDecl * old ) override final {1556 virtual void visit( EnumDecl * old ) override final { 1558 1557 if ( inCache( old ) ) return; 1559 1558 auto decl = new ast::EnumDecl( … … 1575 1574 } 1576 1575 1577 virtual void visit( constTraitDecl * old ) override final {1576 virtual void visit( TraitDecl * old ) override final { 1578 1577 if ( inCache( old ) ) return; 1579 1578 auto decl = new ast::TraitDecl( … … 1595 1594 } 1596 1595 1597 virtual void visit( constTypeDecl * old ) override final {1596 virtual void visit( TypeDecl * old ) override final { 1598 1597 if ( inCache( old ) ) return; 1599 1598 auto decl = new ast::TypeDecl{ … … 1615 1614 } 1616 1615 1617 virtual void visit( constTypedefDecl * old ) override final {1616 virtual void visit( TypedefDecl * old ) override final { 1618 1617 auto decl = new ast::TypedefDecl( 1619 1618 old->location, … … 1632 1631 } 1633 1632 1634 virtual void visit( constAsmDecl * old ) override final {1633 virtual void visit( AsmDecl * old ) override final { 1635 1634 auto decl = new ast::AsmDecl{ 1636 1635 old->location, … … 1644 1643 } 1645 1644 1646 virtual void visit( constStaticAssertDecl * old ) override final {1645 virtual void visit( StaticAssertDecl * old ) override final { 1647 1646 auto decl = new ast::StaticAssertDecl{ 1648 1647 old->location, … … 1657 1656 } 1658 1657 1659 virtual void visit( constCompoundStmt * old ) override final {1658 virtual void visit( CompoundStmt * old ) override final { 1660 1659 if ( inCache( old ) ) return; 1661 1660 auto stmt = new ast::CompoundStmt( … … 1669 1668 } 1670 1669 1671 virtual void visit( constExprStmt * old ) override final {1670 virtual void visit( ExprStmt * old ) override final { 1672 1671 if ( inCache( old ) ) return; 1673 1672 this->node = new ast::ExprStmt( … … 1679 1678 } 1680 1679 1681 virtual void visit( constAsmStmt * old ) override final {1680 virtual void visit( AsmStmt * old ) override final { 1682 1681 if ( inCache( old ) ) return; 1683 1682 this->node = new ast::AsmStmt( … … 1694 1693 } 1695 1694 1696 virtual void visit( constDirectiveStmt * old ) override final {1695 virtual void visit( DirectiveStmt * old ) override final { 1697 1696 if ( inCache( old ) ) return; 1698 1697 this->node = new ast::DirectiveStmt( … … 1704 1703 } 1705 1704 1706 virtual void visit( constIfStmt * old ) override final {1705 virtual void visit( IfStmt * old ) override final { 1707 1706 if ( inCache( old ) ) return; 1708 1707 this->node = new ast::IfStmt( … … 1717 1716 } 1718 1717 1719 virtual void visit( constSwitchStmt * old ) override final {1718 virtual void visit( SwitchStmt * old ) override final { 1720 1719 if ( inCache( old ) ) return; 1721 1720 this->node = new ast::SwitchStmt( … … 1728 1727 } 1729 1728 1730 virtual void visit( constCaseStmt * old ) override final {1729 virtual void visit( CaseStmt * old ) override final { 1731 1730 if ( inCache( old ) ) return; 1732 1731 this->node = new ast::CaseStmt( … … 1739 1738 } 1740 1739 1741 virtual void visit( constWhileStmt * old ) override final {1740 virtual void visit( WhileStmt * old ) override final { 1742 1741 if ( inCache( old ) ) return; 1743 1742 this->node = new ast::WhileStmt( … … 1752 1751 } 1753 1752 1754 virtual void visit( constForStmt * old ) override final {1753 virtual void visit( ForStmt * old ) override final { 1755 1754 if ( inCache( old ) ) return; 1756 1755 this->node = new ast::ForStmt( … … 1765 1764 } 1766 1765 1767 virtual void visit( constBranchStmt * old ) override final {1766 virtual void visit( BranchStmt * old ) override final { 1768 1767 if ( inCache( old ) ) return; 1769 1768 if (old->computedTarget) { … … 1802 1801 } 1803 1802 1804 virtual void visit( constReturnStmt * old ) override final {1803 virtual void visit( ReturnStmt * old ) override final { 1805 1804 if ( inCache( old ) ) return; 1806 1805 this->node = new ast::ReturnStmt( … … 1812 1811 } 1813 1812 1814 virtual void visit( constThrowStmt * old ) override final {1813 virtual void visit( ThrowStmt * old ) override final { 1815 1814 if ( inCache( old ) ) return; 1816 1815 ast::ExceptionKind kind; … … 1836 1835 } 1837 1836 1838 virtual void visit( constTryStmt * old ) override final {1837 virtual void visit( TryStmt * old ) override final { 1839 1838 if ( inCache( old ) ) return; 1840 1839 this->node = new ast::TryStmt( … … 1848 1847 } 1849 1848 1850 virtual void visit( constCatchStmt * old ) override final {1849 virtual void visit( CatchStmt * old ) override final { 1851 1850 if ( inCache( old ) ) return; 1852 1851 ast::ExceptionKind kind; … … 1873 1872 } 1874 1873 1875 virtual void visit( constFinallyStmt * old ) override final {1874 virtual void visit( FinallyStmt * old ) override final { 1876 1875 if ( inCache( old ) ) return; 1877 1876 this->node = new ast::FinallyStmt( … … 1883 1882 } 1884 1883 1885 virtual void visit( constWaitForStmt * old ) override final {1884 virtual void visit( WaitForStmt * old ) override final { 1886 1885 if ( inCache( old ) ) return; 1887 1886 ast::WaitForStmt * stmt = new ast::WaitForStmt( … … 1915 1914 } 1916 1915 1917 virtual void visit( constWithStmt * old ) override final {1916 virtual void visit( WithStmt * old ) override final { 1918 1917 if ( inCache( old ) ) return; 1919 1918 this->node = new ast::WithStmt( 1920 1919 old->location, 1921 1920 GET_ACCEPT_V(exprs, Expr), 1922 GET_ACCEPT_1(stmt, Stmt) 1921 GET_ACCEPT_1(stmt, Stmt), 1922 GET_LABELS_V(old->labels) 1923 1923 ); 1924 1924 cache.emplace( old, this->node ); 1925 1925 } 1926 1926 1927 virtual void visit( constNullStmt * old ) override final {1927 virtual void visit( NullStmt * old ) override final { 1928 1928 if ( inCache( old ) ) return; 1929 1929 this->node = new ast::NullStmt( … … 1934 1934 } 1935 1935 1936 virtual void visit( constDeclStmt * old ) override final {1936 virtual void visit( DeclStmt * old ) override final { 1937 1937 if ( inCache( old ) ) return; 1938 1938 this->node = new ast::DeclStmt( … … 1944 1944 } 1945 1945 1946 virtual void visit( constImplicitCtorDtorStmt * old ) override final {1946 virtual void visit( ImplicitCtorDtorStmt * old ) override final { 1947 1947 if ( inCache( old ) ) return; 1948 1948 auto stmt = new ast::ImplicitCtorDtorStmt( … … 2001 2001 } 2002 2002 2003 ast::Expr * visitBaseExpr_SkipResultType( constExpression * old, ast::Expr * nw) {2003 ast::Expr * visitBaseExpr_SkipResultType(Expression * old, ast::Expr * nw) { 2004 2004 2005 2005 nw->env = convertTypeSubstitution(old->env); … … 2011 2011 } 2012 2012 2013 ast::Expr * visitBaseExpr( constExpression * old, ast::Expr * nw) {2013 ast::Expr * visitBaseExpr(Expression * old, ast::Expr * nw) { 2014 2014 2015 2015 nw->result = GET_ACCEPT_1(result, Type); … … 2017 2017 } 2018 2018 2019 virtual void visit( constApplicationExpr * old ) override final {2019 virtual void visit( ApplicationExpr * old ) override final { 2020 2020 this->node = visitBaseExpr( old, 2021 2021 new ast::ApplicationExpr( … … 2027 2027 } 2028 2028 2029 virtual void visit( constUntypedExpr * old ) override final {2029 virtual void visit( UntypedExpr * old ) override final { 2030 2030 this->node = visitBaseExpr( old, 2031 2031 new ast::UntypedExpr( … … 2037 2037 } 2038 2038 2039 virtual void visit( constNameExpr * old ) override final {2039 virtual void visit( NameExpr * old ) override final { 2040 2040 this->node = visitBaseExpr( old, 2041 2041 new ast::NameExpr( … … 2046 2046 } 2047 2047 2048 virtual void visit( constCastExpr * old ) override final {2048 virtual void visit( CastExpr * old ) override final { 2049 2049 this->node = visitBaseExpr( old, 2050 2050 new ast::CastExpr( … … 2056 2056 } 2057 2057 2058 virtual void visit( constKeywordCastExpr * old) override final {2058 virtual void visit( KeywordCastExpr * old) override final { 2059 2059 ast::KeywordCastExpr::Target castTarget = ast::KeywordCastExpr::NUMBER_OF_TARGETS; 2060 2060 switch (old->target) { … … 2081 2081 } 2082 2082 2083 virtual void visit( constVirtualCastExpr * old ) override final {2083 virtual void visit( VirtualCastExpr * old ) override final { 2084 2084 this->node = visitBaseExpr_SkipResultType( old, 2085 2085 new ast::VirtualCastExpr( … … 2091 2091 } 2092 2092 2093 virtual void visit( constAddressExpr * old ) override final {2093 virtual void visit( AddressExpr * old ) override final { 2094 2094 this->node = visitBaseExpr( old, 2095 2095 new ast::AddressExpr( … … 2100 2100 } 2101 2101 2102 virtual void visit( constLabelAddressExpr * old ) override final {2102 virtual void visit( LabelAddressExpr * old ) override final { 2103 2103 this->node = visitBaseExpr( old, 2104 2104 new ast::LabelAddressExpr( … … 2109 2109 } 2110 2110 2111 virtual void visit( constUntypedMemberExpr * old ) override final {2111 virtual void visit( UntypedMemberExpr * old ) override final { 2112 2112 this->node = visitBaseExpr( old, 2113 2113 new ast::UntypedMemberExpr( … … 2119 2119 } 2120 2120 2121 virtual void visit( constMemberExpr * old ) override final {2121 virtual void visit( MemberExpr * old ) override final { 2122 2122 this->node = visitBaseExpr( old, 2123 2123 new ast::MemberExpr( 2124 2124 old->location, 2125 2125 GET_ACCEPT_1(member, DeclWithType), 2126 GET_ACCEPT_1(aggregate, Expr), 2127 ast::MemberExpr::NoOpConstructionChosen 2128 ) 2129 ); 2130 } 2131 2132 virtual void visit( const VariableExpr * old ) override final { 2126 GET_ACCEPT_1(aggregate, Expr) 2127 ) 2128 ); 2129 } 2130 2131 virtual void visit( VariableExpr * old ) override final { 2133 2132 auto expr = new ast::VariableExpr( 2134 2133 old->location … … 2141 2140 } 2142 2141 2143 virtual void visit( constConstantExpr * old ) override final {2142 virtual void visit( ConstantExpr * old ) override final { 2144 2143 ast::ConstantExpr *rslt = new ast::ConstantExpr( 2145 2144 old->location, 2146 2145 GET_ACCEPT_1(result, Type), 2147 old->constant. rep,2146 old->constant.get_value(), 2148 2147 old->constant.ival 2149 2148 ); 2150 rslt->underlyer = getAccept1< ast::Type, Type* >( old->constant. type);2149 rslt->underlyer = getAccept1< ast::Type, Type* >( old->constant.get_type() ); 2151 2150 this->node = visitBaseExpr( old, rslt ); 2152 2151 } 2153 2152 2154 virtual void visit( constSizeofExpr * old ) override final {2153 virtual void visit( SizeofExpr * old ) override final { 2155 2154 assert (old->expr || old->type); 2156 2155 assert (! (old->expr && old->type)); … … 2173 2172 } 2174 2173 2175 virtual void visit( constAlignofExpr * old ) override final {2174 virtual void visit( AlignofExpr * old ) override final { 2176 2175 assert (old->expr || old->type); 2177 2176 assert (! (old->expr && old->type)); … … 2194 2193 } 2195 2194 2196 virtual void visit( constUntypedOffsetofExpr * old ) override final {2195 virtual void visit( UntypedOffsetofExpr * old ) override final { 2197 2196 this->node = visitBaseExpr( old, 2198 2197 new ast::UntypedOffsetofExpr( … … 2204 2203 } 2205 2204 2206 virtual void visit( constOffsetofExpr * old ) override final {2205 virtual void visit( OffsetofExpr * old ) override final { 2207 2206 this->node = visitBaseExpr( old, 2208 2207 new ast::OffsetofExpr( … … 2214 2213 } 2215 2214 2216 virtual void visit( constOffsetPackExpr * old ) override final {2215 virtual void visit( OffsetPackExpr * old ) override final { 2217 2216 this->node = visitBaseExpr( old, 2218 2217 new ast::OffsetPackExpr( … … 2223 2222 } 2224 2223 2225 virtual void visit( constLogicalExpr * old ) override final {2224 virtual void visit( LogicalExpr * old ) override final { 2226 2225 this->node = visitBaseExpr( old, 2227 2226 new ast::LogicalExpr( … … 2236 2235 } 2237 2236 2238 virtual void visit( constConditionalExpr * old ) override final {2237 virtual void visit( ConditionalExpr * old ) override final { 2239 2238 this->node = visitBaseExpr( old, 2240 2239 new ast::ConditionalExpr( … … 2247 2246 } 2248 2247 2249 virtual void visit( constCommaExpr * old ) override final {2248 virtual void visit( CommaExpr * old ) override final { 2250 2249 this->node = visitBaseExpr( old, 2251 2250 new ast::CommaExpr( … … 2257 2256 } 2258 2257 2259 virtual void visit( constTypeExpr * old ) override final {2258 virtual void visit( TypeExpr * old ) override final { 2260 2259 this->node = visitBaseExpr( old, 2261 2260 new ast::TypeExpr( … … 2266 2265 } 2267 2266 2268 virtual void visit( constAsmExpr * old ) override final {2267 virtual void visit( AsmExpr * old ) override final { 2269 2268 this->node = visitBaseExpr( old, 2270 2269 new ast::AsmExpr( … … 2277 2276 } 2278 2277 2279 virtual void visit( constImplicitCopyCtorExpr * old ) override final {2278 virtual void visit( ImplicitCopyCtorExpr * old ) override final { 2280 2279 auto rslt = new ast::ImplicitCopyCtorExpr( 2281 2280 old->location, … … 2286 2285 } 2287 2286 2288 virtual void visit( constConstructorExpr * old ) override final {2287 virtual void visit( ConstructorExpr * old ) override final { 2289 2288 this->node = visitBaseExpr( old, 2290 2289 new ast::ConstructorExpr( … … 2295 2294 } 2296 2295 2297 virtual void visit( constCompoundLiteralExpr * old ) override final {2296 virtual void visit( CompoundLiteralExpr * old ) override final { 2298 2297 this->node = visitBaseExpr_SkipResultType( old, 2299 2298 new ast::CompoundLiteralExpr( … … 2305 2304 } 2306 2305 2307 virtual void visit( constRangeExpr * old ) override final {2306 virtual void visit( RangeExpr * old ) override final { 2308 2307 this->node = visitBaseExpr( old, 2309 2308 new ast::RangeExpr( … … 2315 2314 } 2316 2315 2317 virtual void visit( constUntypedTupleExpr * old ) override final {2316 virtual void visit( UntypedTupleExpr * old ) override final { 2318 2317 this->node = visitBaseExpr( old, 2319 2318 new ast::UntypedTupleExpr( … … 2324 2323 } 2325 2324 2326 virtual void visit( constTupleExpr * old ) override final {2325 virtual void visit( TupleExpr * old ) override final { 2327 2326 this->node = visitBaseExpr( old, 2328 2327 new ast::TupleExpr( … … 2333 2332 } 2334 2333 2335 virtual void visit( constTupleIndexExpr * old ) override final {2334 virtual void visit( TupleIndexExpr * old ) override final { 2336 2335 this->node = visitBaseExpr( old, 2337 2336 new ast::TupleIndexExpr( … … 2343 2342 } 2344 2343 2345 virtual void visit( constTupleAssignExpr * old ) override final {2344 virtual void visit( TupleAssignExpr * old ) override final { 2346 2345 this->node = visitBaseExpr_SkipResultType( old, 2347 2346 new ast::TupleAssignExpr( … … 2353 2352 } 2354 2353 2355 virtual void visit( constStmtExpr * old ) override final {2354 virtual void visit( StmtExpr * old ) override final { 2356 2355 auto rslt = new ast::StmtExpr( 2357 2356 old->location, … … 2364 2363 } 2365 2364 2366 virtual void visit( constUniqueExpr * old ) override final {2365 virtual void visit( UniqueExpr * old ) override final { 2367 2366 auto rslt = new ast::UniqueExpr( 2368 2367 old->location, … … 2376 2375 } 2377 2376 2378 virtual void visit( constUntypedInitExpr * old ) override final {2377 virtual void visit( UntypedInitExpr * old ) override final { 2379 2378 std::deque<ast::InitAlternative> initAlts; 2380 2379 for (auto ia : old->initAlts) { … … 2393 2392 } 2394 2393 2395 virtual void visit( constInitExpr * old ) override final {2394 virtual void visit( InitExpr * old ) override final { 2396 2395 this->node = visitBaseExpr( old, 2397 2396 new ast::InitExpr( … … 2403 2402 } 2404 2403 2405 virtual void visit( constDeletedExpr * old ) override final {2404 virtual void visit( DeletedExpr * old ) override final { 2406 2405 this->node = visitBaseExpr( old, 2407 2406 new ast::DeletedExpr( … … 2409 2408 GET_ACCEPT_1(expr, Expr), 2410 2409 inCache(old->deleteStmt) ? 2411 strict_dynamic_cast<ast::Decl*>(this->node):2412 GET_ACCEPT_1(deleteStmt, Decl)2413 ) 2414 ); 2415 } 2416 2417 virtual void visit( constDefaultArgExpr * old ) override final {2410 this->node : 2411 GET_ACCEPT_1(deleteStmt, Node) 2412 ) 2413 ); 2414 } 2415 2416 virtual void visit( DefaultArgExpr * old ) override final { 2418 2417 this->node = visitBaseExpr( old, 2419 2418 new ast::DefaultArgExpr( … … 2424 2423 } 2425 2424 2426 virtual void visit( constGenericExpr * old ) override final {2425 virtual void visit( GenericExpr * old ) override final { 2427 2426 std::vector<ast::GenericExpr::Association> associations; 2428 2427 for (auto association : old->associations) { … … 2441 2440 } 2442 2441 2443 void visitType( constType * old, ast::Type * type ) {2442 void visitType( Type * old, ast::Type * type ) { 2444 2443 // Some types do this in their constructor so add a check. 2445 2444 if ( !old->attributes.empty() && type->attributes.empty() ) { … … 2449 2448 } 2450 2449 2451 virtual void visit( constVoidType * old ) override final {2450 virtual void visit( VoidType * old ) override final { 2452 2451 visitType( old, new ast::VoidType{ cv( old ) } ); 2453 2452 } 2454 2453 2455 virtual void visit( constBasicType * old ) override final {2454 virtual void visit( BasicType * old ) override final { 2456 2455 auto type = new ast::BasicType{ (ast::BasicType::Kind)(unsigned)old->kind, cv( old ) }; 2457 2456 // I believe this should always be a BasicType. … … 2462 2461 } 2463 2462 2464 virtual void visit( constPointerType * old ) override final {2463 virtual void visit( PointerType * old ) override final { 2465 2464 visitType( old, new ast::PointerType{ 2466 2465 GET_ACCEPT_1( base, Type ), … … 2472 2471 } 2473 2472 2474 virtual void visit( constArrayType * old ) override final {2473 virtual void visit( ArrayType * old ) override final { 2475 2474 visitType( old, new ast::ArrayType{ 2476 2475 GET_ACCEPT_1( base, Type ), … … 2482 2481 } 2483 2482 2484 virtual void visit( constReferenceType * old ) override final {2483 virtual void visit( ReferenceType * old ) override final { 2485 2484 visitType( old, new ast::ReferenceType{ 2486 2485 GET_ACCEPT_1( base, Type ), … … 2489 2488 } 2490 2489 2491 virtual void visit( constQualifiedType * old ) override final {2490 virtual void visit( QualifiedType * old ) override final { 2492 2491 visitType( old, new ast::QualifiedType{ 2493 2492 GET_ACCEPT_1( parent, Type ), … … 2497 2496 } 2498 2497 2499 virtual void visit( constFunctionType * old ) override final {2498 virtual void visit( FunctionType * old ) override final { 2500 2499 auto ty = new ast::FunctionType { 2501 2500 (ast::ArgumentFlag)old->isVarArgs, … … 2508 2507 } 2509 2508 2510 void postvisit( constReferenceToType * old, ast::ReferenceToType * ty ) {2509 void postvisit( ReferenceToType * old, ast::ReferenceToType * ty ) { 2511 2510 ty->forall = GET_ACCEPT_V( forall, TypeDecl ); 2512 2511 ty->params = GET_ACCEPT_V( parameters, Expr ); … … 2515 2514 } 2516 2515 2517 virtual void visit( constStructInstType * old ) override final {2516 virtual void visit( StructInstType * old ) override final { 2518 2517 ast::StructInstType * ty; 2519 2518 if ( old->baseStruct ) { … … 2533 2532 } 2534 2533 2535 virtual void visit( constUnionInstType * old ) override final {2534 virtual void visit( UnionInstType * old ) override final { 2536 2535 ast::UnionInstType * ty; 2537 2536 if ( old->baseUnion ) { … … 2551 2550 } 2552 2551 2553 virtual void visit( constEnumInstType * old ) override final {2552 virtual void visit( EnumInstType * old ) override final { 2554 2553 ast::EnumInstType * ty; 2555 2554 if ( old->baseEnum ) { … … 2569 2568 } 2570 2569 2571 virtual void visit( constTraitInstType * old ) override final {2570 virtual void visit( TraitInstType * old ) override final { 2572 2571 ast::TraitInstType * ty; 2573 2572 if ( old->baseTrait ) { … … 2587 2586 } 2588 2587 2589 virtual void visit( constTypeInstType * old ) override final {2588 virtual void visit( TypeInstType * old ) override final { 2590 2589 ast::TypeInstType * ty; 2591 2590 if ( old->baseType ) { … … 2607 2606 } 2608 2607 2609 virtual void visit( constTupleType * old ) override final {2608 virtual void visit( TupleType * old ) override final { 2610 2609 visitType( old, new ast::TupleType{ 2611 2610 GET_ACCEPT_V( types, Type ), … … 2615 2614 } 2616 2615 2617 virtual void visit( constTypeofType * old ) override final {2616 virtual void visit( TypeofType * old ) override final { 2618 2617 visitType( old, new ast::TypeofType{ 2619 2618 GET_ACCEPT_1( expr, Expr ), … … 2623 2622 } 2624 2623 2625 virtual void visit( constAttrType * ) override final {2624 virtual void visit( AttrType * ) override final { 2626 2625 assertf( false, "AttrType deprecated in new AST." ); 2627 2626 } 2628 2627 2629 virtual void visit( constVarArgsType * old ) override final {2628 virtual void visit( VarArgsType * old ) override final { 2630 2629 visitType( old, new ast::VarArgsType{ cv( old ) } ); 2631 2630 } 2632 2631 2633 virtual void visit( constZeroType * old ) override final {2632 virtual void visit( ZeroType * old ) override final { 2634 2633 visitType( old, new ast::ZeroType{ cv( old ) } ); 2635 2634 } 2636 2635 2637 virtual void visit( constOneType * old ) override final {2636 virtual void visit( OneType * old ) override final { 2638 2637 visitType( old, new ast::OneType{ cv( old ) } ); 2639 2638 } 2640 2639 2641 virtual void visit( constGlobalScopeType * old ) override final {2640 virtual void visit( GlobalScopeType * old ) override final { 2642 2641 visitType( old, new ast::GlobalScopeType{} ); 2643 2642 } 2644 2643 2645 virtual void visit( constDesignation * old ) override final {2644 virtual void visit( Designation * old ) override final { 2646 2645 this->node = new ast::Designation( 2647 2646 old->location, … … 2650 2649 } 2651 2650 2652 virtual void visit( constSingleInit * old ) override final {2651 virtual void visit( SingleInit * old ) override final { 2653 2652 this->node = new ast::SingleInit( 2654 2653 old->location, … … 2658 2657 } 2659 2658 2660 virtual void visit( constListInit * old ) override final {2659 virtual void visit( ListInit * old ) override final { 2661 2660 this->node = new ast::ListInit( 2662 2661 old->location, … … 2667 2666 } 2668 2667 2669 virtual void visit( constConstructorInit * old ) override final {2668 virtual void visit( ConstructorInit * old ) override final { 2670 2669 this->node = new ast::ConstructorInit( 2671 2670 old->location, … … 2676 2675 } 2677 2676 2678 virtual void visit( constConstant * ) override final {2677 virtual void visit( Constant * ) override final { 2679 2678 // Handled in visit( ConstantEpxr * ). 2680 2679 // In the new tree, Constant fields are inlined into containing ConstantExpression. … … 2682 2681 } 2683 2682 2684 virtual void visit( constAttribute * old ) override final {2683 virtual void visit( Attribute * old ) override final { 2685 2684 this->node = new ast::Attribute( 2686 2685 old->name, … … 2689 2688 } 2690 2689 2691 virtual void visit( constAttrExpr * ) override final {2690 virtual void visit( AttrExpr * ) override final { 2692 2691 assertf( false, "AttrExpr deprecated in new AST." ); 2693 2692 }
Note:
See TracChangeset
for help on using the changeset viewer.