Changeset c38ae92 for src/Parser/DeclarationNode.cc
- Timestamp:
- Nov 20, 2017, 11:44:20 AM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- c0b23644
- Parents:
- 9e1eabc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
r9e1eabc rc38ae92 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Sep 23 18:16:48201713 // Update Count : 10 2412 // Last Modified On : Mon Nov 20 09:21:52 2017 13 // Update Count : 1031 14 14 // 15 15 … … 509 509 510 510 DeclarationNode * DeclarationNode::addQualifiers( DeclarationNode * q ) { 511 if ( ! q ) { delete q; return this; } 511 if ( ! q ) { delete q; return this; } // empty qualifier 512 512 513 513 checkSpecifiers( q ); 514 514 copySpecifiers( q ); 515 515 516 if ( ! q->type ) { 517 delete q; 518 return this; 519 } // if 516 if ( ! q->type ) { delete q; return this; } 520 517 521 518 if ( ! type ) { 522 type = q->type; // reuse thisstructure519 type = q->type; // reuse structure 523 520 q->type = nullptr; 524 521 delete q; … … 526 523 } // if 527 524 528 if ( q->type->forall ) { 529 if ( type->forall ) { 530 type->forall->appendList( q->type->forall ); 525 if ( q->type->forall ) { // forall qualifier ? 526 if ( type->forall ) { // polymorphic routine ? 527 type->forall->appendList( q->type->forall ); // augment forall qualifier 531 528 } else { 532 if ( type->kind == TypeData::Aggregate ) { 533 type->aggregate.params = q->type->forall; 534 // change implicit typedef from TYPEDEFname to TYPEGENname 535 typedefTable.changeKind( *type->aggregate.name, TypedefTable::TG ); 536 } else { 537 type->forall = q->type->forall; 529 if ( type->kind == TypeData::Aggregate ) { // struct/union ? 530 if ( type->aggregate.params ) { // polymorphic ? 531 type->aggregate.params->appendList( q->type->forall ); // augment forall qualifier 532 } else { // not polymorphic 533 type->aggregate.params = q->type->forall; // make polymorphic type 534 // change implicit typedef from TYPEDEFname to TYPEGENname 535 typedefTable.changeKind( *type->aggregate.name, TypedefTable::TG ); 536 } // if 537 } else { // not polymorphic 538 type->forall = q->type->forall; // make polymorphic routine 538 539 } // if 539 540 } // if 540 q->type->forall = nullptr; 541 q->type->forall = nullptr; // forall qualifier moved 541 542 } // if 542 543
Note: See TracChangeset
for help on using the changeset viewer.