Hello! I want to get back to this inconsistency that appeared with local records. Now it looks even more striking. See (tried 15-ea+26-1287):
public class Test { public static void main(String[] args) { final int x = 5; class C { static final int CONST = x; // compiles fine: CONST is in static context but can refer to local x } } } public class Test { public static void main(String[] args) { final int x = 5; interface I { static final int CONST = x; // non-static variable x cannot be referenced from a static context } } } I think the spec and implementation should be made more consistent here. Namely, allow references to compile-time constants referenced via locals in both cases. Or disallow in both cases (though this would be a breaking change). What do you think? With best regards, Tagir Valeev.