Ignore:
Timestamp:
Jun 20, 2019, 6:50:42 PM (5 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
9af00d23
Parents:
234b1cb
Message:

new AST porting

  • mostly InitTweak? autogeneration
  • added some convenience methods
    • nullptr assignment for ast::ptr
    • convenience wrapper ctors for AddressExpr?, CastExpr? that draw location from first arg
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tuples/TupleAssignment.cc

    r234b1cb rb8524ca  
    464464                                        // resolve ctor/dtor for the new object
    465465                                        ast::ptr< ast::Init > ctorInit = ResolvExpr::resolveCtorInit(
    466                                                         InitTweak::genCtorInit( ret ), spotter.crntFinder.symtab );
     466                                                        InitTweak::genCtorInit( location, ret ), spotter.crntFinder.symtab );
    467467                                        // remove environments from subexpressions of stmtExpr
    468468                                        ast::Pass< EnvRemover > rm{ env };
     
    550550                                        // is && and RHS is lvalue
    551551                                        auto lhsType = lhsCand->expr->result.strict_as< ast::ReferenceType >();
    552                                         rhsCand->expr = new ast::CastExpr{
    553                                                 rhsCand->expr->location, rhsCand->expr, lhsType->base };
     552                                        rhsCand->expr = new ast::CastExpr{ rhsCand->expr, lhsType->base };
    554553                                        ast::ptr< ast::ObjectDecl > lobj = newObject( lhsNamer, lhsCand->expr );
    555554                                        ast::ptr< ast::ObjectDecl > robj = newObject( rhsNamer, rhsCand->expr );
     
    604603                                        if ( ! lhsCand->expr.as< ast::CastExpr >() ) {
    605604                                                lhsCand->expr = new ast::CastExpr{
    606                                                         lhsCand->expr->location, lhsCand->expr,
    607                                                         new ast::ReferenceType{ lhsCand->expr->result } };
     605                                                        lhsCand->expr, new ast::ReferenceType{ lhsCand->expr->result } };
    608606                                        }
    609607
     
    616614                                                if ( ! cand->expr->result.as< ast::ReferenceType >() ) {
    617615                                                        cand->expr = new ast::CastExpr{
    618                                                                 cand->expr->location, cand->expr,
    619                                                                 new ast::ReferenceType{ cand->expr->result } };
     616                                                                cand->expr, new ast::ReferenceType{ cand->expr->result } };
    620617                                                }
    621618                                        }
Note: See TracChangeset for help on using the changeset viewer.