Skip to content

Commit 1f87fcb

Browse files
authored
Merge pull request #663 from soot-oss/fix/Position
Fix null<>nonnull w/Position
2 parents af2751c + 70873ef commit 1f87fcb

File tree

5 files changed

+22
-57
lines changed

5 files changed

+22
-57
lines changed

sootup.core/src/main/java/sootup/core/jimple/basic/FullStmtPositionInfo.java

+7-13
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424

2525
import javax.annotation.Nonnull;
26-
import sootup.core.model.FullPosition;
2726
import sootup.core.model.Position;
2827
import sootup.core.util.Copyable;
2928

@@ -34,7 +33,7 @@
3433
* @author Linghui Luo, Markus Schmidt
3534
*/
3635
public class FullStmtPositionInfo extends SimpleStmtPositionInfo implements Copyable {
37-
protected final FullPosition[] operandPositions;
36+
@Nonnull protected final Position[] operandPositions;
3837

3938
/**
4039
* Create an instance from given statement position and operand positions.
@@ -43,7 +42,7 @@ public class FullStmtPositionInfo extends SimpleStmtPositionInfo implements Copy
4342
* @param operandPositions the operand positions
4443
*/
4544
public FullStmtPositionInfo(
46-
@Nonnull Position stmtPosition, @Nonnull FullPosition[] operandPositions) {
45+
@Nonnull Position stmtPosition, @Nonnull Position[] operandPositions) {
4746
super(stmtPosition);
4847
this.operandPositions = operandPositions;
4948
}
@@ -65,7 +64,7 @@ public Position getStmtPosition() {
6564
* @return the position of the given operand
6665
*/
6766
public Position getOperandPosition(int index) {
68-
if (this.operandPositions != null && index >= 0 && index < this.operandPositions.length) {
67+
if (index >= 0 && index < this.operandPositions.length) {
6968
return this.operandPositions[index];
7069
} else {
7170
return NoPositionInformation.getInstance();
@@ -75,15 +74,10 @@ public Position getOperandPosition(int index) {
7574
@Override
7675
public String toString() {
7776
StringBuilder s = new StringBuilder();
78-
s.append("stmt at: ").append(getStmtPosition()).append("\n");
77+
s.append(super.toString());
7978
s.append("operands at: ");
80-
if (operandPositions != null) {
81-
s.append("\n");
82-
for (int i = 0; i < operandPositions.length; i++) {
83-
s.append(i).append(": ").append(operandPositions[i]).append(" ");
84-
}
85-
} else {
86-
s.append("No position info");
79+
for (int i = 0; i < operandPositions.length; i++) {
80+
s.append(i).append(": ").append(operandPositions[i]).append(" ");
8781
}
8882
return s.toString();
8983
}
@@ -94,7 +88,7 @@ public StmtPositionInfo withStmtPosition(@Nonnull Position stmtPosition) {
9488
}
9589

9690
@Nonnull
97-
public StmtPositionInfo withOperandPositions(@Nonnull FullPosition[] operandPositions) {
91+
public StmtPositionInfo withOperandPositions(@Nonnull Position[] operandPositions) {
9892
return new FullStmtPositionInfo(stmtPosition, operandPositions);
9993
}
10094
}

sootup.core/src/main/java/sootup/core/jimple/basic/SimpleStmtPositionInfo.java

+2-20
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import javax.annotation.Nonnull;
2626
import javax.annotation.Nullable;
27-
import sootup.core.model.FullPosition;
27+
import sootup.core.model.LinePosition;
2828
import sootup.core.model.Position;
2929

3030
/**
@@ -47,7 +47,7 @@ public SimpleStmtPositionInfo(@Nonnull Position stmtPosition) {
4747
* @param lineNumber the line number of the statement.
4848
*/
4949
public SimpleStmtPositionInfo(int lineNumber) {
50-
stmtPosition = new FullPosition(lineNumber, -1, lineNumber, -1);
50+
stmtPosition = new LinePosition(lineNumber);
5151
}
5252

5353
@Nonnull
@@ -61,22 +61,4 @@ public Position getStmtPosition() {
6161
public Position getOperandPosition(int index) {
6262
return null;
6363
}
64-
65-
public String toString() {
66-
StringBuilder s = new StringBuilder();
67-
s.append("stmt at:").append(getStmtPosition()).append("\n");
68-
return s.toString();
69-
}
70-
71-
@Nonnull
72-
@Override
73-
public StmtPositionInfo withStmtPosition(@Nonnull Position stmtPosition) {
74-
return null;
75-
}
76-
77-
@Nonnull
78-
@Override
79-
public StmtPositionInfo withOperandPositions(@Nonnull FullPosition[] operandPositions) {
80-
return null;
81-
}
8264
}

sootup.core/src/main/java/sootup/core/jimple/basic/StmtPositionInfo.java

+7-22
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
import javax.annotation.Nonnull;
2626
import javax.annotation.Nullable;
27-
import sootup.core.model.FullPosition;
2827
import sootup.core.model.Position;
2928

3029
/**
@@ -34,7 +33,7 @@
3433
*/
3534
public abstract class StmtPositionInfo {
3635

37-
protected static final StmtPositionInfo noPosition =
36+
protected static final StmtPositionInfo NOPOSITION =
3837
new StmtPositionInfo() {
3938
@Nonnull
4039
@Override
@@ -51,18 +50,6 @@ public Position getOperandPosition(int index) {
5150
public String toString() {
5251
return "No StmtPositionnfo";
5352
}
54-
55-
@Nonnull
56-
@Override
57-
public StmtPositionInfo withStmtPosition(@Nonnull Position stmtPosition) {
58-
return this;
59-
}
60-
61-
@Nonnull
62-
@Override
63-
public StmtPositionInfo withOperandPositions(@Nonnull FullPosition[] operandPositions) {
64-
return this;
65-
}
6653
};
6754

6855
/**
@@ -72,7 +59,7 @@ public StmtPositionInfo withOperandPositions(@Nonnull FullPosition[] operandPosi
7259
*/
7360
@Nonnull
7461
public static StmtPositionInfo createNoStmtPositionInfo() {
75-
return noPosition;
62+
return NOPOSITION;
7663
}
7764

7865
/**
@@ -93,11 +80,9 @@ public static StmtPositionInfo createNoStmtPositionInfo() {
9380
public abstract Position getOperandPosition(int index);
9481

9582
@Override
96-
public abstract String toString();
97-
98-
@Nonnull
99-
public abstract StmtPositionInfo withStmtPosition(@Nonnull Position stmtPosition);
100-
101-
@Nonnull
102-
public abstract StmtPositionInfo withOperandPositions(@Nonnull FullPosition[] operandPositions);
83+
public String toString() {
84+
StringBuilder s = new StringBuilder();
85+
s.append("stmt at:").append(getStmtPosition());
86+
return s.toString();
87+
}
10388
}

sootup.core/src/main/java/sootup/core/model/LinePosition.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package sootup.core.model;
22

33
public class LinePosition extends Position {
4-
int lineNo;
4+
private final int lineNo;
5+
6+
public LinePosition(int lineNo) {
7+
this.lineNo = lineNo;
8+
}
59

610
@Override
711
public int getFirstLine() {

sootup.java.sourcecode/src/main/java/sootup/java/sourcecode/frontend/WalaIRToJimpleConverter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ public static StmtPositionInfo convertPositionInfo(
645645
Position instructionPosition, Position[] operandPosition) {
646646

647647
if (operandPosition == null) {
648-
return new FullStmtPositionInfo(convertPosition(instructionPosition), null);
648+
return new SimpleStmtPositionInfo(convertPosition(instructionPosition));
649649
}
650650
FullPosition[] operandPos =
651651
Arrays.stream(operandPosition)

0 commit comments

Comments
 (0)