Changes in src/ResolvExpr/Occurs.cc [982f95d:8e18b8e]
- File:
-
- 1 edited
-
src/ResolvExpr/Occurs.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/Occurs.cc
r982f95d r8e18b8e 14 14 // 15 15 16 #include <set> // for set, _Rb_tree_const_iterator 16 17 #include <string> // for string 17 #include <unordered_set> // for unordered_set18 18 19 19 #include "Common/PassVisitor.h" 20 20 #include "SynTree/Type.h" // for TypeInstType, Type 21 #include "TypeEnvironment.h" // for ClassRef, TypeEnvironment21 #include "TypeEnvironment.h" // for EqvClass, TypeEnvironment 22 22 23 23 namespace ResolvExpr { … … 27 27 28 28 bool result; 29 using VarSet = std::unordered_set< std::string >; 30 VarSet eqvVars; 29 std::set< std::string > eqvVars; 31 30 const TypeEnvironment &tenv; 32 31 }; … … 39 38 40 39 Occurs::Occurs( std::string varName, const TypeEnvironment & env ) : result( false ), tenv( env ) { 41 if ( ClassRefeqvClass = tenv.lookup( varName ) ) {42 eqvVars = eqvClass .get_vars<VarSet>();40 if ( const EqvClass *eqvClass = tenv.lookup( varName ) ) { 41 eqvVars = eqvClass->vars; 43 42 } else { 44 43 eqvVars.insert( varName ); … … 52 51 if ( eqvVars.find( typeInst->get_name() ) != eqvVars.end() ) { 53 52 result = true; 54 } else if ( ClassRefeqvClass = 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 ) { 56 55 /// std::cerr << typeInst->get_name() << " is bound to"; 57 /// boundTy->print( std::cerr );56 /// eqvClass.type->print( std::cerr ); 58 57 /// std::cerr << std::endl; 59 boundTy->accept( *visitor );58 eqvClass->type->accept( *visitor ); 60 59 } // if 61 60 } // if
Note:
See TracChangeset
for help on using the changeset viewer.