Skip to content

Add Check Support for Java 21 Record Pattern Syntax : UnnecessaryParenthesesCheck #15003

@mahfouz72

Description

@mahfouz72

child of #14890
I have read check documentation: https://checkstyle.org/checks/coding/unnecessaryparentheses.html#UnnecessaryParentheses
I have downloaded the latest checkstyle from: https://checkstyle.org/cmdline.html#Download_and_Run
I have executed the cli and showed it below, as cli describes the problem better than 1,000 words

PS D:\CS\test> cat src/Test2.java  
record ColoredPoint(int p, int x, String c) { }
record Rectangle(ColoredPoint upperLeft, ColoredPoint lowerRight) { }
public class Test2 {
    void test(Object obj) {
        if (!(obj instanceof Rectangle(_, _))) { }  // ok, expected
        if ((!(obj instanceof Rectangle(_, _)))) { }  // violation expected
        if (obj instanceof (Rectangle(_,_))) { }  // UnnecessaryParentheses around the pattern will not compile
    }

}
PS D:\CS\test> cat config.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">
    <property name="charset" value="UTF-8"/>
    <module name="TreeWalker">
        <module name="UnnecessaryParentheses">

        </module>

    </module>
</module>
PS D:\CS\test> javac src/Test2.java                                              
src\Test2.java:7: error: illegal start of type
        if (obj instanceof (Rectangle(_,_))) { }  // UnnecessaryParentheses around the pattern will not compile
                           ^
1 error
PS D:\CS\test> java  -jar checkstyle-10.17.0-all.jar -c config.xml src/Test2.java
Starting audit...
[ERROR] D:\CS\test\src\Test2.java:6:13: Unnecessary parentheses around expression. [UnnecessaryParentheses]
Audit done.
Checkstyle ends with 1 errors.
PS D:\CS\test> 

Describe what you expect in detail.

This can be closed without any updates

Metadata

Metadata

Assignees

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions