Changeset f2b2029 for src/GenPoly


Ignore:
Timestamp:
Dec 2, 2015, 11:55:55 AM (9 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
0ddb713, e58be8e
Parents:
ed1065c
Message:

documentation in Box.cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Box.cc

    red1065c rf2b2029  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Nov 26 17:01:55 2015
    13 // Update Count     : 191
     12// Last Modified On : Wed Dec 02 11:52:37 2015
     13// Update Count     : 201
    1414//
    1515
     
    183183                }
    184184
     185                // returns true if the given declaration is: (*?=?)(T *, T) for some T (return not checked, but maybe should be)
    185186                bool checkAssignment( DeclarationWithType *decl, std::string &name ) {
    186187                        if ( decl->get_name() == "?=?" ) {
     
    668669                                                TypeInstType *typeInst1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), env, scopeTyVars );
    669670                                                TypeInstType *typeInst2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), env, scopeTyVars );
    670                                                 assert( ! typeInst1 || ! typeInst2 );
     671                                                assert( ! typeInst1 || ! typeInst2 );  // the arguments cannot both be polymorphic pointers
    671672                                                UntypedExpr *ret = 0;
    672                                                 if ( typeInst1 || typeInst2 ) {
     673                                                if ( typeInst1 || typeInst2 ) { // one of the arguments is a polymorphic pointer
    673674                                                        ret = new UntypedExpr( new NameExpr( "?+?" ) );
    674675                                                } // if
     
    866867
    867868                Statement * Pass1::mutate(ReturnStmt *retStmt) {
    868                         // a cast expr on a polymorphic return value is either redundant or invalid
     869                        // by this point, a cast expr on a polymorphic return value is redundant
    869870                        while ( CastExpr *castExpr = dynamic_cast< CastExpr *>( retStmt->get_expr() ) ) {
    870871                                retStmt->set_expr( castExpr->get_arg() );
Note: See TracChangeset for help on using the changeset viewer.