Bug 350325 - [1.7] String switch statements break conditional breakpoints
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
index ee9285b..9bfb89d 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
@@ -3584,7 +3584,7 @@
statementsDefault= new ArrayList();
} else {
if(switchCase.getExpression() instanceof StringLiteral) {
- push(new EqualEqualOperator(Instruction.T_String, Instruction.T_String, true, fCounter));
+ push(new SendMessage("equals", "(Ljava/lang/Object;)Z", 1, null, fCounter)); //$NON-NLS-1$ //$NON-NLS-2$
}
else {
push(new EqualEqualOperator(Instruction.T_int, Instruction.T_int, true, fCounter));
@@ -3665,7 +3665,6 @@
}
}
}
-
return false;
}
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
index 3573ccf..48f558c 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.jdt.internal.debug.eval.ast.instructions;
-import org.eclipse.debug.core.DebugException;
import org.eclipse.jdt.debug.core.IJavaObject;
import org.eclipse.jdt.debug.core.IJavaPrimitiveValue;
import org.eclipse.jdt.debug.core.IJavaValue;
@@ -50,18 +49,6 @@
case T_boolean :
equals= ((IJavaPrimitiveValue) leftOperand).getBooleanValue() == ((IJavaPrimitiveValue) rightOperand).getBooleanValue();
break;
- case T_String :
- try {
- String lhs = leftOperand.getValueString();
- if(lhs != null) {
- equals = lhs.equals(rightOperand.getValueString());
- }
- else {
- equals = rightOperand.getValueString() == null;
- }
- }
- catch(DebugException de) {}
- break;
default :
equals= leftOperand.equals(rightOperand);
break;