Ignore:
Timestamp:
Aug 10, 2020, 7:45:18 PM (18 months ago)
Author:
Fangren Yu <f37yu@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast, new-ast-unique-expr
Children:
22f94a4
Parents:
ba662b9
Message:

attempt to fix inferparams

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    rba662b9 r07d867b  
    588588                assert( tgtResnSlots.empty() );
    589589
    590                 if ( srcInferred.mode == ast::Expr::InferUnion::Params ) {
     590                if ( srcInferred.data.inferParams ) {
    591591                        const ast::InferredParams &srcParams = srcInferred.inferParams();
    592592                        for (auto & srcParam : srcParams) {
    593593                                auto res = tgtInferParams.emplace(srcParam.first, ParamEntry(
    594594                                        srcParam.second.decl,
    595                                         get<Declaration>().accept1(srcParam.second.declptr)->clone(),
    596                                         get<Type>().accept1(srcParam.second.actualType),
    597                                         get<Type>().accept1(srcParam.second.formalType),
    598                                         get<Expression>().accept1(srcParam.second.expr)
     595                                        get<Declaration>().accept1(srcParam.second.declptr),
     596                                        get<Type>().accept1(srcParam.second.actualType)->clone(),
     597                                        get<Type>().accept1(srcParam.second.formalType)->clone(),
     598                                        get<Expression>().accept1(srcParam.second.expr)->clone()
    599599                                ));
    600600                                assert(res.second);
    601601                        }
    602                 } else if ( srcInferred.mode == ast::Expr::InferUnion::Slots  ) {
     602                }
     603                if ( srcInferred.data.resnSlots ) {
    603604                        const ast::ResnSlots &srcSlots = srcInferred.resnSlots();
    604605                        for (auto srcSlot : srcSlots) {
     
    20032004
    20042005                assert( oldInferParams.empty() || oldResnSlots.empty() );
    2005                 assert( newInferred.mode == ast::Expr::InferUnion::Empty );
     2006                // assert( newInferred.mode == ast::Expr::InferUnion::Empty );
    20062007
    20072008                if ( !oldInferParams.empty() ) {
Note: See TracChangeset for help on using the changeset viewer.