-
Notifications
You must be signed in to change notification settings - Fork 487
Open
Labels
Description
Summary
For guarded case labels on switch statements using the when
operator, the eclipse formatter throws an index out of bounds exception when processing the statement.
Maven version
Apache Maven 3.9.5
Spotless Version
spotless-maven-plugin
2.41.1
OS Version
macOS 14.2.1 (23C71)
Java Version
openjdk 21.0.1 2023-10-17 LTS
OpenJDK Runtime Environment Corretto-21.0.1.12.1 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.1.12.1 (build 21.0.1+12-LTS, mixed mode, sharing)
Demo GitHub Repo
I created a repo that demonstrates this issue here:
https://github.com/adase11/maven-spotless-plugin-demo/tree/main
Error
[ERROR] Step 'eclipse jdt formatter' found problem in 'src/main/java/com.adase.demo/DemoSpotlessIssue.java':
null
java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:118)
at java.lang.reflect.Method.invoke (Method.java:580)
at com.diffplug.spotless.extra.java.EclipseJdtFormatterStep.lambda$apply$0 (EclipseJdtFormatterStep.java:67)
at com.diffplug.spotless.FormatterFunc$NeedsFile.apply (FormatterFunc.java:154)
at com.diffplug.spotless.FormatterStepImpl$Standard.format (FormatterStepImpl.java:82)
at com.diffplug.spotless.FormatterStep$Strict.format (FormatterStep.java:103)
at com.diffplug.spotless.Formatter.compute (Formatter.java:246)
at com.diffplug.spotless.PaddedCell.calculateDirtyState (PaddedCell.java:203)
at com.diffplug.spotless.PaddedCell.calculateDirtyState (PaddedCell.java:190)
at com.diffplug.spotless.maven.SpotlessApplyMojo.process (SpotlessApplyMojo.java:63)
at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:229)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:52)
at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:161)
at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:73)
Caused by: java.lang.IndexOutOfBoundsException: Index 106 out of bounds for length 106
at jdk.internal.util.Preconditions.outOfBounds (Preconditions.java:100)
at jdk.internal.util.Preconditions.outOfBoundsCheckIndex (Preconditions.java:106)
at jdk.internal.util.Preconditions.checkIndex (Preconditions.java:302)
at java.util.Objects.checkIndex (Objects.java:385)
at java.util.ArrayList.get (ArrayList.java:427)
at org.eclipse.jdt.internal.formatter.TokenManager.get (TokenManager.java:77)
at org.eclipse.jdt.internal.formatter.TokenManager.findIndex (TokenManager.java:170)
at org.eclipse.jdt.internal.formatter.TokenManager.firstIndexAfter (TokenManager.java:206)
at org.eclipse.jdt.internal.formatter.TokenManager.firstTokenAfter (TokenManager.java:210)
at org.eclipse.jdt.internal.formatter.SpacePreparator.handleTokenAfter (SpacePreparator.java:1194)
at org.eclipse.jdt.internal.formatter.SpacePreparator.visit (SpacePreparator.java:479)
at org.eclipse.jdt.core.dom.GuardedPattern.accept0 (GuardedPattern.java:140)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.SwitchCase.accept0 (SwitchCase.java:215)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.SwitchExpression.accept0 (SwitchExpression.java:165)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild (ASTNode.java:3302)
at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0 (VariableDeclarationFragment.java:238)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0 (VariableDeclarationStatement.java:254)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.Block.accept0 (Block.java:128)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChild (ASTNode.java:3302)
at org.eclipse.jdt.core.dom.MethodDeclaration.accept0 (MethodDeclaration.java:677)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.TypeDeclaration.accept0 (TypeDeclaration.java:499)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren (ASTNode.java:3325)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0 (CompilationUnit.java:258)
at org.eclipse.jdt.core.dom.ASTNode.accept (ASTNode.java:3254)
at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.prepareSpaces (DefaultCodeFormatter.java:411)
at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.prepareFormattedCode (DefaultCodeFormatter.java:228)
at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.format (DefaultCodeFormatter.java:185)
at org.eclipse.jdt.internal.formatter.DefaultCodeFormatter.format (DefaultCodeFormatter.java:167)
at com.diffplug.spotless.extra.glue.jdt.EclipseJdtFormatterStepImpl.format (EclipseJdtFormatterStepImpl.java:51)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at com.diffplug.spotless.extra.java.EclipseJdtFormatterStep.lambda$apply$0 (EclipseJdtFormatterStep.java:67)
at com.diffplug.spotless.FormatterFunc$NeedsFile.apply (FormatterFunc.java:154)
at com.diffplug.spotless.FormatterStepImpl$Standard.format (FormatterStepImpl.java:82)
at com.diffplug.spotless.FormatterStep$Strict.format (FormatterStep.java:103)
at com.diffplug.spotless.Formatter.compute (Formatter.java:246)
at com.diffplug.spotless.PaddedCell.calculateDirtyState (PaddedCell.java:203)
at com.diffplug.spotless.PaddedCell.calculateDirtyState (PaddedCell.java:190)
at com.diffplug.spotless.maven.SpotlessApplyMojo.process (SpotlessApplyMojo.java:63)
at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute (AbstractSpotlessMojo.java:229)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:52)
at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:161)
at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:73)
https://docs.oracle.com/javase/specs/jls/se21/html/jls-14.html#jls-SwitchBlock