Changeset 2345ab3


Ignore:
Timestamp:
Dec 5, 2023, 11:13:59 AM (5 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
1c85ffc
Parents:
e274264
Message:

Clean-up of the chain mutator. Seems like it is underused.

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Chain.hpp

    re274264 r2345ab3  
    3333        template<typename actual_node_t, typename child_t>
    3434        auto operator()( child_t actual_node_t::*child ) {
    35                 auto n = mutate(base.get());
     35                node_t * n = base.get_and_mutate();
    3636                actual_node_t * node = strict_dynamic_cast<actual_node_t *>(n);
    37                 base = node;
    3837                return _chain_mutator< typename std::remove_reference< decltype(node->*child) >::type >{node->*child};
    3938        }
    4039
    4140        node_t * operator->() {
    42                 auto n = mutate(base.get());
    43                 base = n;
    44                 return n;
     41                return base.get_and_mutate();
    4542        }
    4643};
  • src/ResolvExpr/Resolver.cc

    re274264 r2345ab3  
    2929#include "Unify.h"                       // for unify
    3030#include "CompilationState.h"
    31 #include "AST/Chain.hpp"
    3231#include "AST/Decl.hpp"
    3332#include "AST/Init.hpp"
     
    104103                                                                }
    105104                                                        }
    106                                                 } 
    107                                         } 
     105                                                }
     106                                        }
    108107                                        visit_children = false;
    109108                                }
     
    607606                                ( objectDecl->get_type() )->base->base ) {
    608607                                objectDecl = fixObjectType( objectDecl, context );
    609                                 currentObject = ast::CurrentObject{ 
    610                                         objectDecl->location, 
     608                                currentObject = ast::CurrentObject{
     609                                        objectDecl->location,
    611610                                        enumBase
    612611                                };
Note: See TracChangeset for help on using the changeset viewer.