- File:
-
- 1 edited
-
src/GenPoly/InstantiateGeneric.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/InstantiateGeneric.cc
re3e16bc rf6582243 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 15 22 #include "InstantiateGeneric.h" 16 23 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 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" 37 41 38 42 … … 459 463 Declaration * member = *std::next( aggr->members.begin(), memberIndex ); 460 464 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() ); 461 DeclarationWithType * field = s trict_dynamic_cast< DeclarationWithType * >( member );465 DeclarationWithType * field = safe_dynamic_cast< DeclarationWithType * >( member ); 462 466 MemberExpr * ret = new MemberExpr( field, memberExpr->aggregate->clone() ); 463 467 std::swap( ret->env, memberExpr->env );
Note:
See TracChangeset
for help on using the changeset viewer.