Changeset 07de76b
- Timestamp:
- Dec 16, 2019, 2:30:41 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- bffcd66
- Parents:
- ab5c0008
- git-author:
- Peter A. Buhr <pabuhr@…> (12/16/19 14:23:00)
- git-committer:
- Peter A. Buhr <pabuhr@…> (12/16/19 14:30:41)
- Files:
-
- 1 deleted
- 54 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
rab5c0008 r07de76b 10 10 // Created On : Thu May 09 15::37::05 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 10 22:20:10201913 // Update Count : 3 212 // Last Modified On : Wed Dec 11 21:39:32 2019 13 // Update Count : 33 14 14 // 15 15 … … 1223 1223 cv( node ), 1224 1224 node->name, 1225 node->kind == ast::Type Var::Ftype,1225 node->kind == ast::TypeDecl::Ftype, 1226 1226 get<Attribute>().acceptL( node->attributes ) 1227 1227 }; … … 1578 1578 { old->storageClasses.val }, 1579 1579 GET_ACCEPT_1(base, Type), 1580 (ast::Type Var::Kind)(unsigned)old->kind,1580 (ast::TypeDecl::Kind)(unsigned)old->kind, 1581 1581 old->sized, 1582 1582 GET_ACCEPT_1(init, Type) … … 2561 2561 ty = new ast::TypeInstType{ 2562 2562 old->name, 2563 old->isFtype ? ast::Type Var::Ftype : ast::TypeVar::Dtype,2563 old->isFtype ? ast::TypeDecl::Ftype : ast::TypeDecl::Dtype, 2564 2564 cv( old ), 2565 2565 GET_ACCEPT_V( attributes, Attribute ) -
src/AST/Decl.cpp
rab5c0008 r07de76b 10 10 // Created On : Thu May 9 10:00:00 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 16:41:39201913 // Update Count : 1812 // Last Modified On : Fri Dec 13 16:23:15 2019 13 // Update Count : 20 14 14 // 15 15 … … 26 26 #include "Node.hpp" // for readonly 27 27 #include "Type.hpp" // for readonly 28 #include "Parser/ParseNode.h" // for DeclarationNode29 28 30 29 namespace ast { … … 56 55 57 56 const char * TypeDecl::typeString() const { 58 static const char * kindNames[] = { "sized object type", "sized function type", "sized tuple type" }; 59 assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, 60 "typeString: kindNames is out of sync." ); 61 assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl's kind is out of bounds." ); 57 static const char * kindNames[] = { "sized data type", "sized object type", "sized function type", "sized tuple type" }; 58 static_assert( sizeof(kindNames)/sizeof(kindNames[0]) == TypeDecl::NUMBER_OF_KINDS, "typeString: kindNames is out of sync." ); 59 assertf( kind < TypeDecl::NUMBER_OF_KINDS, "TypeDecl kind is out of bounds." ); 62 60 return sized ? kindNames[ kind ] : &kindNames[ kind ][ sizeof("sized") ]; // sizeof includes '\0' 63 61 } 64 62 65 63 const char * TypeDecl::genTypeString() const { 66 static const char * kindNames[] = { "dtype", " ftype", "ttype" };67 assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, "genTypeString: kindNames is out of sync." );68 assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl'skind is out of bounds." );64 static const char * kindNames[] = { "dtype", "otype", "ftype", "ttype" }; 65 static_assert( sizeof(kindNames)/sizeof(kindNames[0]) == TypeDecl::NUMBER_OF_KINDS, "genTypeString: kindNames is out of sync." ); 66 assertf( kind < TypeDecl::NUMBER_OF_KINDS, "TypeDecl kind is out of bounds." ); 69 67 return kindNames[ kind ]; 70 68 } -
src/AST/Decl.hpp
rab5c0008 r07de76b 10 10 // Created On : Thu May 9 10:00:00 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 08:20:20201913 // Update Count : 1612 // Last Modified On : Fri Dec 13 17:38:33 2019 13 // Update Count : 29 14 14 // 15 15 … … 20 20 #include <unordered_map> 21 21 #include <vector> 22 #include <algorithm> 22 23 23 24 #include "FunctionSpec.hpp" … … 27 28 #include "ParseNode.hpp" 28 29 #include "StorageClasses.hpp" 29 #include "TypeVar.hpp"30 30 #include "Visitor.hpp" 31 #include "Parser/ParseNode.h" // for DeclarationNode::Aggregate 31 #include "Common/utility.h" 32 #include "Common/SemanticError.h" // error_str 32 33 33 34 // Must be included in *all* AST classes; should be #undef'd at the end of the file … … 125 126 std::vector< ptr<Expr> > withExprs; 126 127 127 FunctionDecl( const CodeLocation & loc, const std::string & name, FunctionType * type,128 FunctionDecl( const CodeLocation & loc, const std::string & name, FunctionType * type, 128 129 CompoundStmt * stmts, Storage::Classes storage = {}, Linkage::Spec linkage = Linkage::C, 129 130 std::vector<ptr<Attribute>>&& attrs = {}, Function::Specs fs = {}) … … 136 137 bool has_body() const { return stmts; } 137 138 138 const DeclWithType * accept( Visitor & v ) const override { return v.visit( this ); }139 const DeclWithType * accept( Visitor & v ) const override { return v.visit( this ); } 139 140 private: 140 141 FunctionDecl * clone() const override { return new FunctionDecl( *this ); } … … 163 164 /// Cforall type variable: `dtype T` 164 165 class TypeDecl final : public NamedTypeDecl { 165 public: 166 TypeVar::Kind kind; 166 public: 167 enum Kind { Dtype, Otype, Ftype, Ttype, NUMBER_OF_KINDS }; 168 169 Kind kind; 167 170 bool sized; 168 171 ptr<Type> init; … … 170 173 /// Data extracted from a type decl 171 174 struct Data { 172 TypeVar::Kind kind;175 Kind kind; 173 176 bool isComplete; 174 177 175 Data() : kind( (TypeVar::Kind)-1), isComplete( false ) {}178 Data() : kind( NUMBER_OF_KINDS ), isComplete( false ) {} 176 179 Data( const TypeDecl * d ) : kind( d->kind ), isComplete( d->sized ) {} 177 Data( TypeVar::Kind k, bool c ) : kind( k ), isComplete( c ) {}180 Data( Kind k, bool c ) : kind( k ), isComplete( c ) {} 178 181 Data( const Data & d1, const Data & d2 ) 179 : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {} 180 181 bool operator== ( const Data & o ) const { 182 return kind == o.kind && isComplete == o.isComplete; 183 } 184 bool operator!= ( const Data & o ) const { return !(*this == o); } 182 : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {} 183 184 bool operator==( const Data & o ) const { return kind == o.kind && isComplete == o.isComplete; } 185 bool operator!=( const Data & o ) const { return !(*this == o); } 185 186 }; 186 187 187 TypeDecl( const CodeLocation & loc, const std::string& name, Storage::Classes storage, Type* b,188 TypeVar::Kind k, bool s, Type* i = nullptr )189 : NamedTypeDecl( loc, name, storage, b ), kind( k ), sized( k == TypeVar::Ttype || s ),190 188 TypeDecl( const CodeLocation & loc, const std::string & name, Storage::Classes storage, Type * b, 189 Kind k, bool s, Type * i = nullptr ) 190 : NamedTypeDecl( loc, name, storage, b ), kind( k ), sized( k == Ttype || s ), 191 init( i ) {} 191 192 192 193 const char * typeString() const override; … … 198 199 199 200 const Decl * accept( Visitor & v ) const override { return v.visit( this ); } 200 private:201 private: 201 202 TypeDecl * clone() const override { return new TypeDecl{ *this }; } 202 203 MUTATE_FRIEND … … 343 344 ptr<AsmStmt> stmt; 344 345 345 AsmDecl( const CodeLocation & loc, AsmStmt * stmt )346 AsmDecl( const CodeLocation & loc, AsmStmt * stmt ) 346 347 : Decl( loc, "", {}, {} ), stmt(stmt) {} 347 348 348 const AsmDecl * accept( Visitor & v ) const override { return v.visit( this ); }349 private: 350 AsmDecl * clone() const override { return new AsmDecl( *this ); }349 const AsmDecl * accept( Visitor & v ) const override { return v.visit( this ); } 350 private: 351 AsmDecl * clone() const override { return new AsmDecl( *this ); } 351 352 MUTATE_FRIEND 352 353 }; … … 360 361 : Decl( loc, "", {}, {} ), cond( condition ), msg( msg ) {} 361 362 362 const StaticAssertDecl * accept( Visitor & v ) const override { return v.visit( this ); }363 const StaticAssertDecl * accept( Visitor & v ) const override { return v.visit( this ); } 363 364 private: 364 365 StaticAssertDecl * clone() const override { return new StaticAssertDecl( *this ); } -
src/AST/Print.cpp
rab5c0008 r07de76b 1359 1359 preprint( node ); 1360 1360 os << "instance of type " << node->name 1361 << " (" << (node->kind == ast::Type Var::Ftype ? "" : "not ") << "function type)";1361 << " (" << (node->kind == ast::TypeDecl::Ftype ? "" : "not ") << "function type)"; 1362 1362 print( node->params ); 1363 1363 -
src/AST/Type.hpp
rab5c0008 r07de76b 9 9 // Author : Aaron B. Moss 10 10 // Created On : Thu May 9 10:00:00 2019 11 // Last Modified By : Aaron B. Moss12 // Last Modified On : Thu May 9 10:00:00201913 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 21:56:46 2019 13 // Update Count : 5 14 14 // 15 15 … … 26 26 #include "Fwd.hpp" 27 27 #include "Node.hpp" // for Node, ptr, ptr_base 28 #include "TypeVar.hpp"29 28 #include "Visitor.hpp" 30 29 … … 423 422 public: 424 423 readonly<TypeDecl> base; 425 Type Var::Kind kind;424 TypeDecl::Kind kind; 426 425 427 426 TypeInstType( const std::string& n, const TypeDecl * b, CV::Qualifiers q = {}, 428 427 std::vector<ptr<Attribute>> && as = {} ) 429 428 : ReferenceToType( n, q, std::move(as) ), base( b ), kind( b->kind ) {} 430 TypeInstType( const std::string& n, Type Var::Kind k, CV::Qualifiers q = {},429 TypeInstType( const std::string& n, TypeDecl::Kind k, CV::Qualifiers q = {}, 431 430 std::vector<ptr<Attribute>> && as = {} ) 432 431 : ReferenceToType( n, q, std::move(as) ), base(), kind( k ) {} -
src/AST/TypeEnvironment.cpp
rab5c0008 r07de76b 9 9 // Author : Aaron B. Moss 10 10 // Created On : Wed May 29 11:00:00 2019 11 // Last Modified By : Aaron B. Moss12 // Last Modified On : Wed May 29 11:00:00201913 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 21:49:13 2019 13 // Update Count : 4 14 14 // 15 15 … … 240 240 return true; 241 241 } else if ( auto typeInst = dynamic_cast< const TypeInstType * >( type ) ) { 242 return typeInst->kind == Type Var::Ftype;242 return typeInst->kind == TypeDecl::Ftype; 243 243 } else return false; 244 244 } … … 248 248 bool tyVarCompatible( const TypeDecl::Data & data, const Type * type ) { 249 249 switch ( data.kind ) { 250 case Type Var::Dtype:250 case TypeDecl::Dtype: 251 251 // to bind to an object type variable, the type must not be a function type. 252 252 // if the type variable is specified to be a complete type then the incoming … … 254 254 // xxx - should this also check that type is not a tuple type and that it's not a ttype? 255 255 return ! isFtype( type ) && ( ! data.isComplete || type->isComplete() ); 256 case Type Var::Ftype:256 case TypeDecl::Ftype: 257 257 return isFtype( type ); 258 case Type Var::Ttype:258 case TypeDecl::Ttype: 259 259 // ttype unifies with any tuple type 260 260 return dynamic_cast< const TupleType * >( type ) || Tuples::isTtype( type ); -
src/AST/TypeEnvironment.hpp
rab5c0008 r07de76b 9 9 // Author : Aaron B. Moss 10 10 // Created On : Wed May 29 11:00:00 2019 11 // Last Modified By : Aaron B. Moss12 // Last Modified On : Wed May 29 11:00:00201913 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 21:55:54 2019 13 // Update Count : 3 14 14 // 15 15 … … 28 28 #include "Type.hpp" 29 29 #include "TypeSubstitution.hpp" 30 #include "TypeVar.hpp"31 30 #include "Common/Indenter.h" 32 31 #include "ResolvExpr/WidenMode.h" … … 107 106 /// Singleton class constructor from substitution 108 107 EqvClass( const std::string & v, const Type * b ) 109 : vars{ v }, bound( b ), allowWidening( false ), data( Type Var::Dtype, false ) {}108 : vars{ v }, bound( b ), allowWidening( false ), data( TypeDecl::Dtype, false ) {} 110 109 111 110 /// Single-var constructor (strips qualifiers from bound type) -
src/AST/module.mk
rab5c0008 r07de76b 10 10 ## Author : Thierry Delisle 11 11 ## Created On : Thu May 09 16:05:36 2019 12 ## Last Modified By : 13 ## Last Modified On : 14 ## Update Count : 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Sat Dec 14 07:29:10 2019 14 ## Update Count : 3 15 15 ############################################################################### 16 16 … … 34 34 AST/TypeSubstitution.cpp 35 35 36 37 38 36 SRC += $(SRC_AST) 39 37 SRCDEMANGLE += $(SRC_AST) -
src/CodeGen/CodeGenerator.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Oct 19 19:30:38 201913 // Update Count : 50 612 // Last Modified On : Fri Dec 13 23:13:28 2019 13 // Update Count : 508 14 14 // 15 15 #include "CodeGenerator.h" … … 23 23 #include "InitTweak/InitTweak.h" // for getPointerBase 24 24 #include "OperatorTable.h" // for OperatorInfo, operatorLookup 25 #include " Parser/LinkageSpec.h"// for Spec, Intrinsic25 #include "SynTree/LinkageSpec.h" // for Spec, Intrinsic 26 26 #include "SynTree/Attribute.h" // for Attribute 27 27 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode -
src/CodeGen/FixMain.h
rab5c0008 r07de76b 10 10 // Created On : Thr Jan 12 14:11:09 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:16:59 201713 // Update Count : 112 // Last Modified On : Fri Dec 13 23:12:21 2019 13 // Update Count : 3 14 14 // 15 15 … … 19 19 #include <memory> 20 20 21 #include " Parser/LinkageSpec.h"21 #include "SynTree/LinkageSpec.h" 22 22 23 23 class FunctionDecl; -
src/CodeGen/FixNames.cc
rab5c0008 r07de76b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Jun 28 15:26:00 201713 // Update Count : 2 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:39:14 2019 13 // Update Count : 21 14 14 // 15 15 … … 22 22 #include "Common/SemanticError.h" // for SemanticError 23 23 #include "FixMain.h" // for FixMain 24 #include "Parser/LinkageSpec.h" // for Cforall, isMangled25 24 #include "SymTab/Mangler.h" // for Mangler 25 #include "SynTree/LinkageSpec.h" // for Cforall, isMangled 26 26 #include "SynTree/Constant.h" // for Constant 27 27 #include "SynTree/Declaration.h" // for FunctionDecl, ObjectDecl, Declarat... -
src/CodeGen/Generate.cc
rab5c0008 r07de76b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Aug 18 15:39:00 201713 // Update Count : 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:38:56 2019 13 // Update Count : 8 14 14 // 15 15 #include "Generate.h" … … 22 22 #include "GenType.h" // for genPrettyType 23 23 #include "Common/PassVisitor.h" // for PassVisitor 24 #include " Parser/LinkageSpec.h"// for isBuiltin, isGeneratable24 #include "SynTree/LinkageSpec.h" // for isBuiltin, isGeneratable 25 25 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode 26 26 #include "SynTree/Declaration.h" // for Declaration -
src/CodeGen/module.mk
rab5c0008 r07de76b 11 11 ## Created On : Mon Jun 1 17:49:17 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Tue Jun 2 11:17:02 201514 ## Update Count : 313 ## Last Modified On : Sat Dec 14 07:29:42 2019 14 ## Update Count : 4 15 15 ############################################################################### 16 16 … … 24 24 CodeGen/OperatorTable.cc 25 25 26 27 26 SRC += $(SRC_CODEGEN) CodeGen/Generate.cc CodeGen/FixNames.cc 28 27 SRCDEMANGLE += $(SRC_CODEGEN) -
src/CodeTools/DeclStats.cc
rab5c0008 r07de76b 9 9 // Author : Aaron Moss 10 10 // Created On : Wed Jan 31 16:40:00 2016 11 // Last Modified By : Aaron Moss12 // Last Modified On : Wed Jan 31 16:40:00 201613 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:39:33 2019 13 // Update Count : 2 14 14 // 15 15 … … 26 26 #include "Common/VectorMap.h" // for VectorMap 27 27 #include "GenPoly/GenPoly.h" // for hasPolyBase 28 #include " Parser/LinkageSpec.h"// for ::NoOfSpecs, Spec28 #include "SynTree/LinkageSpec.h" // for ::NoOfSpecs, Spec 29 29 #include "SynTree/Declaration.h" // for FunctionDecl, TypeDecl, Declaration 30 30 #include "SynTree/Expression.h" // for UntypedExpr, Expression -
src/Common/Debug.h
rab5c0008 r07de76b 9 9 // Author : Rob Schluntz 10 10 // Created On : Fri Sep 1 11:09:14 2017 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri Sep 1 11:09:36 201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:39:42 2019 13 // Update Count : 3 14 14 // 15 15 … … 21 21 22 22 #include "CodeGen/Generate.h" 23 #include " Parser/LinkageSpec.h"23 #include "SynTree/LinkageSpec.h" 24 24 #include "SynTree/Declaration.h" 25 25 -
src/Concurrency/Keywords.cc
rab5c0008 r07de76b 11 11 // Last Modified By : 12 12 // Last Modified On : 13 // Update Count : 913 // Update Count : 10 14 14 // 15 15 … … 24 24 #include "CodeGen/OperatorTable.h" // for isConstructor 25 25 #include "InitTweak/InitTweak.h" // for getPointerBase 26 #include " Parser/LinkageSpec.h"// for Cforall26 #include "SynTree/LinkageSpec.h" // for Cforall 27 27 #include "SynTree/Constant.h" // for Constant 28 28 #include "SynTree/Declaration.h" // for StructDecl, FunctionDecl, ObjectDecl -
src/Concurrency/Waitfor.cc
rab5c0008 r07de76b 11 11 // Last Modified By : 12 12 // Last Modified On : 13 // Update Count : 1 013 // Update Count : 11 14 14 // 15 15 … … 27 27 #include "CodeGen/OperatorTable.h" // for isConstructor 28 28 #include "InitTweak/InitTweak.h" // for getPointerBase 29 #include "Parser/LinkageSpec.h" // for Cforall30 29 #include "ResolvExpr/Resolver.h" // for findVoidExpression 30 #include "SynTree/LinkageSpec.h" // for Cforall 31 31 #include "SynTree/Constant.h" // for Constant 32 32 #include "SynTree/Declaration.h" // for StructDecl, FunctionDecl, ObjectDecl -
src/ControlStruct/ExceptTranslate.cc
rab5c0008 r07de76b 10 10 // Created On : Wed Jun 14 16:49:00 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 13 18:15:29201913 // Update Count : 1 112 // Last Modified On : Fri Dec 13 23:40:15 2019 13 // Update Count : 12 14 14 // 15 15 … … 24 24 #include "Common/SemanticError.h" // for SemanticError 25 25 #include "Common/utility.h" // for CodeLocation 26 #include " Parser/LinkageSpec.h"// for Cforall26 #include "SynTree/LinkageSpec.h" // for Cforall 27 27 #include "SynTree/Attribute.h" // for Attribute 28 28 #include "SynTree/Constant.h" // for Constant -
src/GenPoly/Box.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 21 15:49:59 201713 // Update Count : 34 612 // Last Modified On : Fri Dec 13 23:40:34 2019 13 // Update Count : 347 14 14 // 15 15 … … 37 37 #include "InitTweak/InitTweak.h" // for getFunctionName, isAssignment 38 38 #include "Lvalue.h" // for generalizedLvalue 39 #include "Parser/LinkageSpec.h" // for C, Spec, Cforall, Intrinsic40 39 #include "ResolvExpr/TypeEnvironment.h" // for EqvClass 41 40 #include "ResolvExpr/typeops.h" // for typesCompatible … … 44 43 #include "SymTab/Indexer.h" // for Indexer 45 44 #include "SymTab/Mangler.h" // for Mangler 45 #include "SynTree/LinkageSpec.h" // for C, Spec, Cforall, Intrinsic 46 46 #include "SynTree/Attribute.h" // for Attribute 47 47 #include "SynTree/Constant.h" // for Constant -
src/GenPoly/Lvalue.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:11:18 201713 // Update Count : 512 // Last Modified On : Fri Dec 13 23:14:38 2019 13 // Update Count : 7 14 14 // 15 15 … … 17 17 #include <string> // for string 18 18 19 #include "Common/UniqueName.h" 19 20 #include "Common/PassVisitor.h" 20 21 #include "GenPoly.h" // for isPolyType … … 22 23 23 24 #include "InitTweak/InitTweak.h" 24 #include "Parser/LinkageSpec.h" // for Spec, isBuiltin, Intrinsic25 25 #include "ResolvExpr/TypeEnvironment.h" // for AssertionSet, OpenVarSet 26 26 #include "ResolvExpr/Unify.h" // for unify 27 27 #include "ResolvExpr/typeops.h" 28 28 #include "SymTab/Indexer.h" // for Indexer 29 #include "SynTree/LinkageSpec.h" // for Spec, isBuiltin, Intrinsic 29 30 #include "SynTree/Declaration.h" // for Declaration, FunctionDecl 30 31 #include "SynTree/Expression.h" // for Expression, ConditionalExpr -
src/GenPoly/Specialize.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 16 07:53:59 201713 // Update Count : 3 112 // Last Modified On : Fri Dec 13 23:40:49 2019 13 // Update Count : 32 14 14 // 15 15 … … 27 27 #include "GenPoly.h" // for getFunctionType 28 28 #include "InitTweak/InitTweak.h" // for isIntrinsicCallExpr 29 #include "Parser/LinkageSpec.h" // for C30 29 #include "ResolvExpr/FindOpenVars.h" // for findOpenVars 31 30 #include "ResolvExpr/TypeEnvironment.h" // for OpenVarSet, AssertionSet 32 31 #include "Specialize.h" 32 #include "SynTree/LinkageSpec.h" // for C 33 33 #include "SynTree/Attribute.h" // for Attribute 34 34 #include "SynTree/Declaration.h" // for FunctionDecl, DeclarationWit... -
src/InitTweak/FixGlobalInit.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 04 15:14:56 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 16 07:53:11 201713 // Update Count : 1 812 // Last Modified On : Fri Dec 13 23:41:10 2019 13 // Update Count : 19 14 14 // 15 15 … … 23 23 #include "Common/UniqueName.h" // for UniqueName 24 24 #include "InitTweak.h" // for isIntrinsicSingleArgCallStmt 25 #include " Parser/LinkageSpec.h"// for C25 #include "SynTree/LinkageSpec.h" // for C 26 26 #include "SynTree/Attribute.h" // for Attribute 27 27 #include "SynTree/Constant.h" // for Constant -
src/InitTweak/FixInit.cc
rab5c0008 r07de76b 10 10 // Created On : Wed Jan 13 16:29:30 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 13 18:15:56201913 // Update Count : 7 612 // Last Modified On : Fri Dec 13 23:41:27 2019 13 // Update Count : 77 14 14 // 15 15 #include "FixInit.h" … … 38 38 #include "GenPoly/GenPoly.h" // for getFunctionType 39 39 #include "InitTweak.h" // for getFunctionName, getCallArg 40 #include "Parser/LinkageSpec.h" // for C, Spec, Cforall, isBuiltin41 40 #include "ResolvExpr/Resolver.h" // for findVoidExpression 42 41 #include "ResolvExpr/typeops.h" // for typesCompatible … … 44 43 #include "SymTab/Indexer.h" // for Indexer 45 44 #include "SymTab/Mangler.h" // for Mangler 45 #include "SynTree/LinkageSpec.h" // for C, Spec, Cforall, isBuiltin 46 46 #include "SynTree/Attribute.h" // for Attribute 47 47 #include "SynTree/Constant.h" // for Constant -
src/InitTweak/GenInit.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:12:36 201713 // Update Count : 18 312 // Last Modified On : Fri Dec 13 23:15:10 2019 13 // Update Count : 184 14 14 // 15 15 #include "GenInit.h" … … 34 34 #include "GenPoly/ScopedSet.h" // for ScopedSet, ScopedSet<>::const_iter... 35 35 #include "InitTweak.h" // for isConstExpr, InitExpander, checkIn... 36 #include "Parser/LinkageSpec.h" // for isOverridable, C37 36 #include "ResolvExpr/Resolver.h" 38 37 #include "SymTab/Autogen.h" // for genImplicitCall 39 38 #include "SymTab/Mangler.h" // for Mangler 39 #include "SynTree/LinkageSpec.h" // for isOverridable, C 40 40 #include "SynTree/Declaration.h" // for ObjectDecl, DeclarationWithType 41 41 #include "SynTree/Expression.h" // for VariableExpr, UntypedExpr, Address... -
src/InitTweak/InitTweak.cc
rab5c0008 r07de76b 10 10 // Created On : Fri May 13 11:26:36 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 25 22:21:48201913 // Update Count : 712 // Last Modified On : Fri Dec 13 23:15:52 2019 13 // Update Count : 8 14 14 // 15 15 … … 33 33 #include "GenPoly/GenPoly.h" // for getFunctionType 34 34 #include "InitTweak.h" 35 #include "Parser/LinkageSpec.h" // for Spec, isBuiltin, Intrinsic36 35 #include "ResolvExpr/typeops.h" // for typesCompatibleIgnoreQualifiers 37 36 #include "SymTab/Autogen.h" 38 37 #include "SymTab/Indexer.h" // for Indexer 38 #include "SynTree/LinkageSpec.h" // for Spec, isBuiltin, Intrinsic 39 39 #include "SynTree/Attribute.h" // for Attribute 40 40 #include "SynTree/Constant.h" // for Constant -
src/MakeLibCfa.cc
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 10:33:33 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Feb 17 21:08:09201913 // Update Count : 4 112 // Last Modified On : Fri Dec 13 23:41:40 2019 13 // Update Count : 42 14 14 // 15 15 … … 23 23 #include "Common/SemanticError.h" // for SemanticError 24 24 #include "Common/UniqueName.h" // for UniqueName 25 #include " Parser/LinkageSpec.h"// for Spec, Intrinsic, C25 #include "SynTree/LinkageSpec.h" // for Spec, Intrinsic, C 26 26 #include "SynTree/Declaration.h" // for FunctionDecl, ObjectDecl, Declara... 27 27 #include "SynTree/Expression.h" // for NameExpr, UntypedExpr, VariableExpr -
src/Makefile.in
rab5c0008 r07de76b 212 212 SymTab/Indexer.$(OBJEXT) SymTab/Mangler.$(OBJEXT) \ 213 213 SymTab/ManglerCommon.$(OBJEXT) SymTab/Validate.$(OBJEXT) 214 am__objects_7 = SynTree/Type.$(OBJEXT) SynTree/VoidType.$(OBJEXT) \ 215 SynTree/BasicType.$(OBJEXT) SynTree/PointerType.$(OBJEXT) \ 216 SynTree/ArrayType.$(OBJEXT) SynTree/ReferenceType.$(OBJEXT) \ 217 SynTree/FunctionType.$(OBJEXT) \ 218 SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \ 219 SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \ 220 SynTree/VarArgsType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) \ 221 SynTree/Constant.$(OBJEXT) SynTree/Expression.$(OBJEXT) \ 222 SynTree/TupleExpr.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \ 223 SynTree/TypeExpr.$(OBJEXT) SynTree/ApplicationExpr.$(OBJEXT) \ 224 SynTree/AddressExpr.$(OBJEXT) SynTree/Statement.$(OBJEXT) \ 225 SynTree/CompoundStmt.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \ 214 am__objects_7 = SynTree/AddressExpr.$(OBJEXT) \ 215 SynTree/AggregateDecl.$(OBJEXT) \ 216 SynTree/ApplicationExpr.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \ 217 SynTree/AttrType.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \ 218 SynTree/BasicType.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \ 219 SynTree/CompoundStmt.$(OBJEXT) SynTree/Constant.$(OBJEXT) \ 220 SynTree/DeclReplacer.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \ 226 221 SynTree/Declaration.$(OBJEXT) \ 227 222 SynTree/DeclarationWithType.$(OBJEXT) \ 228 SynTree/ObjectDecl.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \ 229 SynTree/AggregateDecl.$(OBJEXT) \ 230 SynTree/NamedTypeDecl.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \ 231 SynTree/Initializer.$(OBJEXT) \ 232 SynTree/TypeSubstitution.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \ 233 SynTree/DeclReplacer.$(OBJEXT) 223 SynTree/Expression.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \ 224 SynTree/FunctionType.$(OBJEXT) SynTree/Initializer.$(OBJEXT) \ 225 SynTree/LinkageSpec.$(OBJEXT) SynTree/NamedTypeDecl.$(OBJEXT) \ 226 SynTree/ObjectDecl.$(OBJEXT) SynTree/PointerType.$(OBJEXT) \ 227 SynTree/ReferenceToType.$(OBJEXT) \ 228 SynTree/ReferenceType.$(OBJEXT) SynTree/Statement.$(OBJEXT) \ 229 SynTree/TupleExpr.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \ 230 SynTree/Type.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \ 231 SynTree/TypeExpr.$(OBJEXT) SynTree/TypeSubstitution.$(OBJEXT) \ 232 SynTree/TypeofType.$(OBJEXT) SynTree/VarArgsType.$(OBJEXT) \ 233 SynTree/VoidType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) 234 234 am__objects_8 = CompilationState.$(OBJEXT) $(am__objects_1) \ 235 235 $(am__objects_2) Concurrency/Keywords.$(OBJEXT) \ 236 236 $(am__objects_3) $(am__objects_4) GenPoly/GenPoly.$(OBJEXT) \ 237 237 GenPoly/Lvalue.$(OBJEXT) InitTweak/GenInit.$(OBJEXT) \ 238 InitTweak/InitTweak.$(OBJEXT) Parser/LinkageSpec.$(OBJEXT) \239 $(am__objects_ 5) $(am__objects_6) SymTab/Demangle.$(OBJEXT) \240 $(am__objects_7)Tuples/TupleAssignment.$(OBJEXT) \238 InitTweak/InitTweak.$(OBJEXT) $(am__objects_5) \ 239 $(am__objects_6) SymTab/Demangle.$(OBJEXT) $(am__objects_7) \ 240 Tuples/TupleAssignment.$(OBJEXT) \ 241 241 Tuples/TupleExpansion.$(OBJEXT) Tuples/Explode.$(OBJEXT) \ 242 242 Tuples/Tuples.$(OBJEXT) Validate/HandleAttributes.$(OBJEXT) \ … … 261 261 InitTweak/GenInit.$(OBJEXT) InitTweak/FixInit.$(OBJEXT) \ 262 262 InitTweak/FixGlobalInit.$(OBJEXT) \ 263 InitTweak/InitTweak.$(OBJEXT) Parser/ parser.$(OBJEXT) \264 Parser/ lex.$(OBJEXT) Parser/TypedefTable.$(OBJEXT) \265 Parser/ ParseNode.$(OBJEXT) Parser/DeclarationNode.$(OBJEXT) \266 Parser/ ExpressionNode.$(OBJEXT) Parser/StatementNode.$(OBJEXT) \267 Parser/ InitializerNode.$(OBJEXT) Parser/TypeData.$(OBJEXT) \268 Parser/ LinkageSpec.$(OBJEXT) Parser/parserutility.$(OBJEXT) \263 InitTweak/InitTweak.$(OBJEXT) Parser/DeclarationNode.$(OBJEXT) \ 264 Parser/ExpressionNode.$(OBJEXT) \ 265 Parser/InitializerNode.$(OBJEXT) Parser/ParseNode.$(OBJEXT) \ 266 Parser/StatementNode.$(OBJEXT) Parser/TypeData.$(OBJEXT) \ 267 Parser/TypedefTable.$(OBJEXT) Parser/lex.$(OBJEXT) \ 268 Parser/parser.$(OBJEXT) Parser/parserutility.$(OBJEXT) \ 269 269 $(am__objects_5) ResolvExpr/AlternativePrinter.$(OBJEXT) \ 270 270 $(am__objects_6) $(am__objects_7) \ … … 559 559 InitTweak/GenInit.cc InitTweak/FixInit.cc \ 560 560 InitTweak/FixGlobalInit.cc InitTweak/InitTweak.cc \ 561 Parser/ parser.yy Parser/lex.ll Parser/TypedefTable.cc \562 Parser/ ParseNode.cc Parser/DeclarationNode.cc \563 Parser/ ExpressionNode.cc Parser/StatementNode.cc \564 Parser/ InitializerNode.cc Parser/TypeData.cc\565 Parser/ LinkageSpec.cc Parser/parserutility.cc\566 $(SRC_RESOLVEXPR) ResolvExpr/AlternativePrinter.cc\567 $(SRC_SYMTAB) $(SRC_SYNTREE) Tuples/TupleAssignment.cc \568 Tuples/ TupleExpansion.cc Tuples/Explode.cc Tuples/Tuples.cc \561 Parser/DeclarationNode.cc Parser/ExpressionNode.cc \ 562 Parser/InitializerNode.cc Parser/ParseNode.cc \ 563 Parser/StatementNode.cc Parser/TypeData.cc \ 564 Parser/TypedefTable.cc Parser/lex.ll Parser/parser.yy \ 565 Parser/parserutility.cc $(SRC_RESOLVEXPR) \ 566 ResolvExpr/AlternativePrinter.cc $(SRC_SYMTAB) $(SRC_SYNTREE) \ 567 Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc \ 568 Tuples/Explode.cc Tuples/Tuples.cc \ 569 569 Validate/HandleAttributes.cc Validate/FindSpecialDecls.cc \ 570 570 Virtual/ExpandCasts.cc … … 572 572 Concurrency/Keywords.cc $(SRC_COMMON) $(SRC_CONTROLSTRUCT) \ 573 573 GenPoly/GenPoly.cc GenPoly/Lvalue.cc InitTweak/GenInit.cc \ 574 InitTweak/InitTweak.cc Parser/LinkageSpec.cc $(SRC_RESOLVEXPR) \ 575 $(SRC_SYMTAB) SymTab/Demangle.cc $(SRC_SYNTREE) \ 576 Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc \ 577 Tuples/Explode.cc Tuples/Tuples.cc \ 574 InitTweak/InitTweak.cc $(SRC_RESOLVEXPR) $(SRC_SYMTAB) \ 575 SymTab/Demangle.cc $(SRC_SYNTREE) Tuples/TupleAssignment.cc \ 576 Tuples/TupleExpansion.cc Tuples/Explode.cc Tuples/Tuples.cc \ 578 577 Validate/HandleAttributes.cc Validate/FindSpecialDecls.cc 579 578 MAINTAINERCLEANFILES = ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} … … 663 662 664 663 SRC_SYNTREE = \ 665 SynTree/Type.cc \ 666 SynTree/VoidType.cc \ 664 SynTree/AddressExpr.cc \ 665 SynTree/AggregateDecl.cc \ 666 SynTree/ApplicationExpr.cc \ 667 SynTree/ArrayType.cc \ 668 SynTree/AttrType.cc \ 669 SynTree/Attribute.cc \ 667 670 SynTree/BasicType.cc \ 668 SynTree/PointerType.cc \ 669 SynTree/ArrayType.cc \ 670 SynTree/ReferenceType.cc \ 671 SynTree/FunctionType.cc \ 672 SynTree/ReferenceToType.cc \ 673 SynTree/TupleType.cc \ 674 SynTree/TypeofType.cc \ 675 SynTree/AttrType.cc \ 676 SynTree/VarArgsType.cc \ 677 SynTree/ZeroOneType.cc \ 671 SynTree/CommaExpr.cc \ 672 SynTree/CompoundStmt.cc \ 678 673 SynTree/Constant.cc \ 679 SynTree/Expression.cc \ 680 SynTree/TupleExpr.cc \ 681 SynTree/CommaExpr.cc \ 682 SynTree/TypeExpr.cc \ 683 SynTree/ApplicationExpr.cc \ 684 SynTree/AddressExpr.cc \ 685 SynTree/Statement.cc \ 686 SynTree/CompoundStmt.cc \ 674 SynTree/DeclReplacer.cc \ 687 675 SynTree/DeclStmt.cc \ 688 676 SynTree/Declaration.cc \ 689 677 SynTree/DeclarationWithType.cc \ 678 SynTree/Expression.cc \ 679 SynTree/FunctionDecl.cc \ 680 SynTree/FunctionType.cc \ 681 SynTree/Initializer.cc \ 682 SynTree/LinkageSpec.cc \ 683 SynTree/NamedTypeDecl.cc \ 690 684 SynTree/ObjectDecl.cc \ 691 SynTree/FunctionDecl.cc \ 692 SynTree/AggregateDecl.cc \ 693 SynTree/NamedTypeDecl.cc \ 685 SynTree/PointerType.cc \ 686 SynTree/ReferenceToType.cc \ 687 SynTree/ReferenceType.cc \ 688 SynTree/Statement.cc \ 689 SynTree/TupleExpr.cc \ 690 SynTree/TupleType.cc \ 691 SynTree/Type.cc \ 694 692 SynTree/TypeDecl.cc \ 695 SynTree/ Initializer.cc \693 SynTree/TypeExpr.cc \ 696 694 SynTree/TypeSubstitution.cc \ 697 SynTree/Attribute.cc \ 698 SynTree/DeclReplacer.cc 695 SynTree/TypeofType.cc \ 696 SynTree/VarArgsType.cc \ 697 SynTree/VoidType.cc \ 698 SynTree/ZeroOneType.cc 699 699 700 700 … … 869 869 InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \ 870 870 InitTweak/$(DEPDIR)/$(am__dirstamp) 871 Parser/$(am__dirstamp):872 @$(MKDIR_P) Parser873 @: > Parser/$(am__dirstamp)874 Parser/$(DEPDIR)/$(am__dirstamp):875 @$(MKDIR_P) Parser/$(DEPDIR)876 @: > Parser/$(DEPDIR)/$(am__dirstamp)877 Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \878 Parser/$(DEPDIR)/$(am__dirstamp)879 871 ResolvExpr/$(am__dirstamp): 880 872 @$(MKDIR_P) ResolvExpr … … 957 949 @$(MKDIR_P) SynTree/$(DEPDIR) 958 950 @: > SynTree/$(DEPDIR)/$(am__dirstamp) 951 SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 952 SynTree/$(DEPDIR)/$(am__dirstamp) 953 SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 954 SynTree/$(DEPDIR)/$(am__dirstamp) 955 SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 956 SynTree/$(DEPDIR)/$(am__dirstamp) 957 SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \ 958 SynTree/$(DEPDIR)/$(am__dirstamp) 959 SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \ 960 SynTree/$(DEPDIR)/$(am__dirstamp) 961 SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \ 962 SynTree/$(DEPDIR)/$(am__dirstamp) 963 SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \ 964 SynTree/$(DEPDIR)/$(am__dirstamp) 965 SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 966 SynTree/$(DEPDIR)/$(am__dirstamp) 967 SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 968 SynTree/$(DEPDIR)/$(am__dirstamp) 969 SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \ 970 SynTree/$(DEPDIR)/$(am__dirstamp) 971 SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \ 972 SynTree/$(DEPDIR)/$(am__dirstamp) 973 SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 974 SynTree/$(DEPDIR)/$(am__dirstamp) 975 SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \ 976 SynTree/$(DEPDIR)/$(am__dirstamp) 977 SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \ 978 SynTree/$(DEPDIR)/$(am__dirstamp) 979 SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \ 980 SynTree/$(DEPDIR)/$(am__dirstamp) 981 SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 982 SynTree/$(DEPDIR)/$(am__dirstamp) 983 SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \ 984 SynTree/$(DEPDIR)/$(am__dirstamp) 985 SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \ 986 SynTree/$(DEPDIR)/$(am__dirstamp) 987 SynTree/LinkageSpec.$(OBJEXT): SynTree/$(am__dirstamp) \ 988 SynTree/$(DEPDIR)/$(am__dirstamp) 989 SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 990 SynTree/$(DEPDIR)/$(am__dirstamp) 991 SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 992 SynTree/$(DEPDIR)/$(am__dirstamp) 993 SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \ 994 SynTree/$(DEPDIR)/$(am__dirstamp) 995 SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \ 996 SynTree/$(DEPDIR)/$(am__dirstamp) 997 SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \ 998 SynTree/$(DEPDIR)/$(am__dirstamp) 999 SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \ 1000 SynTree/$(DEPDIR)/$(am__dirstamp) 1001 SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 1002 SynTree/$(DEPDIR)/$(am__dirstamp) 1003 SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \ 1004 SynTree/$(DEPDIR)/$(am__dirstamp) 959 1005 SynTree/Type.$(OBJEXT): SynTree/$(am__dirstamp) \ 960 1006 SynTree/$(DEPDIR)/$(am__dirstamp) 1007 SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 1008 SynTree/$(DEPDIR)/$(am__dirstamp) 1009 SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 1010 SynTree/$(DEPDIR)/$(am__dirstamp) 1011 SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \ 1012 SynTree/$(DEPDIR)/$(am__dirstamp) 1013 SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \ 1014 SynTree/$(DEPDIR)/$(am__dirstamp) 1015 SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \ 1016 SynTree/$(DEPDIR)/$(am__dirstamp) 961 1017 SynTree/VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \ 962 1018 SynTree/$(DEPDIR)/$(am__dirstamp) 963 SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \964 SynTree/$(DEPDIR)/$(am__dirstamp)965 SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \966 SynTree/$(DEPDIR)/$(am__dirstamp)967 SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \968 SynTree/$(DEPDIR)/$(am__dirstamp)969 SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \970 SynTree/$(DEPDIR)/$(am__dirstamp)971 SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \972 SynTree/$(DEPDIR)/$(am__dirstamp)973 SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \974 SynTree/$(DEPDIR)/$(am__dirstamp)975 SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \976 SynTree/$(DEPDIR)/$(am__dirstamp)977 SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \978 SynTree/$(DEPDIR)/$(am__dirstamp)979 SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \980 SynTree/$(DEPDIR)/$(am__dirstamp)981 SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \982 SynTree/$(DEPDIR)/$(am__dirstamp)983 1019 SynTree/ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \ 984 SynTree/$(DEPDIR)/$(am__dirstamp)985 SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \986 SynTree/$(DEPDIR)/$(am__dirstamp)987 SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \988 SynTree/$(DEPDIR)/$(am__dirstamp)989 SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \990 SynTree/$(DEPDIR)/$(am__dirstamp)991 SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \992 SynTree/$(DEPDIR)/$(am__dirstamp)993 SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \994 SynTree/$(DEPDIR)/$(am__dirstamp)995 SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \996 SynTree/$(DEPDIR)/$(am__dirstamp)997 SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \998 SynTree/$(DEPDIR)/$(am__dirstamp)999 SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \1000 SynTree/$(DEPDIR)/$(am__dirstamp)1001 SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \1002 SynTree/$(DEPDIR)/$(am__dirstamp)1003 SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \1004 SynTree/$(DEPDIR)/$(am__dirstamp)1005 SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \1006 SynTree/$(DEPDIR)/$(am__dirstamp)1007 SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \1008 SynTree/$(DEPDIR)/$(am__dirstamp)1009 SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \1010 SynTree/$(DEPDIR)/$(am__dirstamp)1011 SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \1012 SynTree/$(DEPDIR)/$(am__dirstamp)1013 SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \1014 SynTree/$(DEPDIR)/$(am__dirstamp)1015 SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \1016 SynTree/$(DEPDIR)/$(am__dirstamp)1017 SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \1018 SynTree/$(DEPDIR)/$(am__dirstamp)1019 SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \1020 SynTree/$(DEPDIR)/$(am__dirstamp)1021 SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \1022 SynTree/$(DEPDIR)/$(am__dirstamp)1023 SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \1024 SynTree/$(DEPDIR)/$(am__dirstamp)1025 SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \1026 1020 SynTree/$(DEPDIR)/$(am__dirstamp) 1027 1021 Tuples/$(am__dirstamp): … … 1140 1134 InitTweak/FixGlobalInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 1141 1135 InitTweak/$(DEPDIR)/$(am__dirstamp) 1136 Parser/$(am__dirstamp): 1137 @$(MKDIR_P) Parser 1138 @: > Parser/$(am__dirstamp) 1139 Parser/$(DEPDIR)/$(am__dirstamp): 1140 @$(MKDIR_P) Parser/$(DEPDIR) 1141 @: > Parser/$(DEPDIR)/$(am__dirstamp) 1142 Parser/DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \ 1143 Parser/$(DEPDIR)/$(am__dirstamp) 1144 Parser/ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \ 1145 Parser/$(DEPDIR)/$(am__dirstamp) 1146 Parser/InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \ 1147 Parser/$(DEPDIR)/$(am__dirstamp) 1148 Parser/ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \ 1149 Parser/$(DEPDIR)/$(am__dirstamp) 1150 Parser/StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \ 1151 Parser/$(DEPDIR)/$(am__dirstamp) 1152 Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \ 1153 Parser/$(DEPDIR)/$(am__dirstamp) 1154 Parser/TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \ 1155 Parser/$(DEPDIR)/$(am__dirstamp) 1156 Parser/lex.$(OBJEXT): Parser/$(am__dirstamp) \ 1157 Parser/$(DEPDIR)/$(am__dirstamp) 1142 1158 Parser/parser.hh: Parser/parser.cc 1143 1159 @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi 1144 1160 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi 1145 1161 Parser/parser.$(OBJEXT): Parser/$(am__dirstamp) \ 1146 Parser/$(DEPDIR)/$(am__dirstamp)1147 Parser/lex.$(OBJEXT): Parser/$(am__dirstamp) \1148 Parser/$(DEPDIR)/$(am__dirstamp)1149 Parser/TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \1150 Parser/$(DEPDIR)/$(am__dirstamp)1151 Parser/ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \1152 Parser/$(DEPDIR)/$(am__dirstamp)1153 Parser/DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \1154 Parser/$(DEPDIR)/$(am__dirstamp)1155 Parser/ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \1156 Parser/$(DEPDIR)/$(am__dirstamp)1157 Parser/StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \1158 Parser/$(DEPDIR)/$(am__dirstamp)1159 Parser/InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \1160 Parser/$(DEPDIR)/$(am__dirstamp)1161 Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \1162 1162 Parser/$(DEPDIR)/$(am__dirstamp) 1163 1163 Parser/parserutility.$(OBJEXT): Parser/$(am__dirstamp) \ … … 1270 1270 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/ExpressionNode.Po@am__quote@ 1271 1271 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/InitializerNode.Po@am__quote@ 1272 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/LinkageSpec.Po@am__quote@1273 1272 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/ParseNode.Po@am__quote@ 1274 1273 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/StatementNode.Po@am__quote@ … … 1329 1328 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/FunctionType.Po@am__quote@ 1330 1329 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/Initializer.Po@am__quote@ 1330 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/LinkageSpec.Po@am__quote@ 1331 1331 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/NamedTypeDecl.Po@am__quote@ 1332 1332 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/ObjectDecl.Po@am__quote@ -
src/Parser/DeclarationNode.cc
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 07:40:14201913 // Update Count : 11 2312 // Last Modified On : Mon Dec 16 09:32:40 2019 13 // Update Count : 1132 14 14 // 15 15 … … 24 24 #include "Common/UniqueName.h" // for UniqueName 25 25 #include "Common/utility.h" // for maybeClone, maybeBuild, CodeLocation 26 #include "Parser/LinkageSpec.h" // for Spec, linkageName, Cforall27 26 #include "Parser/ParseNode.h" // for DeclarationNode, ExpressionNode 27 #include "SynTree/LinkageSpec.h" // for Spec, linkageName, Cforall 28 28 #include "SynTree/Attribute.h" // for Attribute 29 29 #include "SynTree/Declaration.h" // for TypeDecl, ObjectDecl, Declaration … … 47 47 const char * DeclarationNode::signednessNames[] = { "signed", "unsigned", "NoSignednessNames" }; 48 48 const char * DeclarationNode::lengthNames[] = { "short", "long", "long long", "NoLengthNames" }; 49 const char * DeclarationNode::typeClassNames[] = { "otype", "dtype", "ftype", "NoTypeClassNames" };50 49 const char * DeclarationNode::builtinTypeNames[] = { "__builtin_va_list", "__auto_type", "zero_t", "one_t", "NoBuiltinTypeNames" }; 51 50 … … 58 57 59 58 // variable.name = nullptr; 60 variable.tyClass = NoTypeClass;59 variable.tyClass = TypeDecl::NUMBER_OF_KINDS; 61 60 variable.assertions = nullptr; 62 61 variable.initializer = nullptr; … … 312 311 } // DeclarationNode::newFromTypeGen 313 312 314 DeclarationNode * DeclarationNode::newTypeParam( Type Classtc, const string * name ) {313 DeclarationNode * DeclarationNode::newTypeParam( TypeDecl::Kind tc, const string * name ) { 315 314 DeclarationNode * newnode = new DeclarationNode; 316 315 newnode->type = nullptr; … … 670 669 671 670 DeclarationNode * DeclarationNode::addAssertions( DeclarationNode * assertions ) { 672 if ( variable.tyClass != NoTypeClass) {671 if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) { 673 672 if ( variable.assertions ) { 674 673 variable.assertions->appendList( assertions ); … … 875 874 876 875 DeclarationNode * DeclarationNode::addTypeInitializer( DeclarationNode * init ) { 877 assertf( variable.tyClass != NoTypeClass, "Called addTypeInitializer on something that isn't a type variable." );876 assertf( variable.tyClass != TypeDecl::NUMBER_OF_KINDS, "Called addTypeInitializer on something that isn't a type variable." ); 878 877 variable.initializer = init; 879 878 return this; … … 1074 1073 } // if 1075 1074 1076 if ( variable.tyClass != NoTypeClass) {1075 if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) { 1077 1076 // otype is internally converted to dtype + otype parameters 1078 1077 static const TypeDecl::Kind kindMap[] = { TypeDecl::Dtype, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype }; 1079 assertf( sizeof(kindMap)/sizeof(kindMap[0]) == NoTypeClass, "DeclarationNode::build: kindMap is out of sync." );1078 static_assert( sizeof(kindMap)/sizeof(kindMap[0]) == TypeDecl::NUMBER_OF_KINDS, "DeclarationNode::build: kindMap is out of sync." ); 1080 1079 assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." ); 1081 TypeDecl * ret = new TypeDecl( *name, Type::StorageClasses(), nullptr, kindMap[ variable.tyClass ], variable.tyClass == Otype, variable.initializer ? variable.initializer->buildType() : nullptr );1080 TypeDecl * ret = new TypeDecl( *name, Type::StorageClasses(), nullptr, kindMap[ variable.tyClass ], variable.tyClass == TypeDecl::Otype, variable.initializer ? variable.initializer->buildType() : nullptr ); 1082 1081 buildList( variable.assertions, ret->get_assertions() ); 1083 1082 return ret; -
src/Parser/ParseNode.h
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 07:40:07201913 // Update Count : 88 212 // Last Modified On : Mon Dec 16 07:46:01 2019 13 // Update Count : 888 14 14 // 15 15 … … 28 28 #include "Common/UniqueName.h" // for UniqueName 29 29 #include "Common/utility.h" // for maybeClone, maybeBuild 30 #include " Parser/LinkageSpec.h"// for Spec30 #include "SynTree/LinkageSpec.h" // for Spec 31 31 #include "SynTree/Declaration.h" // for Aggregate 32 32 #include "SynTree/Expression.h" // for Expression, ConstantExpr (ptr only) … … 218 218 enum Length { Short, Long, LongLong, NoLength }; 219 219 static const char * lengthNames[]; 220 enum TypeClass { Otype, Dtype, Ftype, Ttype, NoTypeClass };221 static const char * typeClassNames[];222 220 enum BuiltinType { Valist, AutoType, Zero, One, NoBuiltinType }; 223 221 static const char * builtinTypeNames[]; … … 241 239 static DeclarationNode * newName( const std::string * ); 242 240 static DeclarationNode * newFromTypeGen( const std::string *, ExpressionNode * params ); 243 static DeclarationNode * newTypeParam( Type Class, const std::string * );241 static DeclarationNode * newTypeParam( TypeDecl::Kind, const std::string * ); 244 242 static DeclarationNode * newTrait( const std::string * name, DeclarationNode * params, DeclarationNode * asserts ); 245 243 static DeclarationNode * newTraitUse( const std::string * name, ExpressionNode * params ); … … 311 309 struct Variable_t { 312 310 // const std::string * name; 313 DeclarationNode::TypeClasstyClass;311 TypeDecl::Kind tyClass; 314 312 DeclarationNode * assertions; 315 313 DeclarationNode * initializer; -
src/Parser/TypeData.cc
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 07:48:33201913 // Update Count : 6 5912 // Last Modified On : Mon Dec 16 07:56:46 2019 13 // Update Count : 662 14 14 // 15 15 … … 489 489 for ( typename ForallList::iterator i = outputList.begin(); i != outputList.end(); ++i, n = (DeclarationNode*)n->get_next() ) { 490 490 TypeDecl * td = static_cast<TypeDecl *>(*i); 491 if ( n->variable.tyClass == DeclarationNode::Otype ) {491 if ( n->variable.tyClass == TypeDecl::Otype ) { 492 492 // add assertion parameters to `type' tyvars in reverse order 493 493 // add dtor: void ^?{}(T *) … … 522 522 switch ( td->kind ) { 523 523 case TypeData::Unknown: 524 525 524 // fill in implicit int 525 return new BasicType( buildQualifiers( td ), BasicType::SignedInt ); 526 526 case TypeData::Basic: 527 527 return buildBasicType( td ); 528 528 case TypeData::Pointer: 529 529 return buildPointer( td ); 530 530 case TypeData::Array: 531 531 return buildArray( td ); 532 532 case TypeData::Reference: 533 533 return buildReference( td ); 534 534 case TypeData::Function: 535 535 return buildFunction( td ); 536 536 case TypeData::AggregateInst: 537 537 return buildAggInst( td ); 538 538 case TypeData::EnumConstant: 539 540 539 // the name gets filled in later -- by SymTab::Validate 540 return new EnumInstType( buildQualifiers( td ), "" ); 541 541 case TypeData::SymbolicInst: 542 542 return buildSymbolicInst( td ); 543 543 case TypeData::Tuple: 544 544 return buildTuple( td ); 545 545 case TypeData::Typeof: 546 546 case TypeData::Basetypeof: 547 547 return buildTypeof( td ); 548 548 case TypeData::Builtin: 549 if (td->builtintype == DeclarationNode::Zero) { 550 return new ZeroType( noQualifiers ); 551 } 552 else if (td->builtintype == DeclarationNode::One) { 553 return new OneType( noQualifiers ); 554 } 555 else { 556 return new VarArgsType( buildQualifiers( td ) ); 557 } 549 switch ( td->builtintype ) { 550 case DeclarationNode::Zero: 551 return new ZeroType( noQualifiers ); 552 case DeclarationNode::One: 553 return new OneType( noQualifiers ); 554 default: 555 return new VarArgsType( buildQualifiers( td ) ); 556 } // switch 558 557 case TypeData::GlobalScope: 559 560 561 558 return new GlobalScopeType(); 559 case TypeData::Qualified: 560 return new QualifiedType( buildQualifiers( td ), typebuild( td->qualified.parent ), typebuild( td->qualified.child ) ); 562 561 case TypeData::Symbolic: 563 562 case TypeData::Enum: 564 563 case TypeData::Aggregate: 565 564 assert( false ); 566 565 } // switch 567 566 -
src/Parser/TypeData.h
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 10 23:01:07201913 // Update Count : 19 812 // Last Modified On : Fri Dec 13 23:42:35 2019 13 // Update Count : 199 14 14 // 15 15 … … 21 21 22 22 #include "ParseNode.h" // for DeclarationNode, DeclarationNode::Ag... 23 #include " Parser/LinkageSpec.h"// for Spec23 #include "SynTree/LinkageSpec.h" // for Spec 24 24 #include "SynTree/Type.h" // for Type, ReferenceToType (ptr only) 25 25 #include "SynTree/SynTree.h" // for Visitor Nodes -
src/Parser/module.mk
rab5c0008 r07de76b 11 11 ## Created On : Sat May 16 15:29:09 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Wed Jun 28 21:58:29 201714 ## Update Count : 10 413 ## Last Modified On : Sat Dec 14 07:34:47 2019 14 ## Update Count : 107 15 15 ############################################################################### 16 16 … … 19 19 AM_YFLAGS = -d -t -v 20 20 21 SRC += Parser/parser.yy \ 22 Parser/lex.ll \ 23 Parser/TypedefTable.cc \ 24 Parser/ParseNode.cc \ 21 SRC += \ 25 22 Parser/DeclarationNode.cc \ 26 23 Parser/ExpressionNode.cc \ 24 Parser/InitializerNode.cc \ 25 Parser/ParseNode.cc \ 27 26 Parser/StatementNode.cc \ 28 Parser/InitializerNode.cc \29 27 Parser/TypeData.cc \ 30 Parser/LinkageSpec.cc \ 28 Parser/TypedefTable.cc \ 29 Parser/lex.ll \ 30 Parser/parser.yy \ 31 31 Parser/parserutility.cc 32 32 33 SRCDEMANGLE += \34 Parser/LinkageSpec.cc35 36 37 33 MOSTLYCLEANFILES += Parser/lex.cc Parser/parser.cc Parser/parser.hh Parser/parser.output -
src/Parser/parser.yy
rab5c0008 r07de76b 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Dec 12 17:54:22201913 // Update Count : 440 412 // Last Modified On : Mon Dec 16 07:45:59 2019 13 // Update Count : 4408 14 14 // 15 15 … … 55 55 #include "TypedefTable.h" 56 56 #include "TypeData.h" 57 #include " LinkageSpec.h"57 #include "SynTree/LinkageSpec.h" 58 58 #include "Common/SemanticError.h" // error_str 59 59 #include "Common/utility.h" // for maybeMoveBuild, maybeBuild, CodeLo... … … 238 238 DeclarationNode * decl; 239 239 AggregateDecl::Aggregate aggKey; 240 DeclarationNode::TypeClasstclass;240 TypeDecl::Kind tclass; 241 241 StatementNode * sn; 242 242 WaitForStmt * wfs; … … 2437 2437 | type_specifier identifier_parameter_declarator 2438 2438 | assertion_list 2439 { $$ = DeclarationNode::newTypeParam( DeclarationNode::Dtype, new string( DeclarationNode::anonymous.newName() ) )->addAssertions( $1 ); }2439 { $$ = DeclarationNode::newTypeParam( TypeDecl::Dtype, new string( DeclarationNode::anonymous.newName() ) )->addAssertions( $1 ); } 2440 2440 ; 2441 2441 2442 2442 type_class: // CFA 2443 2443 OTYPE 2444 { $$ = DeclarationNode::Otype; }2444 { $$ = TypeDecl::Otype; } 2445 2445 | DTYPE 2446 { $$ = DeclarationNode::Dtype; }2446 { $$ = TypeDecl::Dtype; } 2447 2447 | FTYPE 2448 { $$ = DeclarationNode::Ftype; }2448 { $$ = TypeDecl::Ftype; } 2449 2449 | TTYPE 2450 { $$ = DeclarationNode::Ttype; }2450 { $$ = TypeDecl::Ttype; } 2451 2451 ; 2452 2452 -
src/ResolvExpr/AdjustExprType.cc
rab5c0008 r07de76b 10 10 // Created On : Sat May 16 23:41:42 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:34:53 201613 // Update Count : 412 // Last Modified On : Wed Dec 11 21:43:56 2019 13 // Update Count : 6 14 14 // 15 15 … … 133 133 // replace known function-type-variables with pointer-to-function 134 134 if ( const ast::EqvClass * eqvClass = tenv.lookup( inst->name ) ) { 135 if ( eqvClass->data.kind == ast::Type Var::Ftype ) {135 if ( eqvClass->data.kind == ast::TypeDecl::Ftype ) { 136 136 return new ast::PointerType{ inst }; 137 137 } 138 138 } else if ( const ast::NamedTypeDecl * ntDecl = symtab.lookupType( inst->name ) ) { 139 139 if ( auto tyDecl = dynamic_cast< const ast::TypeDecl * >( ntDecl ) ) { 140 if ( tyDecl->kind == ast::Type Var::Ftype ) {140 if ( tyDecl->kind == ast::TypeDecl::Ftype ) { 141 141 return new ast::PointerType{ inst }; 142 142 } -
src/ResolvExpr/PtrsCastable.cc
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 11:48:00 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:36:18 201613 // Update Count : 812 // Last Modified On : Wed Dec 11 21:48:33 2019 13 // Update Count : 9 14 14 // 15 15 … … 176 176 if ( const ast::NamedTypeDecl * named = symtab.lookupType( inst->name ) ) { 177 177 if ( auto tyDecl = dynamic_cast< const ast::TypeDecl * >( named ) ) { 178 if ( tyDecl->kind == ast::Type Var::Ftype ) {178 if ( tyDecl->kind == ast::TypeDecl::Ftype ) { 179 179 return -1; 180 180 } 181 181 } 182 182 } else if ( const ast::EqvClass * eqvClass = env.lookup( inst->name ) ) { 183 if ( eqvClass->data.kind == ast::Type Var::Ftype ) {183 if ( eqvClass->data.kind == ast::TypeDecl::Ftype ) { 184 184 return -1; 185 185 } -
src/ResolvExpr/Unify.cc
rab5c0008 r07de76b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:27:10 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Sep 4 10:00:00201913 // Update Count : 4 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:43:05 2019 13 // Update Count : 46 14 14 // 15 15 … … 32 32 #include "Common/PassVisitor.h" // for PassVisitor 33 33 #include "FindOpenVars.h" // for findOpenVars 34 #include " Parser/LinkageSpec.h"// for C34 #include "SynTree/LinkageSpec.h" // for C 35 35 #include "SynTree/Constant.h" // for Constant 36 36 #include "SynTree/Declaration.h" // for TypeDecl, TypeDecl::Data, Declarati... … … 781 781 if ( const ast::EqvClass * clz = tenv.lookup( typeInst->name ) ) { 782 782 // expand ttype parameter into its actual type 783 if ( clz->data.kind == ast::Type Var::Ttype && clz->bound ) {783 if ( clz->data.kind == ast::TypeDecl::Ttype && clz->bound ) { 784 784 return clz->bound; 785 785 } -
src/SymTab/Autogen.h
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 21:53:34 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:50:25 201713 // Update Count : 1 512 // Last Modified On : Fri Dec 13 16:38:06 2019 13 // Update Count : 16 14 14 // 15 15 … … 34 34 #include "SynTree/Expression.h" // for NameExpr, ConstantExpr, UntypedExpr... 35 35 #include "SynTree/Type.h" // for Type, ArrayType, Type::Qualifiers 36 #include "SynTree/Statement.h" // for CompoundStmt, DeclStmt, ExprStmt 36 37 37 38 class CompoundStmt; -
src/SymTab/Demangle.cc
rab5c0008 r07de76b 10 10 // Created On : Thu Jul 19 12:52:41 2018 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 30 13:46:33201913 // Update Count : 312 // Last Modified On : Fri Dec 13 14:54:15 2019 13 // Update Count : 4 14 14 // 15 15 … … 366 366 // type variable types 367 367 for (size_t k = 0; k < TypeDecl::NUMBER_OF_KINDS; ++k) { 368 static const std::string typeVariableNames[] = { "DT", " FT", "TT", };368 static const std::string typeVariableNames[] = { "DT", "OT", "FT", "TT", }; 369 369 static_assert( 370 370 sizeof(typeVariableNames)/sizeof(typeVariableNames[0]) == TypeDecl::NUMBER_OF_KINDS, -
src/SymTab/Indexer.cc
rab5c0008 r07de76b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:37:33 2015 11 // Last Modified By : Aaron B. Moss12 // Last Modified On : Fri Mar 8 13:55:00201913 // Update Count : 2 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:43:19 2019 13 // Update Count : 22 14 14 // 15 15 … … 31 31 #include "InitTweak/InitTweak.h" // for isConstructor, isCopyFunction, isC... 32 32 #include "Mangler.h" // for Mangler 33 #include "Parser/LinkageSpec.h" // for isMangled, isOverridable, Spec34 33 #include "ResolvExpr/typeops.h" // for typesCompatible 34 #include "SynTree/LinkageSpec.h" // for isMangled, isOverridable, Spec 35 35 #include "SynTree/Constant.h" // for Constant 36 36 #include "SynTree/Declaration.h" // for DeclarationWithType, FunctionDecl -
src/SymTab/Mangler.cc
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 21:40:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 30 13:46:10201913 // Update Count : 2 612 // Last Modified On : Fri Dec 13 23:43:49 2019 13 // Update Count : 28 14 14 // 15 15 #include "Mangler.h" … … 26 26 #include "Common/SemanticError.h" // for SemanticError 27 27 #include "Common/utility.h" // for toString 28 #include "Parser/LinkageSpec.h" // for Spec, isOverridable, AutoGen, Int...29 28 #include "ResolvExpr/TypeEnvironment.h" // for TypeEnvironment 29 #include "SynTree/LinkageSpec.h" // for Spec, isOverridable, AutoGen, Int... 30 30 #include "SynTree/Declaration.h" // for TypeDecl, DeclarationWithType 31 31 #include "SynTree/Expression.h" // for TypeExpr, Expression, operator<< … … 654 654 // aside from the assert false. 655 655 assertf(false, "Mangler_new should not visit typedecl: %s", toCString(decl)); 656 assertf( decl->kind < ast::Type Var::Kind::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", decl->kind );656 assertf( decl->kind < ast::TypeDecl::Kind::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", decl->kind ); 657 657 mangleName << Encoding::typeVariables[ decl->kind ] << ( decl->name.length() ) << decl->name; 658 658 } … … 674 674 for ( const ast::TypeDecl * decl : ptype->forall ) { 675 675 switch ( decl->kind ) { 676 case ast::Type Var::Kind::Dtype:676 case ast::TypeDecl::Kind::Dtype: 677 677 dcount++; 678 678 break; 679 case ast::Type Var::Kind::Ftype:679 case ast::TypeDecl::Kind::Ftype: 680 680 fcount++; 681 681 break; 682 case ast::Type Var::Kind::Ttype:682 case ast::TypeDecl::Kind::Ttype: 683 683 vcount++; 684 684 break; -
src/SymTab/ManglerCommon.cc
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 21:44:03 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 14 17:06:37201913 // Update Count : 2 612 // Last Modified On : Fri Dec 13 14:54:38 2019 13 // Update Count : 28 14 14 // 15 15 … … 104 104 const std::string typeVariables[] = { 105 105 "BD", // dtype 106 "BO", // otype 106 107 "BF", // ftype 107 108 "BT", // ttype -
src/SymTab/Validate.cc
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 10 22:22:01201913 // Update Count : 36 212 // Last Modified On : Fri Dec 13 23:43:34 2019 13 // Update Count : 363 14 14 // 15 15 … … 69 69 #include "InitTweak/GenInit.h" // for fixReturnStatements 70 70 #include "InitTweak/InitTweak.h" // for isCtorDtorAssign 71 #include "Parser/LinkageSpec.h" // for C72 71 #include "ResolvExpr/typeops.h" // for typesCompatible 73 72 #include "ResolvExpr/Resolver.h" // for findSingleExpression 74 73 #include "ResolvExpr/ResolveTypeof.h" // for resolveTypeof 75 74 #include "SymTab/Autogen.h" // for SizeType 75 #include "SynTree/LinkageSpec.h" // for C 76 76 #include "SynTree/Attribute.h" // for noAttributes, Attribute 77 77 #include "SynTree/Constant.h" // for Constant -
src/SynTree/AggregateDecl.cc
rab5c0008 r07de76b 10 10 // Created On : Sun May 17 23:56:39 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 16:31:55201913 // Update Count : 2912 // Last Modified On : Fri Dec 13 23:10:22 2019 13 // Update Count : 30 14 14 // 15 15 … … 22 22 #include "Declaration.h" // for AggregateDecl, TypeDecl, Declaration 23 23 #include "Initializer.h" 24 #include " Parser/LinkageSpec.h"// for Spec, linkageName, Cforall24 #include "LinkageSpec.h" // for Spec, linkageName, Cforall 25 25 #include "Type.h" // for Type, Type::StorageClasses 26 26 -
src/SynTree/Declaration.h
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 16:48:20201913 // Update Count : 1 4912 // Last Modified On : Fri Dec 13 23:11:22 2019 13 // Update Count : 157 14 14 // 15 15 … … 24 24 #include "BaseSyntaxNode.h" // for BaseSyntaxNode 25 25 #include "Mutator.h" // for Mutator 26 #include " Parser/LinkageSpec.h"// for Spec, Cforall26 #include "LinkageSpec.h" // for Spec, Cforall 27 27 #include "SynTree.h" // for UniqueId 28 28 #include "SynTree/Type.h" // for Type, Type::StorageClasses, Type::Fu... … … 43 43 bool extension = false; 44 44 45 Declaration( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage );46 Declaration( const Declaration & other );45 Declaration( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage ); 46 Declaration( const Declaration & other ); 47 47 virtual ~Declaration(); 48 48 49 const std::string & get_name() const { return name; }49 const std::string & get_name() const { return name; } 50 50 void set_name( std::string newValue ) { name = newValue; } 51 51 … … 58 58 59 59 bool get_extension() const { return extension; } 60 Declaration * set_extension( bool exten ) { extension = exten; return this; }60 Declaration * set_extension( bool exten ) { extension = exten; return this; } 61 61 62 62 void fixUniqueId( void ); 63 virtual Declaration * clone() const override = 0;63 virtual Declaration * clone() const override = 0; 64 64 virtual void accept( Visitor & v ) override = 0; 65 65 virtual void accept( Visitor & v ) const override = 0; 66 virtual Declaration * acceptMutator( Mutator &m ) override = 0;67 virtual void print( std::ostream & os, Indenter indent = {} ) const override = 0;68 virtual void printShort( std::ostream & os, Indenter indent = {} ) const = 0;66 virtual Declaration * acceptMutator( Mutator & m ) override = 0; 67 virtual void print( std::ostream & os, Indenter indent = {} ) const override = 0; 68 virtual void printShort( std::ostream & os, Indenter indent = {} ) const = 0; 69 69 70 70 UniqueId uniqueId; … … 80 80 int scopeLevel = 0; 81 81 82 Expression * asmName;82 Expression * asmName; 83 83 std::list< Attribute * > attributes; 84 84 bool isDeleted = false; 85 85 86 DeclarationWithType( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );87 DeclarationWithType( const DeclarationWithType & other );86 DeclarationWithType( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs ); 87 DeclarationWithType( const DeclarationWithType & other ); 88 88 virtual ~DeclarationWithType(); 89 89 … … 96 96 DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; } 97 97 98 Expression * get_asmName() const { return asmName; }99 DeclarationWithType * set_asmName( Expression * newValue ) { asmName = newValue; return this; }98 Expression * get_asmName() const { return asmName; } 99 DeclarationWithType * set_asmName( Expression * newValue ) { asmName = newValue; return this; } 100 100 101 101 std::list< Attribute * >& get_attributes() { return attributes; } … … 105 105 //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; } 106 106 107 virtual DeclarationWithType * clone() const override = 0;108 virtual DeclarationWithType * acceptMutator( Mutator &m ) override = 0;107 virtual DeclarationWithType * clone() const override = 0; 108 virtual DeclarationWithType * acceptMutator( Mutator & m ) override = 0; 109 109 110 110 virtual Type * get_type() const = 0; … … 118 118 typedef DeclarationWithType Parent; 119 119 public: 120 Type * type;121 Initializer * init;122 Expression * bitfieldWidth;123 124 ObjectDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,120 Type * type; 121 Initializer * init; 122 Expression * bitfieldWidth; 123 124 ObjectDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression * bitfieldWidth, Type * type, Initializer * init, 125 125 const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() ); 126 ObjectDecl( const ObjectDecl & other );126 ObjectDecl( const ObjectDecl & other ); 127 127 virtual ~ObjectDecl(); 128 128 129 129 virtual Type * get_type() const override { return type; } 130 virtual void set_type(Type * newType) override { type = newType; }131 132 Initializer * get_init() const { return init; }133 void set_init( Initializer * newValue ) { init = newValue; }134 135 Expression * get_bitfieldWidth() const { return bitfieldWidth; }136 void set_bitfieldWidth( Expression * newValue ) { bitfieldWidth = newValue; }130 virtual void set_type(Type * newType) override { type = newType; } 131 132 Initializer * get_init() const { return init; } 133 void set_init( Initializer * newValue ) { init = newValue; } 134 135 Expression * get_bitfieldWidth() const { return bitfieldWidth; } 136 void set_bitfieldWidth( Expression * newValue ) { bitfieldWidth = newValue; } 137 137 138 138 static ObjectDecl * newObject( const std::string & name, Type * type, Initializer * init ); 139 139 140 virtual ObjectDecl * clone() const override { return new ObjectDecl( *this ); }141 virtual void accept( Visitor & v ) override { v.visit( this ); } 142 virtual void accept( Visitor & v ) const override { v.visit( this ); } 143 virtual DeclarationWithType * acceptMutator( Mutator &m ) override { return m.mutate( this ); }144 virtual void print( std::ostream & os, Indenter indent = {} ) const override;145 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;140 virtual ObjectDecl * clone() const override { return new ObjectDecl( *this ); } 141 virtual void accept( Visitor & v ) override { v.visit( this ); } 142 virtual void accept( Visitor & v ) const override { v.visit( this ); } 143 virtual DeclarationWithType * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 144 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 145 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 146 146 }; 147 147 … … 149 149 typedef DeclarationWithType Parent; 150 150 public: 151 FunctionType * type;152 CompoundStmt * statements;151 FunctionType * type; 152 CompoundStmt * statements; 153 153 std::list< Expression * > withExprs; 154 154 155 FunctionDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,155 FunctionDecl( const std::string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType * type, CompoundStmt * statements, 156 156 const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() ); 157 FunctionDecl( const FunctionDecl & other );157 FunctionDecl( const FunctionDecl & other ); 158 158 virtual ~FunctionDecl(); 159 159 … … 162 162 163 163 FunctionType * get_functionType() const { return type; } 164 void set_functionType( FunctionType * newValue ) { type = newValue; }165 CompoundStmt * get_statements() const { return statements; }166 void set_statements( CompoundStmt * newValue ) { statements = newValue; }164 void set_functionType( FunctionType * newValue ) { type = newValue; } 165 CompoundStmt * get_statements() const { return statements; } 166 void set_statements( CompoundStmt * newValue ) { statements = newValue; } 167 167 bool has_body() const { return NULL != statements; } 168 168 169 169 static FunctionDecl * newFunction( const std::string & name, FunctionType * type, CompoundStmt * statements ); 170 170 171 virtual FunctionDecl * clone() const override { return new FunctionDecl( *this ); }172 virtual void accept( Visitor & v ) override { v.visit( this ); } 173 virtual void accept( Visitor & v ) const override { v.visit( this ); } 174 virtual DeclarationWithType * acceptMutator( Mutator &m ) override { return m.mutate( this ); }175 virtual void print( std::ostream & os, Indenter indent = {} ) const override;176 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;171 virtual FunctionDecl * clone() const override { return new FunctionDecl( *this ); } 172 virtual void accept( Visitor & v ) override { v.visit( this ); } 173 virtual void accept( Visitor & v ) const override { v.visit( this ); } 174 virtual DeclarationWithType * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 175 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 176 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 177 177 }; 178 178 … … 180 180 typedef Declaration Parent; 181 181 public: 182 Type * base;183 std::list< TypeDecl * > parameters;184 std::list< DeclarationWithType * > assertions;185 186 NamedTypeDecl( const std::string & name, Type::StorageClasses scs, Type *type );187 NamedTypeDecl( const NamedTypeDecl & other );182 Type * base; 183 std::list< TypeDecl * > parameters; 184 std::list< DeclarationWithType * > assertions; 185 186 NamedTypeDecl( const std::string & name, Type::StorageClasses scs, Type * type ); 187 NamedTypeDecl( const NamedTypeDecl & other ); 188 188 virtual ~NamedTypeDecl(); 189 189 190 Type * get_base() const { return base; }191 void set_base( Type * newValue ) { base = newValue; }192 std::list< TypeDecl* > & get_parameters() { return parameters; }193 std::list< DeclarationWithType * >& get_assertions() { return assertions; }190 Type * get_base() const { return base; } 191 void set_base( Type * newValue ) { base = newValue; } 192 std::list< TypeDecl* > & get_parameters() { return parameters; } 193 std::list< DeclarationWithType * >& get_assertions() { return assertions; } 194 194 195 195 virtual const char * typeString() const = 0; 196 196 197 virtual NamedTypeDecl * clone() const override = 0;198 virtual void print( std::ostream & os, Indenter indent = {} ) const override;199 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;197 virtual NamedTypeDecl * clone() const override = 0; 198 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 199 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 200 200 }; 201 201 … … 203 203 typedef NamedTypeDecl Parent; 204 204 public: 205 enum Kind { Dtype, Ftype, Ttype, NUMBER_OF_KINDS }; 206 205 enum Kind { Dtype, Otype, Ftype, Ttype, NUMBER_OF_KINDS }; 206 207 Kind kind; 208 bool sized; 207 209 Type * init; 208 bool sized;209 210 210 211 /// Data extracted from a type decl 211 212 struct Data { 212 TypeDecl::Kind kind;213 Kind kind; 213 214 bool isComplete; 214 215 215 Data() : kind( (TypeDecl::Kind)-1), isComplete( false ) {}216 Data( TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {}216 Data() : kind( NUMBER_OF_KINDS ), isComplete( false ) {} 217 Data( const TypeDecl * typeDecl ) : Data( typeDecl->get_kind(), typeDecl->isComplete() ) {} 217 218 Data( Kind kind, bool isComplete ) : kind( kind ), isComplete( isComplete ) {} 218 Data( const Data & d1, const Data& d2 )219 : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {}220 221 bool operator==( const Data & other) const { return kind == other.kind && isComplete == other.isComplete; }222 bool operator!=( const Data & other) const { return !(*this == other);}219 Data( const Data & d1, const Data & d2 ) 220 : kind( d1.kind ), isComplete( d1.isComplete || d2.isComplete ) {} 221 222 bool operator==( const Data & other ) const { return kind == other.kind && isComplete == other.isComplete; } 223 bool operator!=( const Data & other ) const { return !(*this == other);} 223 224 }; 224 225 225 TypeDecl( const std::string & name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init = nullptr );226 TypeDecl( const TypeDecl & other );226 TypeDecl( const std::string & name, Type::StorageClasses scs, Type * type, Kind kind, bool sized, Type * init = nullptr ); 227 TypeDecl( const TypeDecl & other ); 227 228 virtual ~TypeDecl(); 228 229 … … 239 240 virtual const char * genTypeString() const; 240 241 241 virtual TypeDecl *clone() const override { return new TypeDecl( *this ); } 242 virtual void accept( Visitor & v ) override { v.visit( this ); } 243 virtual void accept( Visitor & v ) const override { v.visit( this ); } 244 virtual Declaration *acceptMutator( Mutator &m ) override { return m.mutate( this ); } 245 virtual void print( std::ostream &os, Indenter indent = {} ) const override; 246 247 Kind kind; 242 virtual TypeDecl * clone() const override { return new TypeDecl( *this ); } 243 virtual void accept( Visitor & v ) override { v.visit( this ); } 244 virtual void accept( Visitor & v ) const override { v.visit( this ); } 245 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 246 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 248 247 }; 249 248 … … 251 250 typedef NamedTypeDecl Parent; 252 251 public: 253 TypedefDecl( const std::string & name, CodeLocation location, Type::StorageClasses scs, Type *type, LinkageSpec::Spec spec = LinkageSpec::Cforall )252 TypedefDecl( const std::string & name, CodeLocation location, Type::StorageClasses scs, Type * type, LinkageSpec::Spec spec = LinkageSpec::Cforall ) 254 253 : Parent( name, scs, type ) { set_linkage( spec ); this->location = location; } 255 254 256 TypedefDecl( const TypedefDecl & other ) : Parent( other ) {}257 258 virtual const char * typeString() const override; 259 260 virtual TypedefDecl * clone() const override { return new TypedefDecl( *this ); }261 virtual void accept( Visitor & v ) override { v.visit( this ); } 262 virtual void accept( Visitor & v ) const override { v.visit( this ); } 263 virtual Declaration * acceptMutator( Mutator &m ) override { return m.mutate( this ); }255 TypedefDecl( const TypedefDecl & other ) : Parent( other ) {} 256 257 virtual const char * typeString() const override; 258 259 virtual TypedefDecl * clone() const override { return new TypedefDecl( *this ); } 260 virtual void accept( Visitor & v ) override { v.visit( this ); } 261 virtual void accept( Visitor & v ) const override { v.visit( this ); } 262 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 264 263 private: 265 264 }; … … 277 276 AggregateDecl * parent = nullptr; 278 277 279 AggregateDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );280 AggregateDecl( const AggregateDecl & other );278 AggregateDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ); 279 AggregateDecl( const AggregateDecl & other ); 281 280 virtual ~AggregateDecl(); 282 281 … … 290 289 AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; } 291 290 292 virtual void print( std::ostream & os, Indenter indent = {} ) const override final;293 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;291 virtual void print( std::ostream & os, Indenter indent = {} ) const override final; 292 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 294 293 protected: 295 294 virtual const char * typeString() const = 0; … … 299 298 typedef AggregateDecl Parent; 300 299 public: 301 StructDecl( const std::string & name, Aggregate kind = Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}302 StructDecl( const StructDecl & other ) : Parent( other ), kind( other.kind ) {}300 StructDecl( const std::string & name, Aggregate kind = Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {} 301 StructDecl( const StructDecl & other ) : Parent( other ), kind( other.kind ) {} 303 302 304 303 bool is_coroutine() { return kind == Coroutine; } … … 306 305 bool is_thread() { return kind == Thread; } 307 306 308 virtual StructDecl * clone() const override { return new StructDecl( *this ); }309 virtual void accept( Visitor & v ) override { v.visit( this ); } 310 virtual void accept( Visitor & v ) const override { v.visit( this ); } 311 virtual Declaration * acceptMutator( Mutator &m ) override { return m.mutate( this ); }307 virtual StructDecl * clone() const override { return new StructDecl( *this ); } 308 virtual void accept( Visitor & v ) override { v.visit( this ); } 309 virtual void accept( Visitor & v ) const override { v.visit( this ); } 310 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 312 311 Aggregate kind; 313 312 private: … … 318 317 typedef AggregateDecl Parent; 319 318 public: 320 UnionDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}321 UnionDecl( const UnionDecl & other ) : Parent( other ) {}322 323 virtual UnionDecl * clone() const override { return new UnionDecl( *this ); }324 virtual void accept( Visitor & v ) override { v.visit( this ); } 325 virtual void accept( Visitor & v ) const override { v.visit( this ); } 326 virtual Declaration * acceptMutator( Mutator &m ) override { return m.mutate( this ); }319 UnionDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {} 320 UnionDecl( const UnionDecl & other ) : Parent( other ) {} 321 322 virtual UnionDecl * clone() const override { return new UnionDecl( *this ); } 323 virtual void accept( Visitor & v ) override { v.visit( this ); } 324 virtual void accept( Visitor & v ) const override { v.visit( this ); } 325 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 327 326 private: 328 327 virtual const char * typeString() const override; … … 332 331 typedef AggregateDecl Parent; 333 332 public: 334 EnumDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {}335 EnumDecl( const EnumDecl & other ) : Parent( other ) {}333 EnumDecl( const std::string & name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ) {} 334 EnumDecl( const EnumDecl & other ) : Parent( other ) {} 336 335 337 336 bool valueOf( Declaration * enumerator, long long int & value ); 338 337 339 virtual EnumDecl * clone() const override { return new EnumDecl( *this ); }340 virtual void accept( Visitor & v ) override { v.visit( this ); } 341 virtual void accept( Visitor & v ) const override { v.visit( this ); } 342 virtual Declaration * acceptMutator( Mutator &m ) override { return m.mutate( this ); }338 virtual EnumDecl * clone() const override { return new EnumDecl( *this ); } 339 virtual void accept( Visitor & v ) override { v.visit( this ); } 340 virtual void accept( Visitor & v ) const override { v.visit( this ); } 341 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 343 342 private: 344 343 std::unordered_map< std::string, long long int > enumValues; … … 349 348 typedef AggregateDecl Parent; 350 349 public: 351 TraitDecl( const std::string & name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {350 TraitDecl( const std::string & name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) { 352 351 assertf( attributes.empty(), "attribute unsupported for traits" ); 353 352 } 354 TraitDecl( const TraitDecl & other ) : Parent( other ) {}355 356 virtual TraitDecl * clone() const override { return new TraitDecl( *this ); }357 virtual void accept( Visitor & v ) override { v.visit( this ); } 358 virtual void accept( Visitor & v ) const override { v.visit( this ); } 359 virtual Declaration * acceptMutator( Mutator &m ) override { return m.mutate( this ); }353 TraitDecl( const TraitDecl & other ) : Parent( other ) {} 354 355 virtual TraitDecl * clone() const override { return new TraitDecl( *this ); } 356 virtual void accept( Visitor & v ) override { v.visit( this ); } 357 virtual void accept( Visitor & v ) const override { v.visit( this ); } 358 virtual Declaration * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 360 359 private: 361 360 virtual const char * typeString() const override; … … 381 380 class AsmDecl : public Declaration { 382 381 public: 383 AsmStmt * stmt;384 385 AsmDecl( AsmStmt * stmt );386 AsmDecl( const AsmDecl & other );382 AsmStmt * stmt; 383 384 AsmDecl( AsmStmt * stmt ); 385 AsmDecl( const AsmDecl & other ); 387 386 virtual ~AsmDecl(); 388 387 389 AsmStmt * get_stmt() { return stmt; }390 void set_stmt( AsmStmt * newValue ) { stmt = newValue; }391 392 virtual AsmDecl * clone() const override { return new AsmDecl( *this ); }393 virtual void accept( Visitor & v ) override { v.visit( this ); } 394 virtual void accept( Visitor & v ) const override { v.visit( this ); } 395 virtual AsmDecl * acceptMutator( Mutator &m ) override { return m.mutate( this ); }396 virtual void print( std::ostream & os, Indenter indent = {} ) const override;397 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;388 AsmStmt * get_stmt() { return stmt; } 389 void set_stmt( AsmStmt * newValue ) { stmt = newValue; } 390 391 virtual AsmDecl * clone() const override { return new AsmDecl( *this ); } 392 virtual void accept( Visitor & v ) override { v.visit( this ); } 393 virtual void accept( Visitor & v ) const override { v.visit( this ); } 394 virtual AsmDecl * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 395 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 396 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 398 397 }; 399 398 … … 410 409 virtual void accept( Visitor & v ) override { v.visit( this ); } 411 410 virtual void accept( Visitor & v ) const override { v.visit( this ); } 412 virtual StaticAssertDecl * acceptMutator( Mutator & m ) override { return m.mutate( this ); }413 virtual void print( std::ostream & os, Indenter indent = {} ) const override;414 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;411 virtual StaticAssertDecl * acceptMutator( Mutator & m ) override { return m.mutate( this ); } 412 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 413 virtual void printShort( std::ostream & os, Indenter indent = {} ) const override; 415 414 }; 416 415 -
src/SynTree/DeclarationWithType.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 16 08:34:35 201713 // Update Count : 2 512 // Last Modified On : Fri Dec 13 23:45:16 2019 13 // Update Count : 26 14 14 // 15 15 … … 20 20 #include "Common/utility.h" // for cloneAll, deleteAll, maybeClone 21 21 #include "Declaration.h" // for DeclarationWithType, Declaration 22 #include " Parser/LinkageSpec.h"// for Spec23 #include " SynTree/Expression.h"// for ConstantExpr22 #include "LinkageSpec.h" // for Spec 23 #include "Expression.h" // for ConstantExpr 24 24 #include "Type.h" // for Type, Type::FuncSpecifiers, Type::St... 25 25 -
src/SynTree/FunctionDecl.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Dec 7 17:40:09201913 // Update Count : 7 512 // Last Modified On : Fri Dec 13 23:10:34 2019 13 // Update Count : 76 14 14 // 15 15 … … 24 24 #include "Declaration.h" // for FunctionDecl, FunctionDecl::Parent 25 25 #include "Expression.h" 26 #include " Parser/LinkageSpec.h"// for Spec, linkageName, Cforall26 #include "LinkageSpec.h" // for Spec, linkageName, Cforall 27 27 #include "Statement.h" // for CompoundStmt 28 28 #include "Type.h" // for Type, FunctionType, Type::FuncSpecif... -
src/SynTree/NamedTypeDecl.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 08:26:17201913 // Update Count : 1 512 // Last Modified On : Fri Dec 13 23:44:24 2019 13 // Update Count : 16 14 14 // 15 15 … … 20 20 #include "Common/utility.h" // for printAll, cloneAll, deleteAll, maybe... 21 21 #include "Declaration.h" // for NamedTypeDecl, DeclarationWithType 22 #include " Parser/LinkageSpec.h"// for Spec, Cforall, linkageName22 #include "LinkageSpec.h" // for Spec, Cforall, linkageName 23 23 #include "Type.h" // for Type, Type::StorageClasses 24 24 -
src/SynTree/ObjectDecl.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 16 08:34:27 201713 // Update Count : 5912 // Last Modified On : Fri Dec 13 23:44:50 2019 13 // Update Count : 60 14 14 // 15 15 … … 23 23 #include "Expression.h" // for Expression 24 24 #include "Initializer.h" // for Initializer 25 #include " Parser/LinkageSpec.h"// for Spec, linkageName, Cforall25 #include "LinkageSpec.h" // for Spec, linkageName, Cforall 26 26 #include "Type.h" // for Type, Type::StorageClasses, Type::Fu... 27 27 -
src/SynTree/TupleType.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 1 17:10:58 201713 // Update Count : 312 // Last Modified On : Fri Dec 13 23:44:38 2019 13 // Update Count : 4 14 14 // 15 15 … … 20 20 #include "Declaration.h" // for Declaration, ObjectDecl 21 21 #include "Initializer.h" // for ListInit 22 #include " Parser/LinkageSpec.h"// for Cforall22 #include "LinkageSpec.h" // for Cforall 23 23 #include "Type.h" // for TupleType, Type, Type::Qualifiers 24 24 -
src/SynTree/TypeDecl.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 11 17:56:30201913 // Update Count : 1012 // Last Modified On : Fri Dec 13 15:26:14 2019 13 // Update Count : 21 14 14 // 15 15 … … 18 18 19 19 #include "Common/utility.h" // for maybeClone 20 #include "Parser/ParseNode.h"21 20 #include "Declaration.h" // for TypeDecl, TypeDecl::Data, TypeDecl::Kind... 22 21 #include "Type.h" // for Type, Type::StorageClasses 23 22 24 TypeDecl::TypeDecl( const std::string & name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init ) : Parent( name, scs, type ), init( init ), sized( kind == Ttype || sized ), kind( kind) {23 TypeDecl::TypeDecl( const std::string & name, Type::StorageClasses scs, Type * type, Kind kind, bool sized, Type * init ) : Parent( name, scs, type ), kind( kind ), sized( kind == Ttype || sized ), init( init ) { 25 24 } 26 25 27 TypeDecl::TypeDecl( const TypeDecl & other ) : Parent( other ), init( maybeClone( other.init ) ), sized( other.sized ), kind( other.kind) {26 TypeDecl::TypeDecl( const TypeDecl & other ) : Parent( other ), kind( other.kind ), sized( other.sized ), init( maybeClone( other.init ) ) { 28 27 } 29 28 30 29 TypeDecl::~TypeDecl() { 31 30 delete init; 32 31 } 33 32 34 33 const char * TypeDecl::typeString() const { 35 static const char * kindNames[] = { "sized object type", "sized function type", "sized tuple type" };36 assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, "typeString: kindNames is out of sync." );37 assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl'skind is out of bounds." );34 static const char * kindNames[] = { "sized data type", "sized object type", "sized function type", "sized tuple type" }; 35 static_assert( sizeof(kindNames)/sizeof(kindNames[0]) == TypeDecl::NUMBER_OF_KINDS, "typeString: kindNames is out of sync." ); 36 assertf( kind < TypeDecl::NUMBER_OF_KINDS, "TypeDecl kind is out of bounds." ); 38 37 return isComplete() ? kindNames[ kind ] : &kindNames[ kind ][ sizeof("sized") ]; // sizeof includes '\0' 39 38 } 40 39 41 40 const char * TypeDecl::genTypeString() const { 42 static const char * kindNames[] = { "dtype", " ftype", "ttype" };43 assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, "genTypeString: kindNames is out of sync." );44 assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl'skind is out of bounds." );41 static const char * kindNames[] = { "dtype", "otype", "ftype", "ttype" }; 42 static_assert( sizeof(kindNames)/sizeof(kindNames[0]) == TypeDecl::NUMBER_OF_KINDS, "genTypeString: kindNames is out of sync." ); 43 assertf( kind < TypeDecl::NUMBER_OF_KINDS, "TypeDecl kind is out of bounds." ); 45 44 return kindNames[ kind ]; 46 45 } 47 46 48 47 void TypeDecl::print( std::ostream &os, Indenter indent ) const { 49 50 51 52 53 } 48 NamedTypeDecl::print( os, indent ); 49 if ( init ) { 50 os << std::endl << indent << "with type initializer: "; 51 init->print( os, indent + 1 ); 52 } // if 54 53 } 55 54 56 57 55 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data ) { 58 56 return os << data.kind << ", " << data.isComplete; 59 57 } 60 58 -
src/SynTree/module.mk
rab5c0008 r07de76b 11 11 ## Created On : Mon Jun 1 17:49:17 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Mon Jun 1 17:54:09 201514 ## Update Count : 113 ## Last Modified On : Sat Dec 14 07:26:43 2019 14 ## Update Count : 2 15 15 ############################################################################### 16 16 17 17 SRC_SYNTREE = \ 18 SynTree/Type.cc \ 19 SynTree/VoidType.cc \ 18 SynTree/AddressExpr.cc \ 19 SynTree/AggregateDecl.cc \ 20 SynTree/ApplicationExpr.cc \ 21 SynTree/ArrayType.cc \ 22 SynTree/AttrType.cc \ 23 SynTree/Attribute.cc \ 20 24 SynTree/BasicType.cc \ 21 SynTree/PointerType.cc \ 22 SynTree/ArrayType.cc \ 23 SynTree/ReferenceType.cc \ 24 SynTree/FunctionType.cc \ 25 SynTree/ReferenceToType.cc \ 26 SynTree/TupleType.cc \ 27 SynTree/TypeofType.cc \ 28 SynTree/AttrType.cc \ 29 SynTree/VarArgsType.cc \ 30 SynTree/ZeroOneType.cc \ 25 SynTree/CommaExpr.cc \ 26 SynTree/CompoundStmt.cc \ 31 27 SynTree/Constant.cc \ 32 SynTree/Expression.cc \ 33 SynTree/TupleExpr.cc \ 34 SynTree/CommaExpr.cc \ 35 SynTree/TypeExpr.cc \ 36 SynTree/ApplicationExpr.cc \ 37 SynTree/AddressExpr.cc \ 38 SynTree/Statement.cc \ 39 SynTree/CompoundStmt.cc \ 28 SynTree/DeclReplacer.cc \ 40 29 SynTree/DeclStmt.cc \ 41 30 SynTree/Declaration.cc \ 42 31 SynTree/DeclarationWithType.cc \ 32 SynTree/Expression.cc \ 33 SynTree/FunctionDecl.cc \ 34 SynTree/FunctionType.cc \ 35 SynTree/Initializer.cc \ 36 SynTree/LinkageSpec.cc \ 37 SynTree/NamedTypeDecl.cc \ 43 38 SynTree/ObjectDecl.cc \ 44 SynTree/FunctionDecl.cc \ 45 SynTree/AggregateDecl.cc \ 46 SynTree/NamedTypeDecl.cc \ 39 SynTree/PointerType.cc \ 40 SynTree/ReferenceToType.cc \ 41 SynTree/ReferenceType.cc \ 42 SynTree/Statement.cc \ 43 SynTree/TupleExpr.cc \ 44 SynTree/TupleType.cc \ 45 SynTree/Type.cc \ 47 46 SynTree/TypeDecl.cc \ 48 SynTree/ Initializer.cc \47 SynTree/TypeExpr.cc \ 49 48 SynTree/TypeSubstitution.cc \ 50 SynTree/Attribute.cc \ 51 SynTree/DeclReplacer.cc 49 SynTree/TypeofType.cc \ 50 SynTree/VarArgsType.cc \ 51 SynTree/VoidType.cc \ 52 SynTree/ZeroOneType.cc 52 53 53 54 SRC += $(SRC_SYNTREE) -
src/Tuples/TupleAssignment.cc
rab5c0008 r07de76b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:43:03 201713 // Update Count : 812 // Last Modified On : Fri Dec 13 23:45:33 2019 13 // Update Count : 9 14 14 // 15 15 … … 34 34 #include "InitTweak/GenInit.h" // for genCtorInit 35 35 #include "InitTweak/InitTweak.h" // for getPointerBase, isAssignment 36 #include "Parser/LinkageSpec.h" // for Cforall37 36 #include "ResolvExpr/Alternative.h" // for AltList, Alternative 38 37 #include "ResolvExpr/AlternativeFinder.h" // for AlternativeFinder, simpleC... … … 41 40 #include "ResolvExpr/TypeEnvironment.h" // for TypeEnvironment 42 41 #include "ResolvExpr/typeops.h" // for combos 42 #include "SynTree/LinkageSpec.h" // for Cforall 43 43 #include "SynTree/Declaration.h" // for ObjectDecl 44 44 #include "SynTree/Expression.h" // for Expression, CastExpr, Name... -
src/Tuples/TupleExpansion.cc
rab5c0008 r07de76b 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jul 19 14:39:00201913 // Update Count : 2 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Dec 13 23:45:51 2019 13 // Update Count : 24 14 14 // 15 15 … … 27 27 #include "Common/utility.h" // for CodeLocation 28 28 #include "InitTweak/InitTweak.h" // for getFunction 29 #include " Parser/LinkageSpec.h"// for Spec, C, Intrinsic29 #include "SynTree/LinkageSpec.h" // for Spec, C, Intrinsic 30 30 #include "SynTree/Constant.h" // for Constant 31 31 #include "SynTree/Declaration.h" // for StructDecl, DeclarationWithType … … 361 361 const ast::TypeInstType * isTtype( const ast::Type * type ) { 362 362 if ( const ast::TypeInstType * inst = dynamic_cast< const ast::TypeInstType * >( type ) ) { 363 if ( inst->base && inst->base->kind == ast::Type Var::Ttype ) {363 if ( inst->base && inst->base->kind == ast::TypeDecl::Ttype ) { 364 364 return inst; 365 365 } -
tests/.expect/completeTypeError.txt
rab5c0008 r07de76b 10 10 Application of 11 11 Variable Expression: *?: forall 12 DT: objecttype12 DT: data type 13 13 function 14 14 ... with parameters … … 33 33 Application of 34 34 Variable Expression: *?: forall 35 DT: objecttype35 DT: data type 36 36 function 37 37 ... with parameters … … 87 87 Cost ( 0, 1, 0, 0, 1, -5, 0 ): Application of 88 88 Variable Expression: baz: forall 89 T: sized objecttype89 T: sized data type 90 90 ... with assertions 91 91 ?=?: pointer to function
Note: See TracChangeset
for help on using the changeset viewer.