Changeset b0d9ff7 for src/Validate/FixQualifiedTypes.cpp
- Timestamp:
- Sep 1, 2022, 1:27:52 PM (2 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation, qualifiedEnum
- Children:
- 12df6fe
- Parents:
- def751f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Validate/FixQualifiedTypes.cpp
rdef751f rb0d9ff7 19 19 #include "AST/TranslationUnit.hpp" 20 20 #include "Validate/NoIdSymbolTable.hpp" 21 #include "SymTab/Mangler.h" // for Mangler 22 #include "AST/LinkageSpec.hpp" // for Linkage 21 23 22 24 namespace Validate { … … 89 91 } 90 92 } 93 94 ast::Expr const * postvisit( ast::QualifiedNameExpr const * t) { 95 assert( location ); 96 if ( t->type_decl ) { 97 auto enumName = t->type_decl->name; 98 const ast::EnumDecl * enumDecl = symtab.lookupEnum( enumName ); 99 for ( ast::ptr<ast::Decl> const & member : enumDecl->members ) { 100 if ( auto memberAsObj = member.as<ast::ObjectDecl>() ) { 101 if ( memberAsObj->name == t->name ) { 102 return new ast::VariableExpr( t->location, memberAsObj ); 103 } 104 } else { 105 assertf( false, "unhandled qualified child type"); 106 } 107 } 108 109 110 auto var = new ast::ObjectDecl( t->var->location, t->name, 111 new ast::EnumInstType(enumDecl, ast::CV::Const), nullptr, {}, ast::Linkage::Cforall ); 112 var->scopeLevel = 1; // 1 for now; should copy the scopeLevel of the enumValue 113 var->mangleName = Mangle::mangle( var ); 114 return new ast::VariableExpr( t->location, var ); 115 // return ret; 116 } 117 118 return t; 119 } 120 91 121 }; 92 122
Note: See TracChangeset
for help on using the changeset viewer.