- Timestamp:
- May 23, 2019, 10:42:20 AM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 335f2d8
- Parents:
- 0b8bf27 (diff), 0b57626 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src/AST
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Attribute.cpp
r0b8bf27 ra2e758e 28 28 auto end = name.find_last_not_of('_'); 29 29 if ( begin == std::string::npos || end == std::string::npos ) return ""; 30 30 31 31 // convert to lowercase 32 32 std::string ret; -
src/AST/Attribute.hpp
r0b8bf27 ra2e758e 30 30 public: 31 31 std::string name; 32 std::vector<ptr<Expr>> param eters;32 std::vector<ptr<Expr>> params; 33 33 34 34 Attribute( const std::string & name = "", std::vector<ptr<Expr>> && params = {}) 35 : name( name ), param eters( params ) {}35 : name( name ), params( params ) {} 36 36 virtual ~Attribute() = default; 37 37 -
src/AST/Convert.cpp
r0b8bf27 ra2e758e 1130 1130 const ast::Type * visit( const ast::FunctionType * node ) override final { 1131 1131 auto ty = new FunctionType { 1132 cv( node ), 1132 cv( node ), 1133 1133 (bool)node->isVarArgs 1134 1134 }; … … 1328 1328 auto attr = new Attribute( 1329 1329 node->name, 1330 get<Expression>().acceptL(node->param eters)1330 get<Expression>().acceptL(node->params) 1331 1331 ); 1332 1332 this->node = attr; … … 1338 1338 // TypeSubstitution is not a node in the old model, so the conversion result wouldn't fit in this->node. 1339 1339 assert( 0 ); 1340 (void)node; 1340 1341 return nullptr; 1341 1342 } … … 1409 1410 # define GET_LABELS_V(labels) \ 1410 1411 to<std::vector>::from( make_labels( std::move( labels ) ) ) 1411 1412 1412 1413 static ast::CV::Qualifiers cv( Type * ty ) { return { ty->get_qualifiers().val }; } 1413 1414 … … 1549 1550 1550 1551 virtual void visit( TypeDecl * old ) override final { 1551 if ( inCache( old ) ) return; 1552 if ( inCache( old ) ) return; 1552 1553 auto decl = new ast::TypeDecl{ 1553 1554 old->location, … … 1587 1588 virtual void visit( AsmDecl * old ) override final { 1588 1589 auto decl = new ast::AsmDecl{ 1589 old->location, 1590 old->location, 1590 1591 GET_ACCEPT_1(stmt, AsmStmt) 1591 1592 }; … … 2142 2143 rslt = new ast::ConstantExpr( 2143 2144 old->location, 2144 GET_ACCEPT_1(result, Type), 2145 old->constant.get_value(), 2145 GET_ACCEPT_1(result, Type), 2146 old->constant.get_value(), 2146 2147 (double) old->constant.get_dval() 2147 2148 ); … … 2163 2164 assert(!old->isType); 2164 2165 rslt = new ast::SizeofExpr( 2165 old->location, 2166 old->location, 2166 2167 GET_ACCEPT_1(expr, Expr) 2167 2168 ); … … 2170 2171 assert(old->isType); 2171 2172 rslt = new ast::SizeofExpr( 2172 old->location, 2173 old->location, 2173 2174 GET_ACCEPT_1(type, Type) 2174 2175 ); … … 2184 2185 assert(!old->isType); 2185 2186 rslt = new ast::AlignofExpr( 2186 old->location, 2187 old->location, 2187 2188 GET_ACCEPT_1(expr, Expr) 2188 2189 ); … … 2191 2192 assert(old->isType); 2192 2193 rslt = new ast::AlignofExpr( 2193 old->location, 2194 old->location, 2194 2195 GET_ACCEPT_1(type, Type) 2195 2196 ); … … 2235 2236 GET_ACCEPT_1(arg1, Expr), 2236 2237 GET_ACCEPT_1(arg2, Expr), 2237 old->get_isAnd() ? 2238 old->get_isAnd() ? 2238 2239 ast::LogicalFlag::AndExpr : 2239 2240 ast::LogicalFlag::OrExpr -
src/AST/Expr.cpp
r0b8bf27 ra2e758e 345 345 } 346 346 347 TupleAssignExpr::TupleAssignExpr( 347 TupleAssignExpr::TupleAssignExpr( 348 348 const CodeLocation & loc, const Type * result, const StmtExpr * s ) 349 349 : Expr( loc, result ), stmtExpr() { -
src/AST/Pass.impl.hpp
r0b8bf27 ra2e758e 1879 1879 1880 1880 VISIT( 1881 maybe_accept( node, &Attribute::param eters );1881 maybe_accept( node, &Attribute::params ); 1882 1882 ) 1883 1883 -
src/AST/Print.cpp
r0b8bf27 ra2e758e 7 7 // Print.cpp -- 8 8 // 9 // Author 10 // Created On 9 // Author : Thierry Delisle 10 // Created On : Tue May 21 16:20:15 2019 11 11 // Last Modified By : 12 12 // Last Modified On : 13 // Update Count 13 // Update Count : 14 14 // 15 15 … … 21 21 #include "Type.hpp" 22 22 #include "TypeSubstitution.hpp" 23 24 #include "Common/utility.h" // for group_iterate 23 25 24 26 using namespace std; … … 155 157 public: 156 158 virtual const ast::DeclWithType * visit( const ast::ObjectDecl * node ) { 157 if ( 159 if ( !node->name.empty() ) os << node->name << ": "; 158 160 159 161 if ( node->linkage != Linkage::Cforall ) { … … 636 638 637 639 virtual const ast::Designation * visit( const ast::Designation * node ) { 640 if ( node->designators.empty() ) return node; 641 os << "... designated by: " << std::endl; 642 ++indent; 643 for ( const ast::Expr * d : node->designators ) { 644 os << indent; 645 d->accept( *this ); 646 os << std::endl; 647 } 648 --indent; 638 649 return node; 639 650 } 640 651 641 652 virtual const ast::Init * visit( const ast::SingleInit * node ) { 653 os << "Simple Initializer: "; 654 node->value->accept( *this ); 642 655 return node; 643 656 } 644 657 645 658 virtual const ast::Init * visit( const ast::ListInit * node ) { 659 os << "Compound initializer: " << std::endl; 660 ++indent; 661 for ( auto p : group_iterate( node->designations, node->initializers ) ) { 662 const ast::Designation * d = std::get<0>(p); 663 const ast::Init * init = std::get<1>(p); 664 os << indent; 665 init->accept( *this ); 666 os << std::endl; 667 if ( ! d->designators.empty() ) { 668 os << indent; 669 d->accept( *this ); 670 } 671 } 672 --indent; 646 673 return node; 647 674 } 648 675 649 676 virtual const ast::Init * visit( const ast::ConstructorInit * node ) { 677 os << "Constructor initializer: " << std::endl; 678 if ( node->ctor ) { 679 os << indent << "... initially constructed with "; 680 ++indent; 681 node->ctor->accept( *this ); 682 --indent; 683 } 684 685 if ( node->dtor ) { 686 os << indent << "... destructed with "; 687 ++indent; 688 node->dtor->accept( *this ); 689 --indent; 690 } 691 692 if ( node->init ) { 693 os << indent << "... with fallback C-style initializer: "; 694 ++indent; 695 node->init->accept( *this ); 696 --indent; 697 } 650 698 return node; 651 699 } 652 700 653 701 virtual const ast::Attribute * visit( const ast::Attribute * node ) { 702 if ( node->empty() ) return node; 703 os << "Attribute with name: " << node->name; 704 if ( node->params.empty() ) return node; 705 os << " with parameters: " << std::endl; 706 ++indent; 707 printAll( node->params ); 708 --indent; 654 709 return node; 655 710 } -
src/AST/TypeSubstitution.hpp
r0b8bf27 ra2e758e 25 25 #include "Fwd.hpp" // for UniqueId 26 26 #include "ParseNode.hpp" 27 #include "Type.hpp" 27 #include "Type.hpp" 28 28 #include "Common/SemanticError.h" // for SemanticError 29 29 #include "Visitor.hpp" -
src/AST/porting.md
r0b8bf27 ra2e758e 110 110 111 111 ## Specific Nodes ## 112 `Attribute` 113 * `parameters` => `params` 114 112 115 `Decl` 113 116 * `storageClasses` => `storage`
Note: See TracChangeset
for help on using the changeset viewer.