Ignore:
Timestamp:
Apr 6, 2016, 5:11:32 PM (8 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, with_gc
Children:
eab39cd
Parents:
39786813 (diff), 3aba311 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'fix-memory-error' into ctor

Conflicts:

src/CodeGen/CodeGenerator.cc
src/Makefile.in
src/Parser/DeclarationNode.cc
src/Parser/ParseNode.h
src/Parser/TypeData.cc
src/Parser/parser.cc
src/Parser/parser.yy
src/ResolvExpr/Resolver.cc
src/SymTab/Validate.cc
src/SynTree/Declaration.h
src/SynTree/Mutator.cc
src/SynTree/Mutator.h
src/SynTree/SynTree.h
src/SynTree/Visitor.cc
src/SynTree/Visitor.h
src/libcfa/prelude.cf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/TypeData.cc

    r39786813 ra5a71d0  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jan 14 10:43:42 2016
    13 // Update Count     : 36
     12// Last Modified On : Wed Apr 06 16:57:53 2016
     13// Update Count     : 49
    1414//
    1515
     
    2323#include "SynTree/Expression.h"
    2424#include "SynTree/Statement.h"
     25#include "SynTree/Initializer.h"
    2526
    2627TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
     
    8485                typeexpr->expr = 0;
    8586                break;
     87          case Builtin:
     88                builtin = new Builtin_t;
     89                break;
    8690          case Attr:
    8791                attr = new Attr_t;
     
    149153                delete typeexpr->expr;
    150154                delete typeexpr;
     155                break;
     156          case Builtin:
     157                delete builtin;
    151158                break;
    152159          case Attr:
     
    221228                newtype->typeexpr->expr = maybeClone( typeexpr->expr );
    222229                break;
     230          case Builtin:
     231                newtype->builtin->type = builtin->type;
     232                break;
    223233          case Attr:
    224234                newtype->attr->expr = maybeClone( attr->expr );
     
    396406                        attr->type->print( os, indent + 2 );
    397407                } // if
     408                break;
     409          case Builtin:
     410                os << "gcc builtin type";
    398411                break;
    399412          default:
     
    524537          case Typeof:
    525538                return buildTypeof();
     539          case Builtin:
     540                return new VarArgsType( buildQualifiers() );
    526541          case Attr:
    527542                return buildAttr();
     
    823838                buildForall( aggregate->params, at->get_parameters() );
    824839                break;
    825           case DeclarationNode::Context:
    826                 at = new ContextDecl( aggregate->name );
     840          case DeclarationNode::Trait:
     841                at = new TraitDecl( aggregate->name );
    827842                buildList( aggregate->params, at->get_parameters() );
    828843                break;
     
    863878                        ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    864879                        break;
    865                   case DeclarationNode::Context:
    866                         ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
     880                  case DeclarationNode::Trait:
     881                        ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    867882                        break;
    868883                  default:
     
    901916        EnumDecl *ret = new EnumDecl( enumeration->name );
    902917        buildList( enumeration->constants, ret->get_members() );
     918        std::list< Declaration * >::iterator members = ret->get_members().begin();
     919        for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {
     920                if ( cur->get_enumeratorValue() != NULL ) {
     921                        ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
     922                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
     923                } // if
     924        } // for
    903925        return ret;
    904926}
Note: See TracChangeset for help on using the changeset viewer.