Changes in / [5a73f0f:93967c8]


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/AlternativeFinder.cc

    r5a73f0f r93967c8  
    15441544                AlternativeFinder firstFinder( indexer, env );
    15451545                firstFinder.findWithAdjustment( logicalExpr->get_arg1() );
    1546                 if ( firstFinder.alternatives.empty() ) return;
    1547                 AlternativeFinder secondFinder( indexer, env );
    1548                 secondFinder.findWithAdjustment( logicalExpr->get_arg2() );
    1549                 if ( secondFinder.alternatives.empty() ) return;
    15501546                for ( AltList::const_iterator first = firstFinder.alternatives.begin(); first != firstFinder.alternatives.end(); ++first ) {
     1547                        AlternativeFinder secondFinder( indexer, first->env );
     1548                        secondFinder.findWithAdjustment( logicalExpr->get_arg2() );
    15511549                        for ( AltList::const_iterator second = secondFinder.alternatives.begin(); second != secondFinder.alternatives.end(); ++second ) {
    1552                                 TypeEnvironment compositeEnv;
    1553                                 compositeEnv.simpleCombine( first->env );
    1554                                 compositeEnv.simpleCombine( second->env );
    1555 
    15561550                                LogicalExpr *newExpr = new LogicalExpr( first->expr->clone(), second->expr->clone(), logicalExpr->get_isAnd() );
    1557                                 alternatives.push_back( Alternative( newExpr, compositeEnv, first->cost + second->cost ) );
     1551                                alternatives.push_back( Alternative( newExpr, second->env, first->cost + second->cost ) );
    15581552                        }
    15591553                }
     
    16151609                AlternativeFinder firstFinder( indexer, env );
    16161610                firstFinder.findWithAdjustment( rangeExpr->get_low() );
    1617                 if ( firstFinder.alternatives.empty() ) return;
    1618                 AlternativeFinder secondFinder( indexer, env );
    1619                 secondFinder.findWithAdjustment( rangeExpr->get_high() );
    1620                 if ( secondFinder.alternatives.empty() ) return;
    16211611                for ( AltList::const_iterator first = firstFinder.alternatives.begin(); first != firstFinder.alternatives.end(); ++first ) {
     1612                        AlternativeFinder secondFinder( indexer, first->env );
     1613                        secondFinder.findWithAdjustment( rangeExpr->get_high() );
    16221614                        for ( AltList::const_iterator second = secondFinder.alternatives.begin(); second != secondFinder.alternatives.end(); ++second ) {
    1623                                 TypeEnvironment compositeEnv;
    1624                                 compositeEnv.simpleCombine( first->env );
    1625                                 compositeEnv.simpleCombine( second->env );
    16261615                                OpenVarSet openVars;
    16271616                                AssertionSet needAssertions, haveAssertions;
    1628                                 Alternative newAlt( 0, compositeEnv, first->cost + second->cost );
     1617                                Alternative newAlt( 0, second->env, first->cost + second->cost );
    16291618                                Type* commonType = nullptr;
    16301619                                if ( unify( first->expr->get_result(), second->expr->get_result(), newAlt.env, needAssertions, haveAssertions, openVars, indexer, commonType ) ) {
Note: See TracChangeset for help on using the changeset viewer.