Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    rfb114fa1 rfaddbd8  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Sep 26 22:18:40 2016
    13 // Update Count     : 640
     12// Last Modified On : Mon Oct  3 18:03:08 2016
     13// Update Count     : 651
    1414//
    1515
     
    5656                extension( false ) {
    5757
    58         variable.name = nullptr;
    59         variable.tyClass = DeclarationNode::Otype;
     58//      variable.name = nullptr;
     59        variable.tyClass = NoTypeClass;
    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::toString( linkage ) << " ";
     116                os << LinkageSpec::linkageName( 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;
    285288        newnode->variable.tyClass = tc;
    286         newnode->variable.name = name;
     289        newnode->variable.assertions = nullptr;
    287290        return newnode;
    288291} // DeclarationNode::newTypeParam
     
    375378        DeclarationNode * newnode = new DeclarationNode;
    376379        newnode->type = nullptr;
    377         newnode->attr.name = name;
     380//      newnode->attr.name = name;
     381        newnode->name = name;
    378382        newnode->attr.expr = expr;
    379383        return newnode;
     
    383387        DeclarationNode * newnode = new DeclarationNode;
    384388        newnode->type = nullptr;
    385         newnode->attr.name = name;
     389//      newnode->attr.name = name;
     390        newnode->name = name;
    386391        newnode->attr.type = type;
    387392        return newnode;
     
    604609
    605610DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    606         if ( variable.name ) {
     611        if ( variable.tyClass != NoTypeClass ) {
    607612                if ( variable.assertions ) {
    608613                        variable.assertions->appendList( assertions );
     
    622627                } // if
    623628                break;
    624           // case TypeData::Variable:
    625           //    if ( variable.assertions ) {
    626           //            variable.assertions->appendList( assertions );
    627           //    } else {
    628           //            variable.assertions = assertions;
    629           //    } // if
    630           //    break;
    631629          default:
    632630                assert( false );
     
    938936        if ( ! error.empty() ) throw SemanticError( error + " in declaration of ", this );
    939937
    940         if ( variable.name ) {
     938//      if ( variable.name ) {
     939        if ( variable.tyClass != NoTypeClass ) {
    941940                static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype };
    942                 TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     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 ] );
    943943                buildList( variable.assertions, ret->get_assertions() );
    944944                return ret;
     
    960960        assert( type );
    961961
    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;
     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() );
    971968        } // if
    972969
Note: See TracChangeset for help on using the changeset viewer.