Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Decl.cpp

    r3e54399 rb230091  
    3939        if ( uniqueId ) return;  // ensure only set once
    4040        uniqueId = ++lastUniqueId;
    41         idMap[ uniqueId ] = this;
     41        // The extra readonly pointer is causing some reference counting issues.
     42        // idMap[ uniqueId ] = this;
    4243}
    4344
    4445readonly<Decl> Decl::fromId( UniqueId id ) {
     46        // Right now this map is always empty, so don't use it.
     47        assert( false );
    4548        IdMapType::const_iterator i = idMap.find( id );
    4649        if ( i != idMap.end() ) return i->second;
     
    6568        }
    6669        for (auto & tp : this->type_params) {
    67                 ftype->forall.emplace_back(new TypeInstType(tp->name, tp));
     70                ftype->forall.emplace_back(new TypeInstType(tp));
    6871                for (auto & ap: tp->assertions) {
    6972                        ftype->assertions.emplace_back(new VariableExpr(loc, ap));
     
    133136
    134137        auto it = enumValues.find( enumerator->name );
    135        
    136138        if ( it != enumValues.end() ) {
    137                        
    138                 // Handle typed enum by casting the value in (C++) compiler
    139                 // if ( base ) { // A typed enum
    140                 //      if ( const BasicType * bt = dynamic_cast<const BasicType *>(base) ) {
    141                 //              switch( bt->kind ) {
    142                 //                      case BasicType::Kind::Bool:     value = (bool) it->second; break;
    143                 //                      case BasicType::Kind::Char: value = (char) it->second; break;
    144                 //                      case BasicType::Kind::SignedChar: value = (signed char) it->second; break;
    145                 //                      case BasicType::Kind::UnsignedChar: value = (unsigned char) it->second; break;
    146                 //                      case BasicType::Kind::ShortSignedInt: value = (short signed int) it->second; break;
    147                 //                      case BasicType::Kind::SignedInt: value = (signed int) it->second; break;
    148                 //                      case BasicType::Kind::UnsignedInt: value = (unsigned int) it->second; break;
    149                 //                      case BasicType::Kind::LongSignedInt: value = (long signed int) it->second; break;
    150                 //                      case BasicType::Kind::LongUnsignedInt: value = (long unsigned int) it->second; break;
    151                 //                      case BasicType::Kind::LongLongSignedInt: value = (long long signed int) it->second; break;
    152                 //                      case BasicType::Kind::LongLongUnsignedInt: value = (long long unsigned int) it->second; break;
    153                 //                      // TODO: value should be able to handle long long unsigned int
    154 
    155                 //                      default:
    156                 //                      value = it->second;
    157                 //              }
    158                 //      }
    159                 // } else {
    160                         value = it->second;
    161                 //}
    162 
     139                value = it->second;
    163140                return true;
    164141        }
Note: See TracChangeset for help on using the changeset viewer.