Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    rfaddbd8 rfb114fa1  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 651
     12// Last Modified On : Mon Sep 26 22:18:40 2016
     13// Update Count     : 640
    1414//
    1515
     
    5656                extension( false ) {
    5757
    58 //      variable.name = nullptr;
    59         variable.tyClass = NoTypeClass;
     58        variable.name = nullptr;
     59        variable.tyClass = DeclarationNode::Otype;
    6060        variable.assertions = nullptr;
    6161
    62 //      attr.name = nullptr;
     62        attr.name = nullptr;
    6363        attr.expr = nullptr;
    6464        attr.type = nullptr;
     
    6666
    6767DeclarationNode::~DeclarationNode() {
    68 //      delete attr.name;
     68        delete attr.name;
    6969        delete attr.expr;
    7070        delete attr.type;
    7171
    72 //      delete variable.name;
     72        delete variable.name;
    7373        delete variable.assertions;
    7474
     
    9191        newnode->linkage = linkage;
    9292
    93 //      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     93        newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
    9494        newnode->variable.tyClass = variable.tyClass;
    9595        newnode->variable.assertions = maybeClone( variable.assertions );
    9696
    97 //      newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
     97        newnode->attr.name = attr.name ? new string( *attr.name ) : nullptr;
    9898        newnode->attr.expr = maybeClone( attr.expr );
    9999        newnode->attr.type = maybeClone( attr.type );
     
    114114
    115115        if ( linkage != LinkageSpec::Cforall ) {
    116                 os << LinkageSpec::linkageName( linkage ) << " ";
     116                os << LinkageSpec::toString( linkage ) << " ";
    117117        } // if
    118118
     
    283283        DeclarationNode * newnode = new DeclarationNode;
    284284        newnode->type = nullptr;
    285         assert( ! newnode->name );
    286 //      newnode->variable.name = name;
    287         newnode->name = name;
    288285        newnode->variable.tyClass = tc;
    289         newnode->variable.assertions = nullptr;
     286        newnode->variable.name = name;
    290287        return newnode;
    291288} // DeclarationNode::newTypeParam
     
    378375        DeclarationNode * newnode = new DeclarationNode;
    379376        newnode->type = nullptr;
    380 //      newnode->attr.name = name;
    381         newnode->name = name;
     377        newnode->attr.name = name;
    382378        newnode->attr.expr = expr;
    383379        return newnode;
     
    387383        DeclarationNode * newnode = new DeclarationNode;
    388384        newnode->type = nullptr;
    389 //      newnode->attr.name = name;
    390         newnode->name = name;
     385        newnode->attr.name = name;
    391386        newnode->attr.type = type;
    392387        return newnode;
     
    609604
    610605DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    611         if ( variable.tyClass != NoTypeClass ) {
     606        if ( variable.name ) {
    612607                if ( variable.assertions ) {
    613608                        variable.assertions->appendList( assertions );
     
    627622                } // if
    628623                break;
     624          // case TypeData::Variable:
     625          //    if ( variable.assertions ) {
     626          //            variable.assertions->appendList( assertions );
     627          //    } else {
     628          //            variable.assertions = assertions;
     629          //    } // if
     630          //    break;
    629631          default:
    630632                assert( false );
     
    936938        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
    937939
    938 //      if ( variable.name ) {
    939         if ( variable.tyClass != NoTypeClass ) {
     940        if ( variable.name ) {
    940941                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    941 //              TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    942                 TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     942                TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
    943943                buildList( variable.assertions, ret->get_assertions() );
    944944                return ret;
     
    960960        assert( type );
    961961
    962         if ( attr.expr ) {
    963 //              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    964                 return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
    965         } else if ( attr.type ) {
    966 //              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    967                 return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
     962        if ( attr.name ) {
     963                AttrType * ret;
     964                if ( attr.expr ) {
     965                        ret = new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
     966                } else {
     967                        assert( attr.type );
     968                        ret = new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
     969                } // if
     970                return ret;
    968971        } // if
    969972
Note: See TracChangeset for help on using the changeset viewer.