Changeset b2da0574 for src/Parser


Ignore:
Timestamp:
Apr 18, 2018, 5:15:19 PM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, with_gc
Children:
2ae16219
Parents:
f74eb47
Message:

Fix missing struct definition for empty struct with chained variable declarations.

  • turn off body flag on chained declarations
  • check body flag when extracting aggregates
  • update Indexer to check body flag on aggregates
Location:
src/Parser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    rf74eb47 rb2da0574  
    924924                                delete newType->aggInst.aggregate->enumeration.constants;
    925925                                newType->aggInst.aggregate->enumeration.constants = nullptr;
     926                                newType->aggInst.aggregate->enumeration.body = false;
    926927                        } else {
    927928                                assert( newType->aggInst.aggregate->kind == TypeData::Aggregate );
    928929                                delete newType->aggInst.aggregate->aggregate.fields;
    929930                                newType->aggInst.aggregate->aggregate.fields = nullptr;
     931                                newType->aggInst.aggregate->aggregate.body = false;
    930932                        } // if
    931933                        // don't hoist twice
  • src/Parser/TypeData.cc

    rf74eb47 rb2da0574  
    490490        switch ( td->kind ) {
    491491          case TypeData::Aggregate:
    492                 if ( ! toplevel && td->aggregate.fields ) {
     492                if ( ! toplevel && td->aggregate.body ) {
    493493                        ret = td->clone();
    494494                } // if
    495495                break;
    496496          case TypeData::Enum:
    497                 if ( ! toplevel && td->enumeration.constants ) {
     497                if ( ! toplevel && td->enumeration.body ) {
    498498                        ret = td->clone();
    499499                } // if
Note: See TracChangeset for help on using the changeset viewer.