Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Validate.cc

    r8a3ecb9 r95d09bdb  
    8585                void previsit( AlignofExpr * );
    8686                void previsit( UntypedOffsetofExpr * );
     87                void previsit( CompoundLiteralExpr * );
    8788                void handleType( Type * );
    8889        };
     
    350351        }
    351352
     353        void HoistTypeDecls::previsit( CompoundLiteralExpr * expr ) {
     354                handleType( expr->result );
     355        }
     356
    352357
    353358        Type * FixQualifiedTypes::postmutate( QualifiedType * qualType ) {
     
    363368                                auto base = td->base;
    364369                                assert( base );
    365                                 Type * ret = base->clone();
    366                                 ret->get_qualifiers() = qualType->get_qualifiers();
    367                                 return ret;
     370                                return base->clone();
    368371                        } else {
    369372                                // .T => T is not a type name
     
    385388                                        if ( StructDecl * aggr = dynamic_cast< StructDecl * >( member ) ) {
    386389                                                if ( aggr->name == inst->name ) {
    387                                                         // TODO: is this case, and other non-TypeInstType cases, necessary?
    388390                                                        return new StructInstType( qualType->get_qualifiers(), aggr );
    389391                                                }
     
    402404                                        }
    403405                                } else if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( child ) ) {
    404                                         // name on the right is a typedef
     406                                        // struct typedefs are being replaced by forward decls too early; move it to hoist struct
    405407                                        if ( NamedTypeDecl * aggr = dynamic_cast< NamedTypeDecl * > ( member ) ) {
    406408                                                if ( aggr->name == inst->name ) {
    407409                                                        assert( aggr->base );
    408                                                         Type * ret = aggr->base->clone();
    409                                                         ret->get_qualifiers() = qualType->get_qualifiers();
    410                                                         return ret;
     410                                                        return aggr->base->clone();
    411411                                                }
    412412                                        }
Note: See TracChangeset for help on using the changeset viewer.