diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java index 4d78eb0849f..4d218aa2646 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java @@ -5483,7 +5483,7 @@ interface I { assertEquals(1, variableElement.getSourceRange().getLength()); } -public void testSVDStartPositionIssue() throws JavaModelException { +public void testSVDStartPositionIssue_1() throws JavaModelException { String contents = """ public class X { public static void example() { @@ -5515,4 +5515,33 @@ public static void example() { assertEquals("Single Variable Declaration startPosition is not correct", svd.getStartPosition(), contents.indexOf("RuntimeException")); } +public void testSVDStartPositionIssue_2() throws JavaModelException { + String contents = """ + public class X { + public static void example() { + try { + System.out.println("try"); + } + /** */ + catch(/** abc*/ RuntimeException e) { + System.out.println("catch"); + } + } + } + """; + this.workingCopy = getWorkingCopy("/Converter22/src/xyz/X.java", true/*resolve*/); + CompilationUnit cu = (CompilationUnit) buildAST(contents, this.workingCopy); + TypeDeclaration typedeclaration = (TypeDeclaration) getASTNode(cu, 0); + MethodDeclaration methodDeclaration = (MethodDeclaration) typedeclaration.bodyDeclarations().get(0); + Block block = methodDeclaration.getBody(); + List statements = block.statements(); + TryStatement tryStatement = (TryStatement) statements.get(0); + List catchClauseList = tryStatement.catchClauses(); + CatchClause catchClause = (CatchClause) catchClauseList.get(0); + SingleVariableDeclaration svd = catchClause.getException(); + + assertEquals("Single Variable Declaration length is not correct", svd.getLength(), contents.substring(contents.indexOf("/** abc*/ RuntimeException e")).indexOf(')')); + assertEquals("Single Variable Declaration startPosition is not correct", svd.getStartPosition(), contents.indexOf("/** abc*/ RuntimeException")); +} + }