Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/SymbolTable.cpp

    r9e23b446 r3e5dd913  
    6565
    6666Expr * SymbolTable::IdData::combine( const CodeLocation & loc, ResolvExpr::Cost & cost ) const {
    67         Expr * ret;
    68         if ( baseExpr ) {
    69                 if (baseExpr->env) {
    70                         Expr * base = shallowCopy(baseExpr);
    71                         const TypeSubstitution * subs = baseExpr->env;
    72                         base->env = nullptr;
    73                         ret = new MemberExpr{loc, id, referenceToRvalueConversion( base, cost )};
    74                         ret->env = subs;
    75                 }
    76                 else {
    77                         ret = new MemberExpr{ loc, id, referenceToRvalueConversion( baseExpr, cost ) };
    78                 }
    79         }
    80         else {
    81                 ret = new VariableExpr{ loc, id };
    82         }
     67        Expr * ret = ( baseExpr ) ?
     68                (Expr *)new MemberExpr{ loc, id, referenceToRvalueConversion( baseExpr, cost ) } :
     69                (Expr *)new VariableExpr{ loc, id };
    8370        if ( deleter ) { ret = new DeletedExpr{ loc, ret, deleter }; }
    8471        return ret;
     
    785772                                                && ! dynamic_cast<const UnionInstType *>(rty) ) continue;
    786773                                        ResolvExpr::Cost cost = ResolvExpr::Cost::zero;
    787                                         ast::ptr<ast::TypeSubstitution> tmp = expr->env;
    788                                         expr = mutate_field(expr, &Expr::env, nullptr);
    789774                                        const Expr * base = ResolvExpr::referenceToRvalueConversion( expr, cost );
    790                                         base = mutate_field(base, &Expr::env, tmp);
    791 
    792775                                        addMembers(
    793776                                                rty->aggr(), new MemberExpr{ base->location, dwt, base }, handleConflicts );
Note: See TracChangeset for help on using the changeset viewer.