MCPcopy Create free account
hub / github.com/LFYSec/MScan / AssignStmt

Class AssignStmt

src/main/java/pascal/taie/ir/stmt/AssignStmt.java:39–82  ·  view source on GitHub ↗

Representation of assign statements. @param type of lvalue. @param type of rvalue.

Source from the content-addressed store, hash-verified

37 * @param <R> type of rvalue.
38 */
39public abstract class AssignStmt<L extends LValue, R extends RValue>
40 extends DefinitionStmt<L, R> {
41
42 private final L lvalue;
43
44 private final R rvalue;
45
46 public AssignStmt(L lvalue, R rvalue) {
47 this.lvalue = lvalue;
48 this.rvalue = rvalue;
49 }
50
51 @Override
52 @Nonnull
53 public L getLValue() {
54 return lvalue;
55 }
56
57 @Override
58 public R getRValue() {
59 return rvalue;
60 }
61
62 @Override
63 public Optional<LValue> getDef() {
64 return Optional.of(lvalue);
65 }
66
67 @Override
68 public Set<RValue> getUses() {
69 Set<RValue> lUses = lvalue.getUses();
70 Set<RValue> rUses = rvalue.getUses();
71 Set<RValue> uses = new ArraySet<>(lUses.size() + rUses.size() + 1);
72 uses.addAll(lUses);
73 uses.addAll(rUses);
74 uses.add(rvalue);
75 return uses;
76 }
77
78 @Override
79 public String toString() {
80 return lvalue + " = " + rvalue;
81 }
82}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected