Bug 497509 - Cannot execute "throw new Exception()" expression during
debug
Change-Id: I4e80af93f37e0d544275f2da6d7262d78a1a029a
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/TestsBreakpointConditions.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/TestsBreakpointConditions.java
index 14b6046..76efae8 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/TestsBreakpointConditions.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/TestsBreakpointConditions.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015 IBM Corporation and others.
+ * Copyright (c) 2015, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -64,4 +64,19 @@
}
}
+ /*
+ * To test throw as a last statement
+ */
+ public void testCondition4() throws Throwable {
+ try {
+ init();
+ IValue value = eval("System.out.println(\"test\");throw new Exception(\"test\")");
+ System.out.println(value);
+
+ }
+ finally {
+ end();
+ }
+
+ }
}
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
index 76cd0b0..9076ffd 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
@@ -178,6 +178,9 @@
token == ITerminalSymbols.TokenNameprivate || token == ITerminalSymbols.TokenNameprotected || token == ITerminalSymbols.TokenNamepublic)){
token = scanner.getNextToken();
}
+ else if (count == 0 && (token == ITerminalSymbols.TokenNamethrow)){
+ return false;
+ }
else if (count ==1 && (token == ITerminalSymbols.TokenNameLBRACE || token == ITerminalSymbols.TokenNameEQUAL)){
return true;
}