From 60ff7e298a039f18b7f765d0c0daf357b21d43fc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 04:24:32 +0000 Subject: [PATCH 1/2] build(deps): update dependency org.eclipse.jdt:org.eclipse.jdt.core to v3.40.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1f4e235db6f..cc3e82f787f 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ org.eclipse.jdt org.eclipse.jdt.core - 3.39.0 + 3.40.0 org.eclipse.platform From d504d34a0fcd18ff69487012be751bbbb2b82f27 Mon Sep 17 00:00:00 2001 From: SirYwell Date: Tue, 17 Dec 2024 09:25:21 +0100 Subject: [PATCH 2/2] fix --- src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java | 4 ++++ src/main/java/spoon/support/compiler/jdt/ParentExiter.java | 4 ++-- .../spoon/test/reference/ElasticsearchStackoverflowTest.java | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java b/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java index a042f1046ba..fb8ea9df4af 100644 --- a/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java +++ b/src/main/java/spoon/support/compiler/jdt/JDTTreeBuilder.java @@ -1780,6 +1780,10 @@ public void endVisit(TypePattern anyPattern, BlockScope scope) { @Override public boolean visit(SwitchStatement switchStatement, BlockScope scope) { + // JDT 3.40.0 removes SwitchExpression#traverse method, so let's emulate it + if (switchStatement instanceof SwitchExpression switchExpression) { + return visit(switchExpression, scope); + } context.enter(factory.Core().createSwitch(), switchStatement); return true; } diff --git a/src/main/java/spoon/support/compiler/jdt/ParentExiter.java b/src/main/java/spoon/support/compiler/jdt/ParentExiter.java index 4bea9488b3c..4da526e6188 100644 --- a/src/main/java/spoon/support/compiler/jdt/ParentExiter.java +++ b/src/main/java/spoon/support/compiler/jdt/ParentExiter.java @@ -503,8 +503,8 @@ public void visitCtBreak(CtBreak b) { @Override public void visitCtCase(CtCase caseStatement) { final ASTNode node = jdtTreeBuilder.getContextBuilder().getCurrentNode(); - if (node instanceof CaseStatement) { - caseStatement.setCaseKind(((CaseStatement) node).isExpr ? CaseKind.ARROW : CaseKind.COLON); + if (node instanceof CaseStatement cs) { + caseStatement.setCaseKind(cs.isSwitchRule ? CaseKind.ARROW : CaseKind.COLON); } if (shouldAddAsCaseExpression(caseStatement, node)) { if (child instanceof CtPattern pattern) { diff --git a/src/test/java/spoon/test/reference/ElasticsearchStackoverflowTest.java b/src/test/java/spoon/test/reference/ElasticsearchStackoverflowTest.java index ad07a7120ab..107e2873d3b 100644 --- a/src/test/java/spoon/test/reference/ElasticsearchStackoverflowTest.java +++ b/src/test/java/spoon/test/reference/ElasticsearchStackoverflowTest.java @@ -46,7 +46,6 @@ public void visitCtExecutableReference( } } - @GitHubIssue(issueNumber = 5977, fixed = false) @Test public void testStackOverflow() { Launcher launcher = new Launcher();