eclipse-jdt / eclipse.jdt.core

Eclipse Public License 2.0
156 stars 123 forks source link

workspace '--release' setting ignored by Problems View #2737

Open chrislake opened 1 month ago

chrislake commented 1 month ago

Moved from here: https://github.com/eclipse-platform/eclipse.platform.ui/issues/2117

Steps to reproduce

From a fresh installation and clean workspace:

  1. Window -> Preferences -> Java -> Installed JREs
    • Add Java 21 (or at least 19 I would suppose)
  2. Window -> Preferences -> Java -> Compiler
    • Compiler Compliance level => 17
    • "Use '--release' option" checked
  3. Create a new Java Project
  4. Create a new Class

    package foo;
    import java.util.Locale;
    class Main {
    public static void main(String[] args) {
    Locale l = new Locale("en", "US");
    System.out.println(l.getCountry());
    
    l = Locale.of("en", "US");
    System.out.println(l.getCountry());
    }
    }

I tried

  1. Right click on new project -> Properties -> Java Compiler

    • "Enable project specific settings" checked
    • "Use '--release option' UNchecked
    • Apply and close
    • Outcome in the Problems View is as I expect:
      • The constructor Locale(String, String) is deprecated since version 19
  2. Right click on new project -> Properties -> Java Compiler

    • "Enable project specific settings" checked
    • "Use '--release option' checked
    • Apply and close
    • Outcome in the Problems View is as I expect:
      • The method of(String, String) is undefined for the type Locale
  3. Right click on new project -> Properties -> Java Compiler

    • "Enable project specific settings" UNchecked
    • Apply and close
    • Outcome in the Problems View is not as expected:
      • The constructor Locale(String, String) is deprecated since version 19

I expected: The method of(String, String) is undefined for the type Locale as the '--release' option is checked in the workspace settings.

Tested under this environment: