On Tue, 20 Oct 2020 03:02:03 GMT, Vicente Romero <vrom...@openjdk.org> wrote:
>> This is the current proposed patch for the upcoming JEP 394, for pattern >> matching for instanceof. >> >> A summary of changes: >> -making the feature permanent (non-preview) >> -making the binding variables non-final (as per current specification >> proposal) >> -producing a compile-time error for the case where the expression's type is >> a subtype of the type test pattern's type >> (as per current specification proposal) >> -changing the AST structure so that the binding variable has a VariableTree >> in the AST. BindingPatternTree is preserved >> and encloses the VariableTree. The reason is better consistency in the API, >> with nodes like CatchTree, EnhancedForLoop >> Tree, etc. >> >> This change will not be integrated until JEP 394 is targetted. > > test/langtools/tools/javac/patterns/BindingsTest1.java line 28: > >> 26: * @bug 8231827 >> 27: * @summary Basic tests for bindings from instanceof >> 28: * @compile BindingsTest1.java > > the @compile can be removed I guess I prefer to keep @compile for javac non-programatic tests. The reason is that, for these tests, we can expect we modify javac, but not the test. And if @build (implicit or explicit) is used, the test will not be re-compiled unless their timestamp changes. So we can actually execute an older (already built) version of the test's class file, instead of a newly built class file, which would reflect the changes in javac. So, for tests like this, I prefer to have an explicit @compile, as that ensures the file is compiled every time, regardless how the working directories are set-up, etc. ------------- PR: https://git.openjdk.java.net/jdk/pull/559