Changes in / [f6964ef:675d816]


Ignore:
Location:
src
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    rf6964ef r675d816  
    1616#include "Convert.hpp"
    1717
     18#include "AST/Pass.hpp"
     19
    1820#include "AST/Attribute.hpp"
    1921#include "AST/Decl.hpp"
     
    2123#include "AST/Init.hpp"
    2224#include "AST/Stmt.hpp"
    23 #include "AST/TypeSubstitution.hpp"
     25
    2426
    2527#include "SynTree/Attribute.h"
    2628#include "SynTree/Declaration.h"
    27 #include "SynTree/TypeSubstitution.h"
    2829
    2930//================================================================================================
     
    11711172        }
    11721173
    1173         ast::TypeSubstitution * convertTypeSubstitution(const TypeSubstitution * old) {
    1174 
    1175                 ast::TypeSubstitution *rslt = new ast::TypeSubstitution();
    1176 
    1177                 for (decltype(old->begin()) old_i = old->begin(); old_i != old->end(); old_i++) {
    1178                         rslt->add( old_i->first,
    1179                                    getAccept1<ast::Type>(old_i->second) );
    1180                 }
    1181 
    1182                 for (decltype(old->beginVar()) old_i = old->beginVar(); old_i != old->endVar(); old_i++) {
    1183                         rslt->addVar( old_i->first,
    1184                                       getAccept1<ast::Expr>(old_i->second) );
    1185                 }
    1186         }
    1187 
    1188         void convertInferUnion(ast::Expr::InferUnion &nwInferred, InferredParams oldInferParams, const std::vector<UniqueId> &oldResnSlots) {
    1189                
    1190                 (void) nwInferred;
    1191                 (void) oldInferParams;
    1192                 (void) oldResnSlots;
    1193                
    1194                 // TODO
    1195         }
    1196 
    1197         ast::Expr * visitBaseExpr(Expression * old, ast::Expr * nw) {
    1198 
    1199                 nw->result = GET_ACCEPT_1(result, Type);
    1200                 nw->env    = convertTypeSubstitution(old->env);
    1201 
    1202                 nw->extension = old->extension;
    1203                 convertInferUnion(nw->inferred, old->inferParams, old->resnSlots);
    1204 
    1205                 return nw;
    1206         }
    1207 
    12081174        virtual void visit( ApplicationExpr * ) override final {
    1209                 // TODO
     1175
    12101176        }
    12111177
    12121178        virtual void visit( UntypedExpr * ) override final {
    1213                 // TODO
    1214         }
    1215 
    1216         virtual void visit( NameExpr * old ) override final {
    1217                 this->node = visitBaseExpr( old,
    1218                         new ast::NameExpr(
    1219                                 old->location,
    1220                                 old->get_name()
    1221                         )
    1222                 );
     1179
     1180        }
     1181
     1182        virtual void visit( NameExpr * ) override final {
     1183
    12231184        }
    12241185
    12251186        virtual void visit( CastExpr * ) override final {
    1226                 // TODO ... (rest)
     1187
    12271188        }
    12281189
  • src/AST/Pass.hpp

    rf6964ef r675d816  
    300300#include "Common/Stats.h"
    301301
    302 namespace ast {
    303302extern struct PassVisitorStats {
    304303        size_t depth = 0;
     
    306305        Stats::Counters::AverageCounter<double> * avg = nullptr;
    307306} pass_visitor_stats;
    308 }
    309307
    310308#include "AST/Pass.impl.hpp"
  • src/AST/TypeSubstitution.cpp

    rf6964ef r675d816  
    5858void TypeSubstitution::add( std::string formalType, const Type *actualType ) {
    5959        typeEnv[ formalType ] = actualType;
    60 }
    61 
    62 void TypeSubstitution::addVar( std::string formalExpr, const Expr *actualExpr ) {
    63         varEnv[ formalExpr ] = actualExpr;
    6460}
    6561
  • src/AST/TypeSubstitution.hpp

    rf6964ef r675d816  
    5252        bool empty() const;
    5353
    54         void addVar( std::string formalExpr, const Expr *actualExpr );
    55 
    5654        template< typename FormalIterator, typename ActualIterator >
    5755        void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin );
     
    8987        auto begin() const -> decltype( typeEnv.begin() ) { return typeEnv.begin(); }
    9088        auto   end() const -> decltype( typeEnv.  end() ) { return typeEnv.  end(); }
    91 
    92         auto beginVar()       -> decltype( varEnv.begin() ) { return varEnv.begin(); }
    93         auto   endVar()       -> decltype( varEnv.  end() ) { return varEnv.  end(); }
    94         auto beginVar() const -> decltype( varEnv.begin() ) { return varEnv.begin(); }
    95         auto   endVar() const -> decltype( varEnv.  end() ) { return varEnv.  end(); }
    9689};
    9790
  • src/SynTree/TypeSubstitution.cc

    rf6964ef r675d816  
    6262        } // if
    6363        typeEnv[ formalType ] = actualType->clone();
    64 }
    65 
    66 void TypeSubstitution::addVar( std::string formalExpr, Expression *actualExpr ) {
    67         varEnv[ formalExpr ] = actualExpr;
    6864}
    6965
  • src/SynTree/TypeSubstitution.h

    rf6964ef r675d816  
    4848        bool empty() const;
    4949
    50         void addVar( std::string formalExpr, Expression *actualExpr );
    51 
    5250        template< typename FormalIterator, typename ActualIterator >
    5351        void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin );
     
    9189        auto begin() const -> decltype( typeEnv.begin() ) { return typeEnv.begin(); }
    9290        auto   end() const -> decltype( typeEnv.  end() ) { return typeEnv.  end(); }
    93 
    94         auto beginVar()       -> decltype( varEnv.begin() ) { return varEnv.begin(); }
    95         auto   endVar()       -> decltype( varEnv.  end() ) { return varEnv.  end(); }
    96         auto beginVar() const -> decltype( varEnv.begin() ) { return varEnv.begin(); }
    97         auto   endVar() const -> decltype( varEnv.  end() ) { return varEnv.  end(); }
    9891};
    9992
Note: See TracChangeset for help on using the changeset viewer.