Ignore:
Timestamp:
Feb 8, 2017, 9:09:39 AM (5 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
52c14b3
Parents:
fe26fbf
Message:

added pretty print flag, which currently just turns off name mangling in code gen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/GenType.cc

    rfe26fbf r35b1bf4  
    2828        class GenType : public Visitor {
    2929          public:
    30                 GenType( const std::string &typeString, bool mangle = true );
     30                GenType( const std::string &typeString, bool pretty = false );
    3131                std::string get_typeString() const { return typeString; }
    3232                void set_typeString( const std::string &newValue ) { typeString = newValue; }
     
    5151
    5252                std::string typeString;
    53                 bool mangle = true;
     53                bool pretty = false; // pretty print
    5454        };
    5555
    56         std::string genType( Type *type, const std::string &baseString, bool mangle ) {
    57                 GenType gt( baseString, mangle );
    58                 std::ostringstream os;
    59                
     56        std::string genType( Type *type, const std::string &baseString, bool pretty ) {
     57                GenType gt( baseString, pretty );
     58                std::ostringstream os;
     59
    6060                if ( ! type->get_attributes().empty() ) {
    61                         CodeGenerator cg( os, mangle );
     61                        CodeGenerator cg( os, pretty );
    6262                        cg.genAttributes( type->get_attributes() );
    6363                } // if
     
    6767        }
    6868
    69         GenType::GenType( const std::string &typeString, bool mangle ) : typeString( typeString ), mangle( mangle ) {}
     69  std::string genPrettyType( Type * type, const std::string & baseString ) {
     70        return genType( type, baseString, true );
     71  }
     72
     73        GenType::GenType( const std::string &typeString, bool pretty ) : typeString( typeString ), pretty( pretty ) {}
    7074
    7175        void GenType::visit( VoidType *voidType ) {
     
    108112                } // if
    109113                if ( dimension != 0 ) {
    110                         CodeGenerator cg( os, mangle );
     114                        CodeGenerator cg( os, pretty );
    111115                        dimension->accept( cg );
    112116                } else if ( isVarLen ) {
     
    162166                        } // if
    163167                } else {
    164                         CodeGenerator cg( os, mangle );
     168                        CodeGenerator cg( os, pretty );
    165169                        os << "(" ;
    166170
     
    203207
    204208        void GenType::visit( TupleType * tupleType ) {
    205                 assertf( ! mangle, "Tuple types should not make it to Code Gen." );
     209                assertf( pretty, "Tuple types should not make it to Code Gen." );
    206210                Visitor::visit( tupleType );
     211                unsigned int i = 0;
     212                std::ostringstream os;
     213                os << "[";
     214                for ( Type * t : *tupleType ) {
     215                        i++;
     216                        os << genType( t, "", pretty ) << (i == tupleType->size() ? "" : ", ");
     217                }
     218                os << "]";
     219                typeString = os.str() + typeString;
    207220        }
    208221
     
    214227        void GenType::visit( ZeroType *zeroType ) {
    215228                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    216                 typeString = "long int " + typeString;
     229                typeString = (pretty ? "zero_t " : "long int ") + typeString;
    217230                handleQualifiers( zeroType );
    218231        }
     
    220233        void GenType::visit( OneType *oneType ) {
    221234                // ideally these wouldn't hit codegen at all, but should be safe to make them ints
    222                 typeString = "long int " + typeString;
     235                typeString = (pretty ? "one_t " : "long int ") + typeString;
    223236                handleQualifiers( oneType );
    224237        }
Note: See TracChangeset for help on using the changeset viewer.