Changeset 69bafd2 for src/AST/Type.hpp
- Timestamp:
- May 15, 2019, 3:57:26 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 3648d98
- Parents:
- 9e1d485 (diff), be567e9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Type.hpp
r9e1d485 r69bafd2 67 67 virtual bool isComplete() const { return true; } 68 68 69 virtual Type * accept( Visitor & v )override = 0;69 virtual const Type * accept( Visitor & v ) const override = 0; 70 70 private: 71 71 virtual Type * clone() const override = 0; … … 81 81 bool isComplete() const override { return false; } 82 82 83 Type * accept( Visitor & v )override { return v.visit( this ); }83 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 84 84 private: 85 85 VoidType * clone() const override { return new VoidType{ *this }; } … … 143 143 bool isInteger() const { return kind <= MAX_INTEGER_TYPE; } 144 144 145 Type * accept( Visitor & v )override { return v.visit( this ); }145 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 146 146 private: 147 147 BasicType * clone() const override { return new BasicType{ *this }; } … … 173 173 bool isComplete() const override { return ! isVarLen; } 174 174 175 Type * accept( Visitor & v )override { return v.visit( this ); }175 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 176 176 private: 177 177 PointerType * clone() const override { return new PointerType{ *this }; } … … 194 194 bool isComplete() const override { return dimension || isVarLen; } 195 195 196 Type * accept( Visitor & v )override { return v.visit( this ); }196 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 197 197 private: 198 198 ArrayType * clone() const override { return new ArrayType{ *this }; } … … 213 213 unsigned size() const override { return base->size(); } 214 214 215 Type * accept( Visitor & v )override { return v.visit( this ); }215 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 216 216 private: 217 217 ReferenceType * clone() const override { return new ReferenceType{ *this }; } … … 227 227 : Type(q), parent(p), child(c) {} 228 228 229 Type * accept( Visitor & v )override { return v.visit( this ); }229 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 230 230 private: 231 231 QualifiedType * clone() const override { return new QualifiedType{ *this }; } … … 271 271 bool isUnprototyped() const { return isVarArgs && parameters.size() == 0; } 272 272 273 Type * accept( Visitor & v )override { return v.visit( this ); }273 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 274 274 private: 275 275 FunctionType * clone() const override { return new FunctionType{ *this }; } … … 316 316 const StructDecl * aggr() const override { return base; } 317 317 318 Type * accept( Visitor & v )override { return v.visit( this ); }318 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 319 319 private: 320 320 StructInstType * clone() const override { return new StructInstType{ *this }; } … … 338 338 const UnionDecl * aggr() const override { return base; } 339 339 340 Type * accept( Visitor & v )override { return v.visit( this ); }340 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 341 341 private: 342 342 UnionInstType * clone() const override { return new UnionInstType{ *this }; } … … 360 360 const EnumDecl * aggr() const override { return base; } 361 361 362 Type * accept( Visitor & v )override { return v.visit( this ); }362 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 363 363 private: 364 364 EnumInstType * clone() const override { return new EnumInstType{ *this }; } … … 383 383 const TraitDecl * aggr() const override { return base; } 384 384 385 Type * accept( Visitor & v )override { return v.visit( this ); }385 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 386 386 private: 387 387 TraitInstType * clone() const override { return new TraitInstType{ *this }; } … … 411 411 const AggregateDecl * aggr() const override { assert(false); } 412 412 413 Type * accept( Visitor & v )override { return v.visit( this ); }413 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 414 414 private: 415 415 TypeInstType * clone() const override { return new TypeInstType{ *this }; } … … 439 439 } 440 440 441 Type * accept( Visitor & v )override { return v.visit( this ); }441 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 442 442 private: 443 443 TupleType * clone() const override { return new TupleType{ *this }; } … … 453 453 : Type(q), expr(e), kind(k) {} 454 454 455 Type * accept( Visitor & v )override { return v.visit( this ); }455 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 456 456 private: 457 457 TypeofType * clone() const override { return new TypeofType{ *this }; } … … 463 463 VarArgsType( CV::Qualifiers q = {} ) : Type( q ) {} 464 464 465 Type * accept( Visitor & v )override { return v.visit( this ); }465 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 466 466 private: 467 467 VarArgsType * clone() const override { return new VarArgsType{ *this }; } … … 473 473 ZeroType( CV::Qualifiers q = {} ) : Type( q ) {} 474 474 475 Type * accept( Visitor & v )override { return v.visit( this ); }475 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 476 476 private: 477 477 ZeroType * clone() const override { return new ZeroType{ *this }; } … … 483 483 OneType( CV::Qualifiers q = {} ) : Type( q ) {} 484 484 485 Type * accept( Visitor & v )override { return v.visit( this ); }485 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 486 486 private: 487 487 OneType * clone() const override { return new OneType{ *this }; } … … 493 493 GlobalScopeType( CV::Qualifiers q = {} ) : Type( q ) {} 494 494 495 Type * accept( Visitor & v )override { return v.visit( this ); }495 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 496 496 private: 497 497 GlobalScopeType * clone() const override { return new GlobalScopeType{ *this }; }
Note: See TracChangeset
for help on using the changeset viewer.