Changes in / [acb89ed:02d62bb]


Ignore:
Location:
src
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    racb89ed r02d62bb  
    1313// Update Count     : 485
    1414//
     15#include "CodeGenerator.h"
    1516
    1617#include <cassert>                   // for assert, assertf
    1718#include <list>                      // for _List_iterator, list, list<>::it...
    1819
    19 #include "CodeGenerator.h"
    2020#include "Common/SemanticError.h"    // for SemanticError
    2121#include "Common/UniqueName.h"       // for UniqueName
  • src/CodeGen/GenType.cc

    racb89ed r02d62bb  
    1313// Update Count     : 22
    1414//
     15#include "GenType.h"
    1516
    1617#include <cassert>                // for assert, assertf
     
    1920
    2021#include "CodeGenerator.h"        // for CodeGenerator
    21 #include "GenType.h"
    2222#include "SynTree/Declaration.h"  // for DeclarationWithType
    2323#include "SynTree/Expression.h"   // for Expression
  • src/CodeGen/Generate.cc

    racb89ed r02d62bb  
    1313// Update Count     : 6
    1414//
     15#include "Generate.h"
    1516
    1617#include <iostream>                  // for ostream, endl, operator<<
     
    2021#include "CodeGenerator.h"           // for CodeGenerator, doSemicolon, oper...
    2122#include "GenType.h"                 // for genPrettyType
    22 #include "Generate.h"
    2323#include "Parser/LinkageSpec.h"      // for isBuiltin, isGeneratable
    2424#include "SynTree/BaseSyntaxNode.h"  // for BaseSyntaxNode
  • src/CodeTools/TrackLoc.cc

    racb89ed r02d62bb  
    1616#include "TrackLoc.h"
    1717
    18 #include <cstdlib>                    // for size_t, exit, EXIT_FAILURE
    19 #include <iostream>                   // for operator<<, ostream, basic_ostream
    20 #include <iterator>                   // for back_inserter, inserter
    21 #include <stack>                      // for stack
    22 #include <string>                     // for operator<<, string
    23 #include <typeindex>                  // for type_index
     18#include <cstdlib>                   // for exit, EXIT_FAILURE
     19#include <iostream>                  // for operator<<, ostream, basic_ostream
     20#include <stack>                     // for stack
     21#include <string>                    // for operator<<, string
     22#include <typeindex>                 // for type_index
    2423
    25 #include "Common/PassVisitor.h"       // for PassVisitor
    26 #include "Common/PassVisitor.impl.h"  // for acceptAll
    27 #include "Common/SemanticError.h"     // for SemanticError
    28 #include "Common/utility.h"           // for CodeLocation
    29 #include "SynTree/BaseSyntaxNode.h"   // for BaseSyntaxNode
    30 #include "SynTree/Mutator.h"          // for mutateAll
    31 #include "SynTree/Visitor.h"          // for acceptAll
     24#include "Common/PassVisitor.h"      // for PassVisitor
     25#include "Common/utility.h"          // for CodeLocation
     26#include "SynTree/BaseSyntaxNode.h"  // for BaseSyntaxNode
    3227
    3328class Declaration;
     
    4641                std::stack< CodeLocation * > parents;
    4742        public:
    48                 LocationPrinter(size_t printLevel) : 
     43                LocationPrinter(size_t printLevel) :
    4944                        printLevel(printLevel), lastNode(nullptr)
    5045                {}
     
    6560                                if ( !parents.empty() ) {
    6661                                        node->location = *parents.top();
    67                                 } 
     62                                }
    6863                                else if (nullptr != lastNode) {
    6964                                        node->location = *lastNode;
    70                                 } 
     65                                }
    7166                                else {
    7267                                        std::cerr << "Top level node has no CodeLocation " << name << std::endl;
  • src/Common/PassVisitor.impl.h

    racb89ed r02d62bb  
    11#pragma once
     2// IWYU pragma: private, include "PassVisitor.h"
    23
    34#define VISIT_START( node )                     \
  • src/Common/PassVisitor.proto.h

    racb89ed r02d62bb  
    11#pragma once
     2// IWYU pragma: private, include "PassVisitor.h"
    23
    34template<typename pass_type>
  • src/SymTab/AddVisit.h

    racb89ed r02d62bb  
    1414//
    1515
     16#include "SynTree/Statement.h"
     17
    1618namespace SymTab {
    1719        void addDecls( std::list< Declaration* > &declsToAdd, std::list< Statement* > &statements, std::list< Statement* >::iterator i );
     
    2830
    2931                        if ( stmt == stmts.end() ) break;
    30                        
     32
    3133                        // run mutator on statement
    3234                        maybeAccept( *stmt, visitor );
     
    5961
    6062                        if ( decl == translationUnit.end() ) break;
    61                        
     63
    6264                        // run mutator on declaration
    6365                        maybeAccept( *decl, visitor );
  • src/SymTab/Autogen.cc

    racb89ed r02d62bb  
    1313// Update Count     : 61
    1414//
    15 
    16 #include <list>
    17 #include <iterator>
    18 #include "SynTree/Visitor.h"
    19 #include "SynTree/Type.h"
    20 #include "SynTree/Statement.h"
    21 #include "SynTree/TypeSubstitution.h"
    22 #include "Common/utility.h"
    23 #include "AddVisit.h"
    24 #include "MakeLibCfa.h"
    2515#include "Autogen.h"
    26 #include "GenPoly/ScopedSet.h"
    27 #include "Common/ScopedMap.h"
    28 #include "SymTab/Mangler.h"
    29 #include "GenPoly/DeclMutator.h"
     16
     17#include <algorithm>               // for count_if
     18#include <cassert>                 // for safe_dynamic_cast, assert, assertf
     19#include <iterator>                // for back_insert_iterator, back_inserter
     20#include <list>                    // for list, _List_iterator, list<>::iter...
     21#include <set>                     // for set, _Rb_tree_const_iterator
     22#include <vector>                  // for vector
     23
     24#include "AddVisit.h"              // for addVisit
     25#include "Common/ScopedMap.h"      // for ScopedMap<>::const_iterator, Scope...
     26#include "Common/utility.h"        // for cloneAll, operator+
     27#include "GenPoly/DeclMutator.h"   // for DeclMutator
     28#include "GenPoly/ScopedSet.h"     // for ScopedSet, ScopedSet<>::iterator
     29#include "SymTab/Mangler.h"        // for Mangler
     30#include "SynTree/Mutator.h"       // for maybeMutate
     31#include "SynTree/Statement.h"     // for CompoundStmt, ReturnStmt, ExprStmt
     32#include "SynTree/Type.h"          // for FunctionType, Type, TypeInstType
     33#include "SynTree/Visitor.h"       // for maybeAccept, Visitor, acceptAll
     34
     35class Attribute;
    3036
    3137namespace SymTab {
     
    512518                // Make function polymorphic in same parameters as generic union, if applicable
    513519                const std::list< TypeDecl* > & typeParams = aggregateDecl->get_parameters(); // List of type variables to be placed on the generated functions
    514                
     520
    515521                // default ctor/dtor need only first parameter
    516522                // void ?{}(T *); void ^?{}(T *);
  • src/SymTab/Autogen.h

    racb89ed r02d62bb  
    1717#define AUTOGEN_H
    1818
    19 #include <string>
    20 #include "SynTree/Statement.h"
    21 #include "SynTree/Expression.h"
    22 #include "SynTree/Declaration.h"
    23 #include "SynTree/Initializer.h"
    24 #include "InitTweak/InitTweak.h"
     19#include <cassert>                // for assert
     20#include <iterator>               // for back_insert_iterator, back_inserter
     21#include <list>                   // for list
     22#include <string>                 // for string, operator==
     23
     24#include "Common/UniqueName.h"    // for UniqueName
     25#include "InitTweak/InitTweak.h"  // for InitExpander
     26#include "Parser/LinkageSpec.h"   // for C
     27#include "SynTree/Constant.h"     // for Constant
     28#include "SynTree/Declaration.h"  // for ObjectDecl, Declaration (ptr only)
     29#include "SynTree/Expression.h"   // for UntypedExpr, NameExpr, VariableExpr
     30#include "SynTree/Initializer.h"  // for SingleInit
     31#include "SynTree/Label.h"        // for Label, noLabels
     32#include "SynTree/Statement.h"    // for Statement (ptr only), CompoundStmt
     33#include "SynTree/Type.h"         // for Type, ArrayType, Type::Qualifiers
    2534
    2635namespace SymTab {
     
    155164                if ( isUnnamedBitfield( obj ) ) return;
    156165
    157                 bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && obj->get_bitfieldWidth() == NULL ) );
     166                bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && ! obj->get_bitfieldWidth() ) );
    158167                std::list< Statement * > stmts;
    159168                genCall( srcParam, dstParam, fname, back_inserter( stmts ), obj->get_type(), addCast, forward );
  • src/SymTab/FixFunction.cc

    racb89ed r02d62bb  
    1515
    1616#include "FixFunction.h"
    17 #include "SynTree/Declaration.h"
    18 #include "SynTree/Type.h"
    19 #include "SynTree/Expression.h"
    20 #include "Common/utility.h"
     17
     18#include <list>                   // for list
     19
     20#include "Common/utility.h"       // for maybeClone
     21#include "SynTree/Declaration.h"  // for FunctionDecl, ObjectDecl, Declarati...
     22#include "SynTree/Type.h"         // for ArrayType, PointerType, Type, Basic...
    2123
    2224namespace SymTab {
  • src/SymTab/FixFunction.h

    racb89ed r02d62bb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FixFunction.h -- 
     7// FixFunction.h --
    88//
    99// Author           : Richard C. Bilson
     
    1717#define FIXFUNCTION_H
    1818
    19 #include "SynTree/Mutator.h"
     19#include "SynTree/Mutator.h"  // for Mutator
     20#include "SynTree/SynTree.h"  // for Types
    2021
    2122namespace SymTab {
     
    4445                virtual Type* mutate(ZeroType *zeroType);
    4546                virtual Type* mutate(OneType *oneType);
    46  
     47
    4748                bool isVoid;
    4849        };
  • src/SymTab/ImplementationType.cc

    racb89ed r02d62bb  
    1515
    1616#include "ImplementationType.h"
    17 #include "SynTree/Type.h"
    18 #include "SynTree/Declaration.h"
    19 #include "SynTree/Visitor.h"
    20 #include "SymTab/Indexer.h"
    21 #include "Common/utility.h"
     17
     18#include <list>                   // for list, _List_iterator, list<>::iterator
     19
     20#include "SymTab/Indexer.h"       // for Indexer
     21#include "SynTree/Declaration.h"  // for NamedTypeDecl
     22#include "SynTree/Type.h"         // for TupleType, Type, ArrayType, Pointer...
     23#include "SynTree/Visitor.h"      // for Visitor
    2224
    2325
  • src/SymTab/ImplementationType.h

    racb89ed r02d62bb  
    1717#define IMPLEMENTATIONTYPE_H
    1818
    19 #include "SynTree/SynTree.h"
    20 #include "SymTab/Indexer.h"
     19class Type;
    2120
    2221namespace SymTab {
     22class Indexer;
     23
    2324        Type *implementationType( Type *, const SymTab::Indexer &indexer );
    2425
  • src/SymTab/Indexer.cc

    racb89ed r02d62bb  
    1616#include "Indexer.h"
    1717
    18 #include <string>
    19 #include <typeinfo>
    20 #include <unordered_map>
    21 #include <unordered_set>
    22 #include <utility>
    23 #include <algorithm>
    24 
    25 #include "Mangler.h"
    26 
    27 #include "Common/utility.h"
    28 
    29 #include "ResolvExpr/typeops.h"
    30 
    31 #include "SynTree/Declaration.h"
    32 #include "SynTree/Type.h"
    33 #include "SynTree/Expression.h"
    34 #include "SynTree/Initializer.h"
    35 #include "SynTree/Statement.h"
    36 
    37 #include "InitTweak/InitTweak.h"
     18#include <cassert>                 // for assert, safe_dynamic_cast
     19#include <iostream>                // for operator<<, basic_ostream, ostream
     20#include <string>                  // for string, operator<<, operator!=
     21#include <unordered_map>           // for operator!=, unordered_map<>::const...
     22#include <unordered_set>           // for unordered_set
     23#include <utility>                 // for pair, make_pair, move
     24
     25#include "Common/SemanticError.h"  // for SemanticError
     26#include "Common/utility.h"        // for cloneAll
     27#include "InitTweak/InitTweak.h"   // for isConstructor, isCopyFunction, isC...
     28#include "Mangler.h"               // for Mangler
     29#include "Parser/LinkageSpec.h"    // for isMangled, isOverridable, Spec
     30#include "ResolvExpr/typeops.h"    // for typesCompatible
     31#include "SynTree/Constant.h"      // for Constant
     32#include "SynTree/Declaration.h"   // for DeclarationWithType, FunctionDecl
     33#include "SynTree/Expression.h"    // for Expression, ImplicitCopyCtorExpr
     34#include "SynTree/Initializer.h"   // for Initializer
     35#include "SynTree/Statement.h"     // for CompoundStmt, Statement, ForStmt (...
     36#include "SynTree/Type.h"          // for Type, StructInstType, UnionInstType
    3837
    3938#define debugPrint(x) if ( doDebug ) { std::cout << x; }
  • src/SymTab/Indexer.h

    racb89ed r02d62bb  
    1717#define INDEXER_H
    1818
    19 #include <list>
    20 #include <string>
     19#include <iosfwd>             // for ostream
     20#include <list>               // for list
     21#include <string>             // for string
    2122
    22 #include "SynTree/Visitor.h"
     23#include "SynTree/Visitor.h"  // for Visitor
     24#include "SynTree/SynTree.h"  // for AST nodes
    2325
    2426namespace SymTab {
     
    126128
    127129                struct Impl;
     130
    128131                Impl *tables;         ///< Copy-on-write instance of table data structure
    129132                unsigned long scope;  ///< Scope index of this pointer
  • src/SymTab/Mangler.cc

    racb89ed r02d62bb  
    1313// Update Count     : 21
    1414//
    15 
    16 #include <cassert>
    17 #include <string>
    18 #include <algorithm>
    19 #include <iterator>
    20 #include <functional>
    21 #include <set>
    22 
    23 #include "SynTree/Declaration.h"
    24 #include "SynTree/Type.h"
    25 #include "SynTree/Expression.h"
    26 #include "SynTree/Initializer.h"
    27 #include "SynTree/Statement.h"
    2815#include "Mangler.h"
    29 #include "CodeGen/OperatorTable.h"
     16
     17#include <algorithm>                // for copy, transform
     18#include <cassert>                  // for assert, assertf
     19#include <functional>               // for const_mem_fun_t, mem_fun
     20#include <iterator>                 // for ostream_iterator, back_insert_ite...
     21#include <list>                     // for _List_iterator, list, _List_const...
     22#include <string>                   // for string, operator<<, basic_string
     23
     24#include "CodeGen/OperatorTable.h"  // for OperatorInfo, operatorLookup
     25#include "Common/utility.h"         // for toString
     26#include "Parser/LinkageSpec.h"     // for Spec, isOverridable, AutoGen, Int...
     27#include "SynTree/Declaration.h"    // for TypeDecl, DeclarationWithType
     28#include "SynTree/Expression.h"     // for TypeExpr, Expression, operator<<
     29#include "SynTree/Type.h"           // for Type, ReferenceToType, Type::Fora...
    3030
    3131namespace SymTab {
  • src/SymTab/Mangler.h

    racb89ed r02d62bb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mangler.h -- 
     7// Mangler.h --
    88//
    99// Author           : Richard C. Bilson
     
    1717#define MANGLER_H
    1818
    19 #include <sstream>
    20 #include "SynTree/SynTree.h"
    21 #include "SynTree/Visitor.h"
     19#include <map>                // for map, map<>::value_compare
     20#include <sstream>            // for ostringstream
     21#include <string>             // for string
     22#include <utility>            // for pair
     23
     24#include "SynTree/SynTree.h"  // for Types
     25#include "SynTree/Visitor.h"  // for Visitor, maybeAccept
    2226
    2327namespace SymTab {
     
    4852                virtual void visit( ZeroType *zeroType );
    4953                virtual void visit( OneType *oneType );
    50  
     54
    5155                std::string get_mangleName() { return mangleName.str(); }
    5256          private:
     
    5862                bool mangleOverridable;         ///< Specially mangle overridable built-in methods
    5963                bool typeMode;                  ///< Produce a unique mangled name for a type
    60  
     64
    6165                Mangler( bool mangleOverridable, bool typeMode );
    6266                Mangler( const Mangler & );
    63  
     67
    6468                void mangleDecl( DeclarationWithType *declaration );
    6569                void mangleRef( ReferenceToType *refType, std::string prefix );
    6670                void mangleGenericRef( ReferenceToType *refType, std::string prefix );
    67  
     71
    6872                void printQualifiers( Type *type );
    6973        }; // Mangler
  • src/SymTab/TypeEquality.cc

    racb89ed r02d62bb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeEquality.cc -- 
     7// TypeEquality.cc --
    88//
    99// Author           : Rob Schluntz
     
    1313// Update Count     : 37
    1414//
    15 
    16 #include <list>
    17 #include <iterator>
    18 #include "Validate.h"
    19 #include "SynTree/Visitor.h"
    20 #include "SynTree/Type.h"
    21 #include "SynTree/Statement.h"
    22 #include "SynTree/TypeSubstitution.h"
    23 #include "Indexer.h"
    2415#include "TypeEquality.h"
     16
     17#include <cassert>                // for assert
     18#include <list>                   // for list, list<>::iterator, _List_iterator
     19#include <string>                 // for operator==, string, basic_string
     20
     21#include "SynTree/Constant.h"     // for Constant
     22#include "SynTree/Declaration.h"  // for DeclarationWithType
     23#include "SynTree/Expression.h"   // for ConstantExpr, Expression
     24#include "SynTree/Type.h"         // for Type, ArrayType, FunctionType, Enum...
     25#include "SynTree/Visitor.h"      // for Visitor
    2526
    2627namespace SymTab {
    2728        class TypeEquality : public Visitor {
    2829  public:
    29                 TypeEquality( Type * other, bool vlaErr ) : result( true ), other( other ), 
     30                TypeEquality( Type * other, bool vlaErr ) : result( true ), other( other ),
    3031                        vlaErr( vlaErr ) {}
    3132                bool result;
     
    7172                handleQualifiers( basicType );
    7273                if ( BasicType * bt = dynamic_cast< BasicType * >( other ) ) {
    73                         result = result && basicType->get_kind() == bt->get_kind(); 
     74                        result = result && basicType->get_kind() == bt->get_kind();
    7475                } else {
    7576                        result = false;
     
    9899
    99100                        if ( vlaErr ) {
    100                                 // useful for comparing typedef types - in this case, we 
     101                                // useful for comparing typedef types - in this case, we
    101102                                // want types to appear distinct if either is a VLA type
    102103                                if ( arrayType->get_isVarLen() || at->get_isVarLen() ) {
     
    146147
    147148                        // parameter types must be equivalent
    148                         it1 = funcType->get_parameters().begin(); 
     149                        it1 = funcType->get_parameters().begin();
    149150                        it2 = ft->get_parameters().begin();
    150151                        for ( ; it1 != funcType->get_parameters().end(); ++it1, ++it2 ) {
  • src/SymTab/TypeEquality.h

    racb89ed r02d62bb  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeEquality.h -- 
     7// TypeEquality.h --
    88//
    99// Author           : Rob Schluntz
     
    1414//
    1515
     16class Type;
     17
    1618namespace SymTab {
    1719  // compare types t1 and t2 for equality
    18   // if vlaErr is true, then if at least one of the types is a 
    19   // variable-length array type, then the result will be false 
     20  // if vlaErr is true, then if at least one of the types is a
     21  // variable-length array type, then the result will be false
    2022  bool typeEquals( Type * t1, Type * t2, bool vlaErr = false );
    2123} // namespace SymTab
  • src/SymTab/Validate.cc

    racb89ed r02d62bb  
    3838//   definition occurs later in the input.
    3939
    40 #include <algorithm>
    41 #include <iterator>
    42 #include <list>
    43 
    44 #include "CodeGen/CodeGenerator.h"
    45 
    46 #include "Common/PassVisitor.h"
    47 #include "Common/ScopedMap.h"
    48 #include "Common/UniqueName.h"
    49 #include "Common/utility.h"
    50 
    51 #include "Concurrency/Keywords.h"
    52 
    53 #include "GenPoly/DeclMutator.h"
    54 
    55 #include "InitTweak/InitTweak.h"
    56 
    57 #include "AddVisit.h"
    58 #include "Autogen.h"
    59 #include "FixFunction.h"
    60 // #include "ImplementationType.h"
    61 #include "Indexer.h"
    62 #include "MakeLibCfa.h"
    63 #include "TypeEquality.h"
    6440#include "Validate.h"
    6541
    66 #include "ResolvExpr/typeops.h"
    67 
    68 #include "SynTree/Attribute.h"
    69 #include "SynTree/Expression.h"
    70 #include "SynTree/Mutator.h"
    71 #include "SynTree/Statement.h"
    72 #include "SynTree/Type.h"
    73 #include "SynTree/TypeSubstitution.h"
    74 #include "SynTree/Visitor.h"
     42#include <cstddef>                     // for size_t
     43#include <algorithm>                   // for move, transform
     44#include <cassert>                     // for safe_dynamic_cast, assertf
     45#include <iterator>                    // for back_inserter, inserter, back_...
     46#include <list>                        // for list, _List_iterator, list<>::...
     47#include <map>                         // for _Rb_tree_iterator, map, map<>:...
     48#include <memory>                      // for unique_ptr, allocator
     49#include <string>                      // for string, operator+, operator==
     50#include <tuple>                       // for get
     51#include <utility>                     // for pair, make_pair
     52
     53#include "AddVisit.h"                  // for addVisit
     54#include "Autogen.h"                   // for SizeType, autogenerateRoutines
     55#include "CodeGen/CodeGenerator.h"     // for genName
     56#include "Common/PassVisitor.h"        // for PassVisitor, WithDeclsToAdd
     57#include "Common/ScopedMap.h"          // for ScopedMap<>::const_iterator
     58#include "Common/SemanticError.h"      // for SemanticError
     59#include "Common/UniqueName.h"         // for UniqueName
     60#include "Common/utility.h"            // for operator+, cloneAll, deleteAll
     61#include "Concurrency/Keywords.h"      // for applyKeywords, implementMutexF...
     62#include "FixFunction.h"               // for FixFunction
     63#include "Indexer.h"                   // for Indexer
     64#include "InitTweak/InitTweak.h"       // for isCtorDtor, isCtorDtorAssign
     65#include "Parser/LinkageSpec.h"        // for C, Cforall
     66#include "ResolvExpr/typeops.h"        // for extractResultType, typesCompat...
     67#include "SynTree/Attribute.h"         // for Attribute
     68#include "SynTree/Constant.h"          // for Constant
     69#include "SynTree/Declaration.h"       // for EnumDecl, StructDecl, UnionDecl
     70#include "SynTree/Expression.h"        // for TypeExpr, CompoundLiteralExpr
     71#include "SynTree/Initializer.h"       // for ListInit, Initializer, noDesig...
     72#include "SynTree/Mutator.h"           // for mutateAll, Mutator
     73#include "SynTree/Statement.h"         // for CompoundStmt, DeclStmt, Return...
     74#include "SynTree/Type.h"              // for Type, TypeInstType, TraitInstType
     75#include "SynTree/TypeSubstitution.h"  // for TypeSubstitution, applySubstit...
     76#include "SynTree/Visitor.h"           // for acceptAll, Visitor
    7577
    7678#define debugPrint( x ) if ( doDebug ) { std::cout << x; }
     
    605607                // a return statement in a void-returning function in C. The expression is treated as if it
    606608                // were cast to void.
    607                 if ( returnStmt->get_expr() == NULL && returnVals.size() != 0 ) {
     609                if ( ! returnStmt->get_expr() && returnVals.size() != 0 ) {
    608610                        throw SemanticError( "Non-void function returns no values: " , returnStmt );
    609611                }
     
    836838        void validateGeneric( Aggr * inst ) {
    837839                std::list< TypeDecl * > * params = inst->get_baseParameters();
    838                 if ( params != NULL ) {
     840                if ( params ) {
    839841                        std::list< Expression * > & args = inst->get_parameters();
    840842
     
    937939        void ArrayLength::previsit( ObjectDecl * objDecl ) {
    938940                if ( ArrayType * at = dynamic_cast< ArrayType * >( objDecl->get_type() ) ) {
    939                         if ( at->get_dimension() != nullptr ) return;
     941                        if ( at->get_dimension() ) return;
    940942                        if ( ListInit * init = dynamic_cast< ListInit * >( objDecl->get_init() ) ) {
    941943                                at->set_dimension( new ConstantExpr( Constant::from_ulong( init->get_initializers().size() ) ) );
  • src/SymTab/Validate.h

    racb89ed r02d62bb  
    1818#define VALIDATE_H
    1919
    20 #include "SynTree/SynTree.h"
     20#include <list>  // for list
     21
     22class Declaration;
     23class Type;
    2124
    2225namespace SymTab {
Note: See TracChangeset for help on using the changeset viewer.