- Timestamp:
- Jul 10, 2023, 11:14:13 AM (16 months ago)
- Branches:
- master
- Children:
- c3f7dd9
- Parents:
- e6e1a12 (diff), b29a1e8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Decl.hpp
re6e1a12 r713905fd 69 69 public: 70 70 /// Represents the type with all types and typedefs expanded. 71 /// This field is generated by SymTab::Validate::Pass272 71 std::string mangleName; 73 72 /// Stores the scope level at which the variable was declared. -
src/AST/SymbolTable.cpp
re6e1a12 r713905fd 19 19 20 20 #include "Copy.hpp" 21 #include <iostream>22 #include <algorithm>23 24 21 #include "Decl.hpp" 25 22 #include "Expr.hpp" … … 206 203 out.push_back(decl.second); 207 204 } 208 209 // std::cerr << otypeKey << ' ' << out.size() << std::endl;210 205 } 211 206 -
src/GenPoly/SpecializeNew.cpp
re6e1a12 r713905fd 104 104 105 105 bool needsPolySpecialization( 106 const ast::Type * formalType,106 const ast::Type * /*formalType*/, 107 107 const ast::Type * actualType, 108 108 const ast::TypeSubstitution * subs ) { … … 126 126 if ( closedVars.find( *inst ) == closedVars.end() ) { 127 127 return true; 128 } 129 else { 128 } else { 130 129 assertf(false, "closed: %s", inst->name.c_str()); 131 130 } -
src/InitTweak/FixInitNew.cpp
re6e1a12 r713905fd 22 22 #include "AST/SymbolTable.hpp" 23 23 #include "AST/Type.hpp" 24 #include "CodeGen/GenType.h" // for genPrettyType 25 #include "CodeGen/OperatorTable.h" 26 #include "Common/PassVisitor.h" // for PassVisitor, WithStmtsToAdd 24 #include "CodeGen/OperatorTable.h" // for isConstructor, isCtorDtor, isD... 27 25 #include "Common/SemanticError.h" // for SemanticError 28 26 #include "Common/ToString.hpp" // for toCString … … 33 31 #include "ResolvExpr/Resolver.h" // for findVoidExpression 34 32 #include "ResolvExpr/Unify.h" // for typesCompatible 35 #include "SymTab/Autogen.h" // for genImplicitCall36 33 #include "SymTab/GenImplicitCall.hpp" // for genImplicitCall 37 #include "SymTab/Indexer.h" // for Indexer38 #include "SymTab/Mangler.h" // for Mangler39 #include "SynTree/LinkageSpec.h" // for C, Spec, Cforall, isBuiltin40 #include "SynTree/Attribute.h" // for Attribute41 #include "SynTree/Constant.h" // for Constant42 #include "SynTree/Declaration.h" // for ObjectDecl, FunctionDecl, Decl...43 #include "SynTree/Expression.h" // for UniqueExpr, VariableExpr, Unty...44 #include "SynTree/Initializer.h" // for ConstructorInit, SingleInit45 #include "SynTree/Label.h" // for Label, operator<46 #include "SynTree/Mutator.h" // for mutateAll, Mutator, maybeMutate47 #include "SynTree/Statement.h" // for ExprStmt, CompoundStmt, Branch...48 #include "SynTree/Type.h" // for Type, Type::StorageClasses49 #include "SynTree/TypeSubstitution.h" // for TypeSubstitution, operator<<50 #include "SynTree/DeclReplacer.h" // for DeclReplacer51 #include "SynTree/Visitor.h" // for acceptAll, maybeAccept52 #include "Validate/FindSpecialDecls.h" // for dtorStmt, dtorStructDestroy53 34 54 35 extern bool ctordtorp; // print all debug -
src/ResolvExpr/CommonType.cc
re6e1a12 r713905fd 696 696 void postvisit( const ast::BasicType * basic ) { 697 697 if ( auto basic2 = dynamic_cast< const ast::BasicType * >( type2 ) ) { 698 #warning remove casts when `commonTypes` moved to new AST699 700 /*701 ast::BasicType::Kind kind = (ast::BasicType::Kind)(int)commonTypes[ (BasicType::Kind)(int)basic->kind ][ (BasicType::Kind)(int)basic2->kind ];702 if (703 ( ( kind == basic->kind && basic->qualifiers >= basic2->qualifiers )704 || widen.first )705 && ( ( kind == basic2->kind && basic->qualifiers <= basic2->qualifiers )706 || widen.second )707 ) {708 result = new ast::BasicType{ kind, basic->qualifiers | basic2->qualifiers };709 }710 */711 698 ast::BasicType::Kind kind; 712 699 if (basic->kind != basic2->kind && !widen.first && !widen.second) return; … … 719 706 result = new ast::BasicType{ kind, basic->qualifiers | basic2->qualifiers }; 720 707 } 721 722 708 } else if ( 723 709 dynamic_cast< const ast::ZeroType * >( type2 ) 724 710 || dynamic_cast< const ast::OneType * >( type2 ) 725 711 ) { 726 #warning remove casts when `commonTypes` moved to new AST727 ast::BasicType::Kind kind = (ast::BasicType::Kind)(int)commonTypes[ (BasicType::Kind)(int)basic->kind ][ (BasicType::Kind)(int)ast::BasicType::SignedInt ];728 /*729 if ( // xxx - what does qualifier even do here??730 ( ( basic->qualifiers >= type2->qualifiers )731 || widen.first )732 && ( ( /* kind != basic->kind && basic->qualifiers <= type2->qualifiers )733 || widen.second )734 )735 */736 712 if (widen.second) { 737 713 result = new ast::BasicType{ basic->kind, basic->qualifiers | type2->qualifiers }; 738 714 } 739 715 } else if ( const ast::EnumInstType * enumInst = dynamic_cast< const ast::EnumInstType * >( type2 ) ) { 740 #warning remove casts when `commonTypes` moved to new AST741 716 const ast::EnumDecl* enumDecl = enumInst->base; 742 717 if ( enumDecl->base ) { 743 718 result = enumDecl->base.get(); 744 719 } else { 720 #warning remove casts when `commonTypes` moved to new AST 745 721 ast::BasicType::Kind kind = (ast::BasicType::Kind)(int)commonTypes[ (BasicType::Kind)(int)basic->kind ][ (BasicType::Kind)(int)ast::BasicType::SignedInt ]; 746 722 if ( … … 763 739 auto entry = open.find( *var ); 764 740 if ( entry != open.end() ) { 765 // if (tenv.lookup(*var)) {766 741 ast::AssertionSet need, have; 767 742 if ( ! tenv.bindVar( -
src/ResolvExpr/Unify.cc
re6e1a12 r713905fd 1298 1298 auto var1 = dynamic_cast< const ast::TypeInstType * >( type1 ); 1299 1299 auto var2 = dynamic_cast< const ast::TypeInstType * >( type2 ); 1300 ast::OpenVarSet::const_iterator1301 entry1 = var1 ? open.find( *var1 ) : open.end(),1302 entry2 = var2 ? open.find( *var2 ) : open.end();1303 // bool isopen1 = entry1 != open.end();1304 // bool isopen2 = entry2 != open.end();1305 1300 bool isopen1 = var1 && env.lookup(*var1); 1306 1301 bool isopen2 = var2 && env.lookup(*var2); 1307 1302 1308 /*1309 if ( isopen1 && isopen2 ) {1310 if ( entry1->second.kind != entry2->second.kind ) return false;1311 return env.bindVarToVar(1312 var1, var2, ast::TypeData{ entry1->second, entry2->second }, need, have,1313 open, widen );1314 } else if ( isopen1 ) {1315 return env.bindVar( var1, type2, entry1->second, need, have, open, widen );1316 } else if ( isopen2 ) {1317 return env.bindVar( var2, type1, entry2->second, need, have, open, widen, symtab );1318 } */1319 1303 if ( isopen1 && isopen2 ) { 1320 1304 if ( var1->base->kind != var2->base->kind ) return false; … … 1326 1310 } else if ( isopen2 ) { 1327 1311 return env.bindVar( var2, type1, ast::TypeData{var2->base}, need, have, open, widen ); 1328 } else {1312 } else { 1329 1313 return ast::Pass<Unify_new>::read( 1330 1314 type1, type2, env, need, have, open, widen ); 1331 1315 } 1332 1333 1316 } 1334 1317 -
src/Validate/LinkReferenceToTypes.cpp
re6e1a12 r713905fd 80 80 ast::EnumInstType const * LinkTypesCore::postvisit( ast::EnumInstType const * type ) { 81 81 ast::EnumDecl const * decl = symtab.lookupEnum( type->name ); 82 ast::EnumInstType * mut = ast::mutate( type ); 82 83 // It's not a semantic error if the enum is not found, just an implicit forward declaration. 83 84 if ( decl ) { 84 85 // Just linking in the node. 85 auto mut = ast::mutate( type );86 86 mut->base = decl; 87 type = mut;88 87 } 89 88 if ( !decl || !decl->body ) { 90 auto mut = ast::mutate( type );91 89 forwardEnums[ mut->name ].push_back( mut ); 92 type = mut; 93 } 94 return type; 90 } 91 return mut; 95 92 } 96 93 97 94 ast::StructInstType const * LinkTypesCore::postvisit( ast::StructInstType const * type ) { 98 95 ast::StructDecl const * decl = symtab.lookupStruct( type->name ); 96 ast::StructInstType * mut = ast::mutate( type ); 99 97 // It's not a semantic error if the struct is not found, just an implicit forward declaration. 100 98 if ( decl ) { 101 99 // Just linking in the node. 102 auto mut = ast::mutate( type );103 100 mut->base = decl; 104 type = mut;105 101 } 106 102 if ( !decl || !decl->body ) { 107 auto mut = ast::mutate( type );108 103 forwardStructs[ mut->name ].push_back( mut ); 109 type = mut; 110 } 111 return type; 104 } 105 return mut; 112 106 } 113 107 114 108 ast::UnionInstType const * LinkTypesCore::postvisit( ast::UnionInstType const * type ) { 115 109 ast::UnionDecl const * decl = symtab.lookupUnion( type->name ); 110 ast::UnionInstType * mut = ast::mutate( type ); 116 111 // It's not a semantic error if the union is not found, just an implicit forward declaration. 117 112 if ( decl ) { 118 113 // Just linking in the node. 119 auto mut = ast::mutate( type );120 114 mut->base = decl; 121 type = mut;122 115 } 123 116 if ( !decl || !decl->body ) { 124 auto mut = ast::mutate( type );125 117 forwardUnions[ mut->name ].push_back( mut ); 126 type = mut; 127 } 128 return type; 118 } 119 return mut; 129 120 } 130 121
Note: See TracChangeset
for help on using the changeset viewer.