Skip to content

JDK 16: final variable in pattern matching with instanceof #588

@agavrilov76

Description

@agavrilov76

Declaring a variable final when matching pattern with instanceof operator causing an exception.

Code example:

if (person instanceof final Customer customer) {
    customer.pay();
}

Error:

com.google.googlejavaformat.java.FormatterException: 83:33: error: did not generate token "final"
    at com.google.googlejavaformat.java.Formatter.getFormatReplacements (Formatter.java:293)
    at com.google.googlejavaformat.java.Formatter.formatSource (Formatter.java:267)
    at com.google.googlejavaformat.java.Formatter.formatSource (Formatter.java:233)
    at com.coveo.AbstractFMT.formatSourceFile (AbstractFMT.java:216)
    at com.coveo.AbstractFMT.lambda$formatSourceFilesInDirectory$1 (AbstractFMT.java:157)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:179)
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:179)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.stream.ReferencePipeline$2$1.accept (ReferencePipeline.java:179)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1625)
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
    at java.util.stream.ReduceOps$ReduceTask.doLeaf (ReduceOps.java:952)
    at java.util.stream.ReduceOps$ReduceTask.doLeaf (ReduceOps.java:926)
    at java.util.stream.AbstractTask.compute (AbstractTask.java:327)
    at java.util.concurrent.CountedCompleter.exec (CountedCompleter.java:746)
    at java.util.concurrent.ForkJoinTask.doExec (ForkJoinTask.java:295)
    at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec (ForkJoinPool.java:1016)
    at java.util.concurrent.ForkJoinPool.scan (ForkJoinPool.java:1665)
    at java.util.concurrent.ForkJoinPool.runWorker (ForkJoinPool.java:1598)
    at java.util.concurrent.ForkJoinWorkerThread.run (ForkJoinWorkerThread.java:183)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions