Changes in src/ResolvExpr/CommonType.cc [a2a77af:4cb935e]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/CommonType.cc
ra2a77af r4cb935e 42 42 virtual void visit( OneType *oneType ); 43 43 44 void getCommonWithVoidPointer( PointerType* voidPointer, PointerType* otherPointer );45 44 template< typename RefType > void handleRefType( RefType *inst, Type *other ); 46 45 … … 146 145 } 147 146 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 161 147 void CommonType::visit( PointerType *pointerType ) { 162 148 if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) { 163 149 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(); 165 152 } 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(); 167 155 } else if ( ( pointerType->get_base()->get_qualifiers() >= otherPointer->get_base()->get_qualifiers() || widenFirst ) 168 156 && ( pointerType->get_base()->get_qualifiers() <= otherPointer->get_base()->get_qualifiers() || widenSecond ) ) {
Note: See TracChangeset
for help on using the changeset viewer.