- File:
-
- 1 edited
-
src/GenPoly/InstantiateGenericNew.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/InstantiateGenericNew.cpp
r1dafdfc r0b1ca47 10 10 // Created On : Tue Aug 16 10:51:00 2022 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Oct 31 16:48:00 202213 // Update Count : 112 // Last Modified On : Tue Sep 13 16:03:00 2022 13 // Update Count : 0 14 14 // 15 15 … … 378 378 // Ptr(int) p; 379 379 // int i; 380 // The original expression:381 380 // p.x = &i; 382 // Becomes the expression/declaration: 383 // int *& _dtype_static_member_0; 384 // (_dtype_static_member_0 = (int**)&p.x, 385 // _dtype_static_member_0) = &i; 386 387 // The declaration is simple: 381 // becomes 382 // int *& _dtype_static_member_0 = (int **)&p.x; 383 // _dtype_static_member_0 = &i; 388 384 static UniqueName tmpNamer( "_dtype_static_member_" ); 385 ast::Expr * init = new ast::CastExpr( location, 386 new ast::AddressExpr( location, memberExpr ), 387 new ast::PointerType( ast::deepCopy( concType ) ), 388 ast::ExplicitCast 389 ); 389 390 ast::ObjectDecl * tmp = new ast::ObjectDecl( location, 390 391 tmpNamer.newName(), 391 392 new ast::ReferenceType( concType ), 392 n ullptr,393 new ast::SingleInit( location, init ), 393 394 ast::Storage::Classes(), 394 395 ast::Linkage::C 395 396 ); 396 397 stmtsToAddBefore.push_back( new ast::DeclStmt( location, tmp ) ); 397 398 // The expression is more complex, uses references and reference / 399 // pointer parity. But breaking it up risks reordering. 400 return new ast::CommaExpr( location, 401 ast::UntypedExpr::createAssign( location, 402 new ast::VariableExpr( location, tmp ), 403 new ast::CastExpr( location, 404 new ast::AddressExpr( location, memberExpr ), 405 new ast::PointerType( ast::deepCopy( concType ) ), 406 ast::ExplicitCast 407 ) 408 ), 409 new ast::VariableExpr( location, tmp ) 410 ); 398 return new ast::VariableExpr( location, tmp ); 411 399 } else { 412 400 // Here, it can simply add a cast to actual types.
Note:
See TracChangeset
for help on using the changeset viewer.