- Timestamp:
- Dec 11, 2024, 6:09:10 PM (7 days ago)
- Branches:
- master
- Children:
- e797179
- Parents:
- ec22220
- Location:
- src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/SymbolTable.cpp
rec22220 r64f3b9f 522 522 } 523 523 524 void SymbolTable::reviseSpecialAsDeleted( const FunctionDecl * func ) { 525 SpecialFunctionKind kind = getSpecialFunctionKind(func->name); 526 assert( kind != NUMBER_OF_KINDS ); 527 assert( func->linkage.is_overrideable ); 528 IdTable::Ptr & idTable = specialFunctionTable[kind]; 529 530 std::string otypeKey = getOtypeKey(func->type); 531 IdTable::iterator idHit = idTable->find( otypeKey ); 532 assert( idHit != idTable->end() ); 533 MangleTable::Ptr mangleTable = idHit->second; 534 535 std::string mangleName = Mangle::mangle( func, Mangle::Mode{ Mangle::NoOverrideable } ); 536 MangleTable::iterator mangleHit = mangleTable->find( mangleName ); 537 assert( mangleHit != mangleTable->end() ); 538 IdData oldEntry = mangleHit->second; 539 assert( oldEntry.id == func ); 540 541 mangleTable = mangleTable->set( mangleName, oldEntry.withDeleter( func ) ); 542 idTable = idTable->set( otypeKey, mangleTable ); 543 } 544 524 545 bool SymbolTable::removeSpecialOverrides( 525 546 SymbolTable::IdData & data, SymbolTable::MangleTable::Ptr & mangleTable ) { -
src/AST/SymbolTable.hpp
rec22220 r64f3b9f 177 177 void addFunction( const FunctionDecl * ); 178 178 179 /// Reclassifies the previously-indexed special declaration, so `combine` shows it as deleted 180 void reviseSpecialAsDeleted( const FunctionDecl * ); 181 179 182 private: 180 183 void OnFindError( CodeLocation location, std::string error ) const; -
src/ResolvExpr/Resolver.cpp
rec22220 r64f3b9f 1331 1331 mutDecl->isDeleted = true; 1332 1332 mutDecl->stmts = nullptr; 1333 symtab.reviseSpecialAsDeleted( functionDecl ); 1333 1334 decl = mutDecl; 1334 1335 return false;
Note: See TracChangeset
for help on using the changeset viewer.