mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-03-23 16:20:26 +08:00
fit for ternary operation in object constructor parameter
This commit is contained in:
parent
2976ca0211
commit
e50633b884
@ -74,6 +74,9 @@ public class SourceClassHandler extends BaseClassHandler {
|
|||||||
// it's a new operation and an inject method for it exist
|
// it's a new operation and an inject method for it exist
|
||||||
int rangeStart = getConstructorStart(instructions, node.owner, i);
|
int rangeStart = getConstructorStart(instructions, node.owner, i);
|
||||||
if (rangeStart >= 0) {
|
if (rangeStart >= 0) {
|
||||||
|
if (rangeStart < i) {
|
||||||
|
handleFrameStackChange(mn, newOperatorInjectMethod, rangeStart, i);
|
||||||
|
}
|
||||||
instructions = replaceNewOps(mn, newOperatorInjectMethod, instructions, rangeStart, i);
|
instructions = replaceNewOps(mn, newOperatorInjectMethod, instructions, rangeStart, i);
|
||||||
i = rangeStart;
|
i = rangeStart;
|
||||||
}
|
}
|
||||||
@ -284,8 +287,17 @@ public class SourceClassHandler extends BaseClassHandler {
|
|||||||
AbstractInsnNode curInsn = mn.instructions.get(start);
|
AbstractInsnNode curInsn = mn.instructions.get(start);
|
||||||
AbstractInsnNode endInsn = mn.instructions.get(end);
|
AbstractInsnNode endInsn = mn.instructions.get(end);
|
||||||
do {
|
do {
|
||||||
if (curInsn instanceof FrameNode && ((FrameNode)curInsn).type == F_FULL) {
|
if (curInsn instanceof FrameNode) {
|
||||||
((FrameNode)curInsn).stack.add(0, mockMethod.getMockClass());
|
FrameNode fn = (FrameNode)curInsn;
|
||||||
|
if (fn.type == F_FULL) {
|
||||||
|
fn.stack.add(0, mockMethod.getMockClass());
|
||||||
|
// remove label reference in stack of frame node
|
||||||
|
for (int i = fn.stack.size() - 1; i >= 0; i--) {
|
||||||
|
if (fn.stack.get(i) instanceof LabelNode) {
|
||||||
|
fn.stack.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
curInsn = curInsn.getNext();
|
curInsn = curInsn.getNext();
|
||||||
} while (!curInsn.equals(endInsn));
|
} while (!curInsn.equals(endInsn));
|
||||||
|
Loading…
Reference in New Issue
Block a user