Changeset 5bf685f for src/Parser/DeclarationNode.cc
- Timestamp:
- Jan 17, 2024, 3:13:56 PM (6 months ago)
- Branches:
- master
- Children:
- 11f65b3
- Parents:
- e891349
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
re891349 r5bf685f 35 35 #include "Common/SemanticError.h" // for SemanticError 36 36 #include "Common/UniqueName.h" // for UniqueName 37 #include "Common/utility.h" // for maybeClone37 #include "Common/utility.h" // for copy, spliceBegin 38 38 #include "Parser/ExpressionNode.h" // for ExpressionNode 39 39 #include "Parser/InitializerNode.h"// for InitializerNode … … 41 41 #include "TypeData.h" // for TypeData, TypeData::Aggregate_t 42 42 #include "TypedefTable.h" // for TypedefTable 43 44 class Initializer;45 43 46 44 extern TypedefTable typedefTable; … … 101 99 DeclarationNode * DeclarationNode::clone() const { 102 100 DeclarationNode * newnode = new DeclarationNode; 103 newnode->set_next( maybeC lone( get_next() ) );101 newnode->set_next( maybeCopy( get_next() ) ); 104 102 newnode->name = name ? new string( *name ) : nullptr; 105 103 106 104 newnode->builtin = NoBuiltinType; 107 newnode->type = maybeC lone( type );105 newnode->type = maybeCopy( type ); 108 106 newnode->inLine = inLine; 109 107 newnode->storageClasses = storageClasses; 110 108 newnode->funcSpecs = funcSpecs; 111 newnode->bitfieldWidth = maybeC lone( bitfieldWidth );112 newnode->enumeratorValue.reset( maybeC lone( enumeratorValue.get() ) );109 newnode->bitfieldWidth = maybeCopy( bitfieldWidth ); 110 newnode->enumeratorValue.reset( maybeCopy( enumeratorValue.get() ) ); 113 111 newnode->hasEllipsis = hasEllipsis; 114 112 newnode->linkage = linkage; 115 113 newnode->asmName = maybeCopy( asmName ); 116 114 newnode->attributes = attributes; 117 newnode->initializer = maybeC lone( initializer );115 newnode->initializer = maybeCopy( initializer ); 118 116 newnode->extension = extension; 119 newnode->asmStmt = maybeC lone( asmStmt );117 newnode->asmStmt = maybeCopy( asmStmt ); 120 118 newnode->error = error; 121 119 122 120 // newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr; 123 121 newnode->variable.tyClass = variable.tyClass; 124 newnode->variable.assertions = maybeC lone( variable.assertions );125 newnode->variable.initializer = maybeC lone( variable.initializer );126 127 newnode->assert.condition = maybeC lone( assert.condition );122 newnode->variable.assertions = maybeCopy( variable.assertions ); 123 newnode->variable.initializer = maybeCopy( variable.initializer ); 124 125 newnode->assert.condition = maybeCopy( assert.condition ); 128 126 newnode->assert.message = maybeCopy( assert.message ); 129 127 return newnode; … … 664 662 dst->base->aggInst.aggregate = src; 665 663 if ( src->kind == TypeData::Aggregate ) { 666 dst->base->aggInst.params = maybeC lone( src->aggregate.actuals );664 dst->base->aggInst.params = maybeCopy( src->aggregate.actuals ); 667 665 } // if 668 666 dst->base->qualifiers |= src->qualifiers; … … 694 692 if ( o->type->kind == TypeData::Aggregate ) { 695 693 type->aggInst.hoistType = o->type->aggregate.body; 696 type->aggInst.params = maybeC lone( o->type->aggregate.actuals );694 type->aggInst.params = maybeCopy( o->type->aggregate.actuals ); 697 695 } else { 698 696 type->aggInst.hoistType = o->type->enumeration.body; … … 860 858 p->type->base->aggInst.aggregate = type; 861 859 if ( type->kind == TypeData::Aggregate ) { 862 p->type->base->aggInst.params = maybeC lone( type->aggregate.actuals );860 p->type->base->aggInst.params = maybeCopy( type->aggregate.actuals ); 863 861 } // if 864 862 p->type->base->qualifiers |= type->qualifiers; … … 897 895 lastArray->base->aggInst.aggregate = type; 898 896 if ( type->kind == TypeData::Aggregate ) { 899 lastArray->base->aggInst.params = maybeC lone( type->aggregate.actuals );897 lastArray->base->aggInst.params = maybeCopy( type->aggregate.actuals ); 900 898 } // if 901 899 lastArray->base->qualifiers |= type->qualifiers; … … 950 948 DeclarationNode * DeclarationNode::cloneType( string * name ) { 951 949 DeclarationNode * newnode = newName( name ); 952 newnode->type = maybeC lone( type );950 newnode->type = maybeCopy( type ); 953 951 newnode->copySpecifiers( this ); 954 952 return newnode; … … 984 982 } // if 985 983 986 newType->forall = maybeC lone( type->forall );984 newType->forall = maybeCopy( type->forall ); 987 985 if ( ! o->type ) { 988 986 o->type = newType;
Note: See TracChangeset
for help on using the changeset viewer.