Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    rd912bed r033ff37  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Dec 16 15:32:22 2019
    13 // Update Count     : 1133
     12// Last Modified On : Thu Jul 25 22:17:10 2019
     13// Update Count     : 1116
    1414//
    1515
     
    2424#include "Common/UniqueName.h"     // for UniqueName
    2525#include "Common/utility.h"        // for maybeClone, maybeBuild, CodeLocation
     26#include "Parser/LinkageSpec.h"    // for Spec, linkageName, Cforall
    2627#include "Parser/ParseNode.h"      // for DeclarationNode, ExpressionNode
    27 #include "SynTree/LinkageSpec.h"   // for Spec, linkageName, Cforall
    2828#include "SynTree/Attribute.h"     // for Attribute
    2929#include "SynTree/Declaration.h"   // for TypeDecl, ObjectDecl, Declaration
     
    4747const char * DeclarationNode::signednessNames[] = { "signed", "unsigned", "NoSignednessNames" };
    4848const char * DeclarationNode::lengthNames[] = { "short", "long", "long long", "NoLengthNames" };
     49const char * DeclarationNode::aggregateNames[] = { "struct", "union", "trait", "coroutine", "monitor", "thread", "NoAggregateNames" };
     50const char * DeclarationNode::typeClassNames[] = { "otype", "dtype", "ftype", "NoTypeClassNames" };
    4951const char * DeclarationNode::builtinTypeNames[] = { "__builtin_va_list", "__auto_type", "zero_t", "one_t", "NoBuiltinTypeNames" };
    5052
     
    5759
    5860//      variable.name = nullptr;
    59         variable.tyClass = TypeDecl::NUMBER_OF_KINDS;
     61        variable.tyClass = NoTypeClass;
    6062        variable.assertions = nullptr;
    6163        variable.initializer = nullptr;
     
    133135
    134136        if ( linkage != LinkageSpec::Cforall ) {
    135                 os << LinkageSpec::name( linkage ) << " ";
     137                os << LinkageSpec::linkageName( linkage ) << " ";
    136138        } // if
    137139
     
    265267}
    266268
    267 DeclarationNode * DeclarationNode::newAggregate( AggregateDecl::Aggregate kind, const string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
     269DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
    268270        DeclarationNode * newnode = new DeclarationNode;
    269271        newnode->type = new TypeData( TypeData::Aggregate );
     
    311313} // DeclarationNode::newFromTypeGen
    312314
    313 DeclarationNode * DeclarationNode::newTypeParam( TypeDecl::Kind tc, const string * name ) {
     315DeclarationNode * DeclarationNode::newTypeParam( TypeClass tc, const string * name ) {
    314316        DeclarationNode * newnode = new DeclarationNode;
    315317        newnode->type = nullptr;
     
    326328        newnode->type = new TypeData( TypeData::Aggregate );
    327329        newnode->type->aggregate.name = name;
    328         newnode->type->aggregate.kind = AggregateDecl::Trait;
     330        newnode->type->aggregate.kind = Trait;
    329331        newnode->type->aggregate.params = params;
    330332        newnode->type->aggregate.fields = asserts;
     
    336338        newnode->type = new TypeData( TypeData::AggregateInst );
    337339        newnode->type->aggInst.aggregate = new TypeData( TypeData::Aggregate );
    338         newnode->type->aggInst.aggregate->aggregate.kind = AggregateDecl::Trait;
     340        newnode->type->aggInst.aggregate->aggregate.kind = Trait;
    339341        newnode->type->aggInst.aggregate->aggregate.name = name;
    340342        newnode->type->aggInst.params = params;
     
    669671
    670672DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) {
    671         if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) {
     673        if ( variable.tyClass != NoTypeClass ) {
    672674                if ( variable.assertions ) {
    673675                        variable.assertions->appendList( assertions );
     
    874876
    875877DeclarationNode * DeclarationNode::addTypeInitializer( DeclarationNode * init ) {
    876         assertf( variable.tyClass != TypeDecl::NUMBER_OF_KINDS, "Called addTypeInitializer on something that isn't a type variable." );
     878        assertf( variable.tyClass != NoTypeClass, "Called addTypeInitializer on something that isn't a type variable." );
    877879        variable.initializer = init;
    878880        return this;
     
    10731075        } // if
    10741076
    1075         if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) {
     1077        if ( variable.tyClass != NoTypeClass ) {
    10761078                // otype is internally converted to dtype + otype parameters
    10771079                static const TypeDecl::Kind kindMap[] = { TypeDecl::Dtype, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype };
    1078                 static_assert( sizeof(kindMap)/sizeof(kindMap[0]) == TypeDecl::NUMBER_OF_KINDS, "DeclarationNode::build: kindMap is out of sync." );
     1080                assertf( sizeof(kindMap)/sizeof(kindMap[0]) == NoTypeClass, "DeclarationNode::build: kindMap is out of sync." );
    10791081                assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." );
    1080                 TypeDecl * ret = new TypeDecl( *name, Type::StorageClasses(), nullptr, kindMap[ variable.tyClass ], variable.tyClass == TypeDecl::Otype, variable.initializer ? variable.initializer->buildType() : nullptr );
     1082                TypeDecl * ret = new TypeDecl( *name, Type::StorageClasses(), nullptr, kindMap[ variable.tyClass ], variable.tyClass == Otype, variable.initializer ? variable.initializer->buildType() : nullptr );
    10811083                buildList( variable.assertions, ret->get_assertions() );
    10821084                return ret;
Note: See TracChangeset for help on using the changeset viewer.