Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/ConversionCost.cpp

    r00f89a6 ra7efc96  
    250250                        newSrc = new ast::BasicType( ast::BasicKind::UnsignedInt );
    251251                }
    252                 if (dstAsRef->base->is_const() ) {
    253                         auto cvtCost = conversionCost(newSrc, dstAsRef->base, srcIsLvalue, symtab, env) ;
    254                         if (cvtCost == Cost::zero) { // exact match, may use a lvalue src
    255                                 if ( srcIsLvalue ) {
    256                                         if ( src->qualifiers == dstAsRef->base->qualifiers ) {
    257                                                 return Cost::reference;
    258                                         } else if ( src->qualifiers < dstAsRef->base->qualifiers ) {
    259                                                 return Cost::safe;
    260                                         } else {
    261                                                 return Cost::unsafe;
    262                                         }
    263                                 }
    264                                 else {
    265                                         return Cost::reference;
    266                                 }
    267                         }
    268                         else { // not exact match, conversion is needed so lvalueness of src does not matter
    269                                 return cvtCost + Cost::reference;
    270                         }
    271                 }
    272252                if ( typesCompatibleIgnoreQualifiers( newSrc, dstAsRef->base, env ) ) {
    273253                        if ( srcIsLvalue ) {
     
    279259                                        return Cost::unsafe;
    280260                                }
    281                         } else { // rvalue-to-NC-ref conversion
     261                        } else if ( dstAsRef->base->is_const() ) {
     262                                return Cost::safe;
     263                        } else {
    282264                                return Cost::unsafe;
    283265                        }
Note: See TracChangeset for help on using the changeset viewer.