Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 59a5bec

Browse files
author
alexet
committed
CPP: Use more field overriding
1 parent 6243c72 commit 59a5bec

1 file changed

Lines changed: 43 additions & 84 deletions

File tree

cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll

Lines changed: 43 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,7 @@ class TranslatedEmptyStmt extends TranslatedStmt {
6969
}
7070

7171
class TranslatedDeclStmt extends TranslatedStmt {
72-
DeclStmt declStmt;
73-
74-
TranslatedDeclStmt() {
75-
declStmt = stmt
76-
}
72+
override DeclStmt stmt;
7773

7874
override TranslatedElement getChild(int id) {
7975
result = getDeclarationEntry(id)
@@ -89,11 +85,11 @@ class TranslatedDeclStmt extends TranslatedStmt {
8985
}
9086

9187
private int getChildCount() {
92-
result = declStmt.getNumDeclarations()
88+
result = stmt.getNumDeclarations()
9389
}
9490

9591
private TranslatedDeclarationEntry getDeclarationEntry(int index) {
96-
result = getTranslatedDeclarationEntry(declStmt.getDeclarationEntry(index))
92+
result = getTranslatedDeclarationEntry(stmt.getDeclarationEntry(index))
9793
}
9894

9995
override Instruction getInstructionSuccessor(InstructionTag tag,
@@ -113,9 +109,7 @@ class TranslatedDeclStmt extends TranslatedStmt {
113109
}
114110

115111
class TranslatedExprStmt extends TranslatedStmt {
116-
TranslatedExprStmt() {
117-
stmt instanceof ExprStmt
118-
}
112+
override ExprStmt stmt;
119113

120114
TranslatedExpr getExpr() {
121115
result = getTranslatedExpr(stmt.(ExprStmt).getExpr().getFullyConverted())
@@ -146,21 +140,17 @@ class TranslatedExprStmt extends TranslatedStmt {
146140
}
147141

148142
abstract class TranslatedReturnStmt extends TranslatedStmt {
149-
ReturnStmt returnStmt;
150-
151-
TranslatedReturnStmt() {
152-
returnStmt = stmt
153-
}
143+
override ReturnStmt stmt;
154144

155145
final TranslatedFunction getEnclosingFunction() {
156-
result = getTranslatedFunction(returnStmt.getEnclosingFunction())
146+
result = getTranslatedFunction(stmt.getEnclosingFunction())
157147
}
158148
}
159149

160150
class TranslatedReturnValueStmt extends TranslatedReturnStmt,
161151
InitializationContext {
162152
TranslatedReturnValueStmt() {
163-
returnStmt.hasExpr()
153+
stmt.hasExpr()
164154
}
165155

166156
override TranslatedElement getChild(int id) {
@@ -206,13 +196,13 @@ class TranslatedReturnValueStmt extends TranslatedReturnStmt,
206196

207197
TranslatedInitialization getInitialization() {
208198
result = getTranslatedInitialization(
209-
returnStmt.getExpr().getFullyConverted())
199+
stmt.getExpr().getFullyConverted())
210200
}
211201
}
212202

213203
class TranslatedReturnVoidStmt extends TranslatedReturnStmt {
214204
TranslatedReturnVoidStmt() {
215-
not returnStmt.hasExpr()
205+
not stmt.hasExpr()
216206
}
217207

218208
override TranslatedElement getChild(int id) {
@@ -247,11 +237,7 @@ class TranslatedReturnVoidStmt extends TranslatedReturnStmt {
247237
* The IR translation of a C++ `try` statement.
248238
*/
249239
class TranslatedTryStmt extends TranslatedStmt {
250-
TryStmt try;
251-
252-
TranslatedTryStmt() {
253-
try = stmt
254-
}
240+
override TryStmt stmt;
255241

256242
override TranslatedElement getChild(int id) {
257243
id = 0 and result = getBody() or
@@ -286,7 +272,7 @@ class TranslatedTryStmt extends TranslatedStmt {
286272
// The last catch clause flows to the exception successor of the parent
287273
// of the `try`, because the exception successor of the `try` itself is
288274
// the first catch clause.
289-
handler = getHandler(try.getNumberOfCatchClauses()) and
275+
handler = getHandler(stmt.getNumberOfCatchClauses()) and
290276
result = getParent().getExceptionSuccessorInstruction()
291277
)
292278
}
@@ -296,20 +282,16 @@ class TranslatedTryStmt extends TranslatedStmt {
296282
}
297283

298284
private TranslatedHandler getHandler(int index) {
299-
result = getTranslatedStmt(try.getChild(index + 1))
285+
result = getTranslatedStmt(stmt.getChild(index + 1))
300286
}
301287

302288
private TranslatedStmt getBody() {
303-
result = getTranslatedStmt(try.getStmt())
289+
result = getTranslatedStmt(stmt.getStmt())
304290
}
305291
}
306292

307293
class TranslatedBlock extends TranslatedStmt {
308-
Block block;
309-
310-
TranslatedBlock() {
311-
block = stmt
312-
}
294+
override Block stmt;
313295

314296
override TranslatedElement getChild(int id) {
315297
result = getStmt(id)
@@ -332,15 +314,15 @@ class TranslatedBlock extends TranslatedStmt {
332314
}
333315

334316
private predicate isEmpty() {
335-
not exists(block.getStmt(0))
317+
not exists(stmt.getStmt(0))
336318
}
337319

338320
private TranslatedStmt getStmt(int index) {
339-
result = getTranslatedStmt(block.getStmt(index))
321+
result = getTranslatedStmt(stmt.getStmt(index))
340322
}
341323

342324
private int getStmtCount() {
343-
result = block.getNumStmt()
325+
result = stmt.getNumStmt()
344326
}
345327

346328
override Instruction getInstructionSuccessor(InstructionTag tag,
@@ -365,11 +347,7 @@ class TranslatedBlock extends TranslatedStmt {
365347
* The IR translation of a C++ `catch` handler.
366348
*/
367349
abstract class TranslatedHandler extends TranslatedStmt {
368-
Handler handler;
369-
370-
TranslatedHandler() {
371-
handler = stmt
372-
}
350+
override Handler stmt;
373351

374352
override TranslatedElement getChild(int id) {
375353
id = 1 and result = getBlock()
@@ -390,7 +368,7 @@ abstract class TranslatedHandler extends TranslatedStmt {
390368
}
391369

392370
TranslatedStmt getBlock() {
393-
result = getTranslatedStmt(handler.getBlock())
371+
result = getTranslatedStmt(stmt.getBlock())
394372
}
395373
}
396374

@@ -400,7 +378,7 @@ abstract class TranslatedHandler extends TranslatedStmt {
400378
*/
401379
class TranslatedCatchByTypeHandler extends TranslatedHandler {
402380
TranslatedCatchByTypeHandler() {
403-
exists(handler.getParameter())
381+
exists(stmt.getParameter())
404382
}
405383

406384
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
@@ -438,11 +416,11 @@ class TranslatedCatchByTypeHandler extends TranslatedHandler {
438416

439417
override Type getInstructionExceptionType(InstructionTag tag) {
440418
tag = CatchTag() and
441-
result = handler.getParameter().getType()
419+
result = stmt.getParameter().getType()
442420
}
443421

444422
private TranslatedParameter getParameter() {
445-
result = getTranslatedParameter(handler.getParameter())
423+
result = getTranslatedParameter(stmt.getParameter())
446424
}
447425
}
448426

@@ -451,7 +429,7 @@ class TranslatedCatchByTypeHandler extends TranslatedHandler {
451429
*/
452430
class TranslatedCatchAnyHandler extends TranslatedHandler {
453431
TranslatedCatchAnyHandler() {
454-
not exists(handler.getParameter())
432+
not exists(stmt.getParameter())
455433
}
456434

457435
override predicate hasInstruction(Opcode opcode, InstructionTag tag,
@@ -471,11 +449,8 @@ class TranslatedCatchAnyHandler extends TranslatedHandler {
471449
}
472450

473451
class TranslatedIfStmt extends TranslatedStmt, ConditionContext {
474-
IfStmt ifStmt;
452+
override IfStmt stmt;
475453

476-
TranslatedIfStmt() {
477-
stmt = ifStmt
478-
}
479454

480455
override Instruction getFirstInstruction() {
481456
result = getCondition().getFirstInstruction()
@@ -488,19 +463,19 @@ class TranslatedIfStmt extends TranslatedStmt, ConditionContext {
488463
}
489464

490465
private TranslatedCondition getCondition() {
491-
result = getTranslatedCondition(ifStmt.getCondition().getFullyConverted())
466+
result = getTranslatedCondition(stmt.getCondition().getFullyConverted())
492467
}
493468

494469
private TranslatedStmt getThen() {
495-
result = getTranslatedStmt(ifStmt.getThen())
470+
result = getTranslatedStmt(stmt.getThen())
496471
}
497472

498473
private TranslatedStmt getElse() {
499-
result = getTranslatedStmt(ifStmt.getElse())
474+
result = getTranslatedStmt(stmt.getElse())
500475
}
501476

502477
private predicate hasElse() {
503-
exists(ifStmt.getElse())
478+
exists(stmt.getElse())
504479
}
505480

506481
override Instruction getInstructionSuccessor(InstructionTag tag,
@@ -533,18 +508,14 @@ class TranslatedIfStmt extends TranslatedStmt, ConditionContext {
533508
}
534509

535510
abstract class TranslatedLoop extends TranslatedStmt, ConditionContext {
536-
Loop loop;
537-
538-
TranslatedLoop() {
539-
loop = stmt
540-
}
511+
override Loop stmt;
541512

542513
final TranslatedCondition getCondition() {
543-
result = getTranslatedCondition(loop.getCondition().getFullyConverted())
514+
result = getTranslatedCondition(stmt.getCondition().getFullyConverted())
544515
}
545516

546517
final TranslatedStmt getBody() {
547-
result = getTranslatedStmt(loop.getStmt())
518+
result = getTranslatedStmt(stmt.getStmt())
548519
}
549520

550521
final Instruction getFirstConditionInstruction() {
@@ -555,7 +526,7 @@ abstract class TranslatedLoop extends TranslatedStmt, ConditionContext {
555526
}
556527

557528
final predicate hasCondition() {
558-
exists(loop.getCondition())
529+
exists(stmt.getCondition())
559530
}
560531

561532
override TranslatedElement getChild(int id) {
@@ -611,11 +582,7 @@ class TranslatedDoStmt extends TranslatedLoop {
611582
}
612583

613584
class TranslatedForStmt extends TranslatedLoop {
614-
ForStmt forStmt;
615-
616-
TranslatedForStmt() {
617-
forStmt = stmt
618-
}
585+
override ForStmt stmt;
619586

620587
override TranslatedElement getChild(int id) {
621588
id = 0 and result = getInitialization() or
@@ -625,19 +592,19 @@ class TranslatedForStmt extends TranslatedLoop {
625592
}
626593

627594
private TranslatedStmt getInitialization() {
628-
result = getTranslatedStmt(forStmt.getInitialization())
595+
result = getTranslatedStmt(stmt.getInitialization())
629596
}
630597

631598
private predicate hasInitialization() {
632-
exists(forStmt.getInitialization())
599+
exists(stmt.getInitialization())
633600
}
634601

635602
TranslatedExpr getUpdate() {
636-
result = getTranslatedExpr(forStmt.getUpdate().getFullyConverted())
603+
result = getTranslatedExpr(stmt.getUpdate().getFullyConverted())
637604
}
638605

639606
private predicate hasUpdate() {
640-
exists(forStmt.getUpdate())
607+
exists(stmt.getUpdate())
641608
}
642609

643610
override Instruction getFirstInstruction() {
@@ -664,11 +631,7 @@ class TranslatedForStmt extends TranslatedLoop {
664631
}
665632

666633
class TranslatedJumpStmt extends TranslatedStmt {
667-
JumpStmt jump;
668-
669-
TranslatedJumpStmt() {
670-
stmt = jump
671-
}
634+
override JumpStmt stmt;
672635

673636
override Instruction getFirstInstruction() {
674637
result = getInstruction(OnlyInstructionTag())
@@ -690,7 +653,7 @@ class TranslatedJumpStmt extends TranslatedStmt {
690653
EdgeKind kind) {
691654
tag = OnlyInstructionTag() and
692655
kind instanceof GotoEdge and
693-
result = getTranslatedStmt(jump.getTarget()).getFirstInstruction()
656+
result = getTranslatedStmt(stmt.getTarget()).getFirstInstruction()
694657
}
695658

696659
override Instruction getChildSuccessor(TranslatedElement child) {
@@ -699,18 +662,14 @@ class TranslatedJumpStmt extends TranslatedStmt {
699662
}
700663

701664
class TranslatedSwitchStmt extends TranslatedStmt {
702-
SwitchStmt switchStmt;
703-
704-
TranslatedSwitchStmt() {
705-
switchStmt = stmt
706-
}
665+
override SwitchStmt stmt;
707666

708667
private TranslatedExpr getExpr() {
709-
result = getTranslatedExpr(switchStmt.getExpr().getFullyConverted())
668+
result = getTranslatedExpr(stmt.getExpr().getFullyConverted())
710669
}
711670

712671
private TranslatedStmt getBody() {
713-
result = getTranslatedStmt(switchStmt.getStmt())
672+
result = getTranslatedStmt(stmt.getStmt())
714673
}
715674

716675
override Instruction getFirstInstruction() {
@@ -741,7 +700,7 @@ class TranslatedSwitchStmt extends TranslatedStmt {
741700
EdgeKind kind) {
742701
tag = SwitchBranchTag() and
743702
exists(SwitchCase switchCase |
744-
switchCase = switchStmt.getASwitchCase() and
703+
switchCase = stmt.getASwitchCase() and
745704
kind = getCaseEdge(switchCase) and
746705
result = getTranslatedStmt(switchCase).getFirstInstruction()
747706
)

0 commit comments

Comments
 (0)