- Timestamp:
- Mar 10, 2022, 2:03:43 AM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- f238fcc2
- Parents:
- 786c438
- Location:
- src/AST
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/AST/Convert.cpp ¶
r786c438 r3e54399 305 305 } 306 306 307 const ast::Decl * visit( const ast::EnumDecl * node ) override final { // Marker: what is this for? 308 // Called in ConverterNewToOld 307 const ast::Decl * visit( const ast::EnumDecl * node ) override final { 309 308 if ( inCache( node ) ) return nullptr; 310 309 auto decl = new EnumDecl( 311 310 node->name, 312 311 get<Attribute>().acceptL( node->attributes ), 313 LinkageSpec::Spec( node->linkage.val ) 312 LinkageSpec::Spec( node->linkage.val ), 313 get<Type>().accept1(node->base) 314 314 ); 315 315 return aggregatePostamble( decl, node ); // Node info, including members, processed in aggregatePostamble … … 2768 2768 } 2769 2769 2770 virtual void visit( const EnumInstType * old ) override final { 2771 ast::EnumInstType * ty; 2770 virtual void visit( const EnumInstType * old ) override final { // Here is visiting the EnumInst Decl not the usage. 2771 ast::EnumInstType * ty; 2772 2772 if ( old->baseEnum ) { 2773 2773 ty = new ast::EnumInstType{ -
TabularUnified src/AST/Decl.cpp ¶
r786c438 r3e54399 137 137 138 138 // Handle typed enum by casting the value in (C++) compiler 139 if ( base ) { // A typed enum140 if ( const BasicType * bt = dynamic_cast<const BasicType *>(base) ) {141 switch( bt->kind ) {142 case BasicType::Kind::Bool: value = (bool) it->second; break;143 case BasicType::Kind::Char: value = (char) it->second; break;144 case BasicType::Kind::SignedChar: value = (signed char) it->second; break;145 case BasicType::Kind::UnsignedChar: value = (unsigned char) it->second; break;146 case BasicType::Kind::ShortSignedInt: value = (short signed int) it->second; break;147 case BasicType::Kind::SignedInt: value = (signed int) it->second; break;148 case BasicType::Kind::UnsignedInt: value = (unsigned int) it->second; break;149 case BasicType::Kind::LongSignedInt: value = (long signed int) it->second; break;150 case BasicType::Kind::LongUnsignedInt: value = (long unsigned int) it->second; break;151 case BasicType::Kind::LongLongSignedInt: value = (long long signed int) it->second; break;152 case BasicType::Kind::LongLongUnsignedInt: value = (long long unsigned int) it->second; break;153 // TODO: value should be able to handle long long unsigned int139 // if ( base ) { // A typed enum 140 // if ( const BasicType * bt = dynamic_cast<const BasicType *>(base) ) { 141 // switch( bt->kind ) { 142 // case BasicType::Kind::Bool: value = (bool) it->second; break; 143 // case BasicType::Kind::Char: value = (char) it->second; break; 144 // case BasicType::Kind::SignedChar: value = (signed char) it->second; break; 145 // case BasicType::Kind::UnsignedChar: value = (unsigned char) it->second; break; 146 // case BasicType::Kind::ShortSignedInt: value = (short signed int) it->second; break; 147 // case BasicType::Kind::SignedInt: value = (signed int) it->second; break; 148 // case BasicType::Kind::UnsignedInt: value = (unsigned int) it->second; break; 149 // case BasicType::Kind::LongSignedInt: value = (long signed int) it->second; break; 150 // case BasicType::Kind::LongUnsignedInt: value = (long unsigned int) it->second; break; 151 // case BasicType::Kind::LongLongSignedInt: value = (long long signed int) it->second; break; 152 // case BasicType::Kind::LongLongUnsignedInt: value = (long long unsigned int) it->second; break; 153 // // TODO: value should be able to handle long long unsigned int 154 154 155 default:156 value = it->second;157 }158 }159 } else {155 // default: 156 // value = it->second; 157 // } 158 // } 159 // } else { 160 160 value = it->second; 161 }161 //} 162 162 163 163 return true; -
TabularUnified src/AST/Decl.hpp ¶
r786c438 r3e54399 302 302 class EnumDecl final : public AggregateDecl { 303 303 public: 304 Type *base;304 ptr<Type> base; 305 305 306 306 EnumDecl( const CodeLocation& loc, const std::string& name,
Note: See TracChangeset
for help on using the changeset viewer.