Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/CommonType.cc

    ra2a77af r4cb935e  
    4242                virtual void visit( OneType *oneType );
    4343
    44                 void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );
    4544                template< typename RefType > void handleRefType( RefType *inst, Type *other );
    4645
     
    146145        }
    147146
    148         void CommonType::getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer ) {
    149                 if ( TypeInstType* var = dynamic_cast< TypeInstType* >( otherPointer->get_base() ) ) {
    150                         OpenVarSet::const_iterator entry = openVars.find( var->get_name() );
    151                         if ( entry != openVars.end() ) {
    152                                 AssertionSet need, have;
    153                                 WidenMode widen( widenFirst, widenSecond );
    154                                 if ( entry != openVars.end() && ! bindVar(var, voidPointer->get_base(), entry->second, env, need, have, openVars, widen, indexer ) ) return;
    155                         }
    156                 }
    157                 result = voidPointer->clone();
    158                 result->get_qualifiers() += otherPointer->get_qualifiers();
    159         }
    160        
    161147        void CommonType::visit( PointerType *pointerType ) {
    162148                if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
    163149                        if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
    164                                 getCommonWithVoidPointer( otherPointer, pointerType );
     150                                result = otherPointer->clone();
     151                                result->get_qualifiers() += pointerType->get_qualifiers();
    165152                        } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
    166                                 getCommonWithVoidPointer( pointerType, otherPointer );
     153                                result = pointerType->clone();
     154                                result->get_qualifiers() += otherPointer->get_qualifiers();
    167155                        } else if ( ( pointerType->get_base()->get_qualifiers() >= otherPointer->get_base()->get_qualifiers() || widenFirst )
    168156                                           && ( pointerType->get_base()->get_qualifiers() <= otherPointer->get_base()->get_qualifiers() || widenSecond ) ) {
Note: See TracChangeset for help on using the changeset viewer.