Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Support for Java 21 Record Pattern : MissingSwitchDefault #14891

Closed
mahfouz72 opened this issue May 22, 2024 · 0 comments · Fixed by #14973
Closed

Add Support for Java 21 Record Pattern : MissingSwitchDefault #14891

mahfouz72 opened this issue May 22, 2024 · 0 comments · Fixed by #14973
Assignees
Milestone

Comments

@mahfouz72
Copy link
Member

child of #14890

I have read check documentation: https://checkstyle.org/checks/coding/missingswitchdefault.html#MissingSwitchDefault
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> javac src/RecordPatterns.java --enable-preview --source 22
PS D:\CS\test> cat src/RecordPatterns.java
import java.util.List;

public class RecordPatterns {
    sealed interface I permits C, D { }
    final class C implements I { }
    final class D implements I { }
    record Pair<T>(T x, T y) { }

    void test() {
        C c = new C();
        D d = new D();

        Pair<I> p2 = new Pair<>(c, d);
        // exhaustiveness check by the compiler
        switch (p2) {   // violation ??
            case Pair<I>(I i, C j) -> System.out.println("Pair (C|D, C)");
            case Pair<I>(I i, D j) -> System.out.println("Pair (C|D, D)");
        }
    }

    public static void main(String[] args) {
        new RecordPatterns().test();
    }
}
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="MissingSwitchDefault"/>
 </module>
</module>
PS D:\CS\test> java  -jar checkstyle-10.14.2-all.jar -c config.xml  src/RecordPatterns.java
Starting audit...
[ERROR] D:\CS\test\src\RecordPatterns.java:15:9: switch without "default" clause. [MissingSwitchDefault]
Audit done.
Checkstyle ends with 1 errors.

Describe what you expect in detail.

I expect no violation here since there is an exhaustiveness Check by the compiler. This means that all possible inputs must be covered. So there is no need for default


mahfouz72 added a commit to mahfouz72/checkstyle that referenced this issue Jun 11, 2024
mahfouz72 added a commit to mahfouz72/checkstyle that referenced this issue Jun 11, 2024
mahfouz72 added a commit to mahfouz72/checkstyle that referenced this issue Jun 11, 2024
mahfouz72 added a commit to mahfouz72/checkstyle that referenced this issue Jun 12, 2024
mahfouz72 added a commit to mahfouz72/checkstyle that referenced this issue Jun 13, 2024
rnveach pushed a commit that referenced this issue Jun 14, 2024
@rnveach rnveach added the bug label Jun 14, 2024
@github-actions github-actions bot added this to the 10.18.0 milestone Jun 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

3 participants