Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/Occurs.cc

    r982f95d r8e18b8e  
    1414//
    1515
     16#include <set>                // for set, _Rb_tree_const_iterator
    1617#include <string>             // for string
    17 #include <unordered_set>      // for unordered_set
    1818
    1919#include "Common/PassVisitor.h"
    2020#include "SynTree/Type.h"     // for TypeInstType, Type
    21 #include "TypeEnvironment.h"  // for ClassRef, TypeEnvironment
     21#include "TypeEnvironment.h"  // for EqvClass, TypeEnvironment
    2222
    2323namespace ResolvExpr {
     
    2727
    2828                bool result;
    29                 using VarSet = std::unordered_set< std::string >;
    30                 VarSet eqvVars;
     29                std::set< std::string > eqvVars;
    3130                const TypeEnvironment &tenv;
    3231        };
     
    3938
    4039        Occurs::Occurs( std::string varName, const TypeEnvironment & env ) : result( false ), tenv( env ) {
    41                 if ( ClassRef eqvClass = tenv.lookup( varName ) ) {
    42                         eqvVars = eqvClass.get_vars<VarSet>();
     40                if ( const EqvClass *eqvClass = tenv.lookup( varName ) ) {
     41                        eqvVars = eqvClass->vars;
    4342                } else {
    4443                        eqvVars.insert( varName );
     
    5251                if ( eqvVars.find( typeInst->get_name() ) != eqvVars.end() ) {
    5352                        result = true;
    54                 } else if ( ClassRef eqvClass = tenv.lookup( typeInst->get_name() ) ) {
    55                         if ( Type* boundTy = eqvClass.get_bound().type ) {
     53                } else if ( const EqvClass *eqvClass = tenv.lookup( typeInst->get_name() ) ) {
     54                        if ( eqvClass->type ) {
    5655///       std::cerr << typeInst->get_name() << " is bound to";
    57 ///       boundTy->print( std::cerr );
     56///       eqvClass.type->print( std::cerr );
    5857///       std::cerr << std::endl;
    59                                 boundTy->accept( *visitor );
     58                                eqvClass->type->accept( *visitor );
    6059                        } // if
    6160                } // if
Note: See TracChangeset for help on using the changeset viewer.