mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-03-13 11:20:32 +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
|
||||
int rangeStart = getConstructorStart(instructions, node.owner, i);
|
||||
if (rangeStart >= 0) {
|
||||
if (rangeStart < i) {
|
||||
handleFrameStackChange(mn, newOperatorInjectMethod, rangeStart, i);
|
||||
}
|
||||
instructions = replaceNewOps(mn, newOperatorInjectMethod, instructions, rangeStart, i);
|
||||
i = rangeStart;
|
||||
}
|
||||
@ -284,8 +287,17 @@ public class SourceClassHandler extends BaseClassHandler {
|
||||
AbstractInsnNode curInsn = mn.instructions.get(start);
|
||||
AbstractInsnNode endInsn = mn.instructions.get(end);
|
||||
do {
|
||||
if (curInsn instanceof FrameNode && ((FrameNode)curInsn).type == F_FULL) {
|
||||
((FrameNode)curInsn).stack.add(0, mockMethod.getMockClass());
|
||||
if (curInsn instanceof FrameNode) {
|
||||
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();
|
||||
} while (!curInsn.equals(endInsn));
|
||||
|
Loading…
Reference in New Issue
Block a user