Changes in src/ResolvExpr/PolyCost.cc [5aa4656:00ac42e]
- File:
-
- 1 edited
-
src/ResolvExpr/PolyCost.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/PolyCost.cc
r5aa4656 r00ac42e 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 09:50:12 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Jun 19 10:45:00 201913 // Update Count : 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 09:52:02 2015 13 // Update Count : 3 14 14 // 15 15 16 #include "AST/SymbolTable.hpp"17 #include "AST/Type.hpp"18 #include "AST/TypeEnvironment.hpp"19 16 #include "Common/PassVisitor.h" 20 17 #include "SymTab/Indexer.h" // for Indexer … … 57 54 } 58 55 59 // TODO: When the old PolyCost is torn out get rid of the _new suffix.60 struct PolyCost_new {61 int result;62 const ast::SymbolTable &symtab;63 const ast::TypeEnvironment &env_;64 65 PolyCost_new( const ast::SymbolTable & symtab, const ast::TypeEnvironment & env ) :66 result( 0 ), symtab( symtab ), env_( env ) {}67 68 void previsit( const ast::TypeInstType * type ) {69 if ( const ast::EqvClass * eqv = env_.lookup( type->name ) ) /* && */ if ( eqv->bound ) {70 if ( const ast::TypeInstType * otherType = eqv->bound.as< ast::TypeInstType >() ) {71 if ( symtab.lookupType( otherType->name ) ) {72 // Bound to opaque type.73 result += 1;74 }75 } else {76 // Bound to concrete type.77 result += 1;78 }79 }80 }81 };82 83 int polyCost(84 const ast::Type * type, const ast::SymbolTable & symtab, const ast::TypeEnvironment & env85 ) {86 ast::Pass<PolyCost_new> costing( symtab, env );87 type->accept( costing );88 return costing.pass.result;89 }90 91 56 } // namespace ResolvExpr 92 57
Note:
See TracChangeset
for help on using the changeset viewer.