Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/CurrentObject.cc

    r92355883 r8f557161  
    10451045                        PRINT( std::cerr << "____untyped: " << expr << std::endl; )
    10461046                        auto dit = desigAlts.begin();
    1047 
    1048                         for ( const Type * t : curTypes ) {
    1049                                 assert( dit != desigAlts.end() );
    1050                                 DesignatorChain & d = *dit;
    1051                                 if ( auto nexpr = dynamic_cast< const NameExpr *>( expr ) ) {
     1047                        if ( auto nexpr = dynamic_cast< const NameExpr * >( expr ) ) {
     1048                                for ( const Type * t : curTypes ) {
     1049                                        assert( dit != desigAlts.end() );
     1050
     1051                                        DesignatorChain & d = *dit;
    10521052                                        PRINT( std::cerr << "____actual: " << t << std::endl; )
    10531053                                        if ( auto refType = dynamic_cast< const BaseInstType * >( t ) ) {
     
    10621062                                                        }
    10631063                                                }
    1064                                         } else if ( auto at = dynamic_cast< const ArrayType * >( t ) ) {
    1065                                                 auto nexpr = dynamic_cast< const NameExpr *>( expr );
    1066                                                 auto res = eval( nexpr );
    1067                                                 for ( const Decl * mem : refType->lookup( nexpr->name ) ) {
    1068                                                         if ( auto field = dynamic_cast< const ObjectDecl * >( mem ) ) {
    1069                                                                 DesignatorChain d2 = d;
    1070                                                                 d2.emplace_back( new VariableExpr{ expr->location, field } );
    1071                                                                 newDesigAlts.emplace_back( std::move( d2 ) );
    1072                                                                 // newTypes.emplace_back( field->type );
    1073                                                                 newTypes.emplace_back( at->base );
    1074                                                         }
    1075                                                 }
    1076 
    1077                                                 // d.emplace_back( expr );
    1078                                                 // newDesigAlts.emplace_back( d );
    1079                                                 // newTypes.emplace_back( at->base );
    10801064                                        }
    10811065
    10821066                                        ++dit;
    1083                                 } else {
     1067                                }
     1068                        } else {
     1069                                for ( const Type * t : curTypes ) {
     1070                                        assert( dit != desigAlts.end() );
     1071
     1072                                        DesignatorChain & d = *dit;
    10841073                                        if ( auto at = dynamic_cast< const ArrayType * >( t ) ) {
    10851074                                                PRINT( std::cerr << "____alt: " << at->get_base() << std::endl; )
Note: See TracChangeset for help on using the changeset viewer.