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;