- File:
-
- 1 edited
-
src/GenPoly/InstantiateGeneric.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/InstantiateGeneric.cc
rf6582243 re3e16bc 13 13 // Update Count : 1 14 14 // 15 16 #include <cassert>17 #include <list>18 #include <unordered_map>19 #include <utility>20 #include <vector>21 22 15 #include "InstantiateGeneric.h" 23 16 24 #include "GenPoly.h" 25 #include "ScopedSet.h" 26 #include "ScrubTyVars.h" 27 28 #include "Common/PassVisitor.h" 29 #include "Common/ScopedMap.h" 30 #include "Common/UniqueName.h" 31 #include "Common/utility.h" 32 33 #include "ResolvExpr/typeops.h" 34 35 #include "SynTree/Declaration.h" 36 #include "SynTree/Expression.h" 37 #include "SynTree/Type.h" 38 39 40 #include "InitTweak/InitTweak.h" 17 #include <cassert> // for assertf, assert 18 #include <iterator> // for back_inserter, inserter 19 #include <list> // for list, _List_const_iterator 20 #include <utility> // for move, pair 21 #include <vector> // for vector 22 23 #include "Common/PassVisitor.h" // for PassVisitor, WithDeclsToAdd 24 #include "Common/ScopedMap.h" // for ScopedMap 25 #include "Common/SemanticError.h" // for SemanticError 26 #include "Common/UniqueName.h" // for UniqueName 27 #include "Common/utility.h" // for deleteAll, cloneAll 28 #include "GenPoly.h" // for isPolyType, typesPolyCompatible 29 #include "ScopedSet.h" // for ScopedSet, ScopedSet<>::iterator 30 #include "ScrubTyVars.h" // for ScrubTyVars 31 #include "SynTree/Declaration.h" // for StructDecl, UnionDecl, TypeDecl 32 #include "SynTree/Expression.h" // for TypeExpr, Expression 33 #include "SynTree/Mutator.h" // for mutateAll 34 #include "SynTree/Type.h" // for StructInstType, UnionInstType 35 #include "SynTree/TypeSubstitution.h" // for TypeSubstitution 36 #include "SynTree/Visitor.h" // for acceptAll 41 37 42 38 … … 463 459 Declaration * member = *std::next( aggr->members.begin(), memberIndex ); 464 460 assertf( member->name == memberExpr->member->name, "Instantiation has different member order than the generic type. %s / %s", toString( member ).c_str(), toString( memberExpr->member ).c_str() ); 465 DeclarationWithType * field = s afe_dynamic_cast< DeclarationWithType * >( member );461 DeclarationWithType * field = strict_dynamic_cast< DeclarationWithType * >( member ); 466 462 MemberExpr * ret = new MemberExpr( field, memberExpr->aggregate->clone() ); 467 463 std::swap( ret->env, memberExpr->env );
Note:
See TracChangeset
for help on using the changeset viewer.