From brian.goetz at oracle.com Thu Aug 1 01:32:54 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 31 Jul 2019 18:32:54 -0700 Subject: Collection field in record causes Class Format Error In-Reply-To: References: Message-ID: The issue here is not the Collection but the generics. The compiler is not erasing the type before it lowers the record into its desugared form. > On May 26, 2019, at 7:58 PM, Francois Green wrote: > > public class Main { > > public static void main(String[] args) { > var item = new Item(List.of()); > } > } > > record Item(List strings); > > > Exception in thread "main" java.lang.ClassFormatError: Field "strings" in > class Item has illegal signature "Ljava/util/List;" > at java.base/java.lang.ClassLoader.defineClass1(Native Method) > at > java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) > at > jdk.compiler/com.sun.tools.javac.launcher.Main$MemoryClassLoader.findClass(Main.java:657) > at > jdk.compiler/com.sun.tools.javac.launcher.Main$MemoryClassLoader.loadClass(Main.java:594) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) > at Main.main(CFE.java:6) From jan.lahoda at oracle.com Fri Aug 2 08:53:42 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Fri, 02 Aug 2019 08:53:42 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201908020853.x728rhu1011522@aojmv0008.oracle.com> Changeset: 175297ab1330 Author: jlahoda Date: 2019-08-02 10:47 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/175297ab1330 Handling of type annotation in type test patterns. ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/CombinationsTargetTest2.java + test/langtools/tools/javac/annotations/typeAnnotations/classfile/Patterns.java Changeset: 21dd10ccb0c7 Author: jlahoda Date: 2019-08-02 10:50 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/21dd10ccb0c7 Removing unnecessary code. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java From maurizio.cimadamore at oracle.com Fri Aug 2 08:55:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 02 Aug 2019 08:55:53 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201908020855.x728tsVS014584@aojmv0008.oracle.com> Changeset: 888ef8b908e2 Author: mcimadamore Date: 2019-08-02 08:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/888ef8b908e2 Automatic merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From jonathan.gibbons at oracle.com Fri Aug 2 18:27:13 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Fri, 02 Aug 2019 18:27:13 +0000 Subject: hg: amber/amber: initial (basic) support for permitted subtypes Message-ID: <201908021827.x72IRDND005289@aojmv0008.oracle.com> Changeset: caf2e374095c Author: jjg Date: 2019-08-02 11:21 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/caf2e374095c initial (basic) support for permitted subtypes ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkInfoImpl.java ! test/langtools/jdk/javadoc/doclet/testSealedTypes/TestSealedTypes.java From maurizio.cimadamore at oracle.com Fri Aug 2 18:30:49 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 02 Aug 2019 18:30:49 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908021830.x72IUox3007162@aojmv0008.oracle.com> Changeset: 9a1e6004ac08 Author: mcimadamore Date: 2019-08-02 18:30 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/9a1e6004ac08 Automatic merge with records-and-sealed From vicente.romero at oracle.com Fri Aug 2 23:18:25 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Fri, 2 Aug 2019 19:18:25 -0400 Subject: Collection field in record causes Class Format Error In-Reply-To: References: Message-ID: <39b2903b-552d-bd38-f9c6-868191bb195f@oracle.com> Hi Francois, I'm not seeing this issue in the current version of the records branch. Could you please update to the latest version and double check if the issue disappears? Thanks, Vicente On 7/31/19 9:32 PM, Brian Goetz wrote: > The issue here is not the Collection but the generics. The compiler is not erasing the type before it lowers the record into its desugared form. > >> On May 26, 2019, at 7:58 PM, Francois Green wrote: >> >> public class Main { >> >> public static void main(String[] args) { >> var item = new Item(List.of()); >> } >> } >> >> record Item(List strings); >> >> >> Exception in thread "main" java.lang.ClassFormatError: Field "strings" in >> class Item has illegal signature "Ljava/util/List;" >> at java.base/java.lang.ClassLoader.defineClass1(Native Method) >> at >> java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016) >> at >> jdk.compiler/com.sun.tools.javac.launcher.Main$MemoryClassLoader.findClass(Main.java:657) >> at >> jdk.compiler/com.sun.tools.javac.launcher.Main$MemoryClassLoader.loadClass(Main.java:594) >> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) >> at Main.main(CFE.java:6) From jonathan.gibbons at oracle.com Sat Aug 3 00:02:56 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Sat, 03 Aug 2019 00:02:56 +0000 Subject: hg: amber/amber: basic javadoc support for record pseudo-keyword Message-ID: <201908030002.x7302v55014338@aojmv0008.oracle.com> Changeset: f71ddaa59037 Author: jjg Date: 2019-08-02 16:57 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/f71ddaa59037 basic javadoc support for record pseudo-keyword ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/TestRecordTypes.java ! test/langtools/tools/lib/toolbox/ToolBox.java From maurizio.cimadamore at oracle.com Sat Aug 3 00:50:03 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Sat, 03 Aug 2019 00:50:03 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908030050.x730o4HP010899@aojmv0008.oracle.com> Changeset: 49696396c60c Author: mcimadamore Date: 2019-08-03 00:49 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/49696396c60c Automatic merge with records-and-sealed From jan.lahoda at oracle.com Mon Aug 5 10:30:42 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Mon, 05 Aug 2019 10:30:42 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201908051030.x75AUhG5006180@aojmv0008.oracle.com> Changeset: 1c6121460b51 Author: jlahoda Date: 2019-08-05 11:53 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/1c6121460b51 Merging branch patterns-stage-1 into branch patterns. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java Changeset: ded304317aee Author: jlahoda Date: 2019-08-05 12:15 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/ded304317aee Merging branch patterns into branch patterns-deconstruction. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java From vicente.romero at oracle.com Mon Aug 5 15:57:22 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 05 Aug 2019 15:57:22 +0000 Subject: hg: amber/amber: definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute Message-ID: <201908051557.x75FvNq6020549@aojmv0008.oracle.com> Changeset: 6974c8d6a7e0 Author: vromero Date: 2019-08-05 12:56 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/6974c8d6a7e0 definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute ! src/java.base/share/classes/java/lang/annotation/ElementType.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/langtools/tools/javac/records/annotations/BadAnnotations.java From maurizio.cimadamore at oracle.com Mon Aug 5 16:00:50 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 05 Aug 2019 16:00:50 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908051600.x75G0ocT022630@aojmv0008.oracle.com> Changeset: 1245f81d7e7c Author: mcimadamore Date: 2019-08-05 16:00 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/1245f81d7e7c Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From jonathan.gibbons at oracle.com Wed Aug 7 23:40:33 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 07 Aug 2019 23:40:33 +0000 Subject: hg: amber/amber: reverse 'definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute' Message-ID: <201908072340.x77NeXTV007083@aojmv0008.oracle.com> Changeset: 3fda3e8da3cf Author: jjg Date: 2019-08-07 16:34 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/3fda3e8da3cf reverse 'definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute' ! src/java.base/share/classes/java/lang/annotation/ElementType.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/langtools/tools/javac/records/annotations/BadAnnotations.java From maurizio.cimadamore at oracle.com Wed Aug 7 23:45:57 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 07 Aug 2019 23:45:57 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908072345.x77Njwqs009335@aojmv0008.oracle.com> Changeset: 1c00ffcef070 Author: mcimadamore Date: 2019-08-07 23:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/1c00ffcef070 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From jonathan.gibbons at oracle.com Thu Aug 8 00:36:18 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 08 Aug 2019 00:36:18 +0000 Subject: hg: amber/amber: initial support for generated doc comments for records Message-ID: <201908080036.x780aJEO009524@aojmv0008.oracle.com> Changeset: 17addc197eaa Author: jjg Date: 2019-08-07 17:30 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/17addc197eaa initial support for generated doc comments for records ! src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/TypeElementCatalog.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java ! test/langtools/jdk/javadoc/doclet/testRecordTypes/TestRecordTypes.java From maurizio.cimadamore at oracle.com Thu Aug 8 04:52:43 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 08 Aug 2019 04:52:43 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908080452.x784qiOl003609@aojmv0008.oracle.com> Changeset: 94bdb45735b8 Author: mcimadamore Date: 2019-08-08 04:52 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/94bdb45735b8 Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Thu Aug 8 22:28:40 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 08 Aug 2019 22:28:40 +0000 Subject: hg: amber/amber: Remove assumption that all RECORD items are MANDATED Message-ID: <201908082228.x78MSfC0027590@aojmv0008.oracle.com> Changeset: c52629bfd1d5 Author: jjg Date: 2019-08-08 15:22 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/c52629bfd1d5 Remove assumption that all RECORD items are MANDATED ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java + test/langtools/tools/javac/records/OriginTest.java From maurizio.cimadamore at oracle.com Thu Aug 8 22:30:57 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 08 Aug 2019 22:30:57 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908082230.x78MUv5q029275@aojmv0008.oracle.com> Changeset: c5f25337801d Author: mcimadamore Date: 2019-08-08 22:30 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c5f25337801d Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Thu Aug 8 22:35:14 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 08 Aug 2019 22:35:14 +0000 Subject: hg: amber/amber: fix legal headers on tests Message-ID: <201908082235.x78MZFD3001344@aojmv0008.oracle.com> Changeset: 29bc54d39f9d Author: jjg Date: 2019-08-08 15:29 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/29bc54d39f9d fix legal headers on tests ! test/langtools/tools/javac/diags/examples/CantInheritFromSealed.java ! test/langtools/tools/javac/doctree/AccessorsTest.java ! test/langtools/tools/javac/records/UserDefinedMethodsTest.java ! test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java ! test/langtools/tools/javac/records/mandated_members/MandatedMembersNotBeingEntered.java ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/ParameterLessConstructorsTest.java ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java ! test/langtools/tools/javac/records/writeread/Record.java ! test/langtools/tools/javac/records/writeread/WriteReadTest.java ! test/langtools/tools/javac/sealed/CheckingAttributeAtRuntimeTest.java ! test/langtools/tools/javac/sealed/MethodsOfSealedTypesAreNotFinalByDefaultTest.java ! test/langtools/tools/javac/sealed/SealedTest02.java ! test/langtools/tools/javac/sealed/separate/SealedClasses.java ! test/langtools/tools/javac/sealed/separate/TestSeparate01.java From maurizio.cimadamore at oracle.com Thu Aug 8 22:40:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 08 Aug 2019 22:40:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908082240.x78MewWH008683@aojmv0008.oracle.com> Changeset: 2af4fc17f9ed Author: mcimadamore Date: 2019-08-08 22:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/2af4fc17f9ed Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Thu Aug 8 23:38:01 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 08 Aug 2019 23:38:01 +0000 Subject: hg: amber/amber: more javadoc tests Message-ID: <201908082338.x78Nc2o0011288@aojmv0008.oracle.com> Changeset: 0860418aedb9 Author: jjg Date: 2019-08-08 16:32 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/0860418aedb9 more javadoc tests ! test/langtools/jdk/javadoc/doclet/testRecordTypes/TestRecordTypes.java From maurizio.cimadamore at oracle.com Thu Aug 8 23:40:56 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 08 Aug 2019 23:40:56 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908082340.x78NeuFA015126@aojmv0008.oracle.com> Changeset: ffda173c90ca Author: mcimadamore Date: 2019-08-08 23:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/ffda173c90ca Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Fri Aug 9 23:33:02 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Fri, 09 Aug 2019 23:33:02 +0000 Subject: hg: amber/amber: add javadoc test for empty records Message-ID: <201908092333.x79NX2C3023659@aojmv0008.oracle.com> Changeset: c2650bf6e849 Author: jjg Date: 2019-08-09 16:26 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/c2650bf6e849 add javadoc test for empty records ! test/langtools/jdk/javadoc/doclet/testRecordTypes/TestRecordTypes.java From maurizio.cimadamore at oracle.com Fri Aug 9 23:35:56 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 09 Aug 2019 23:35:56 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908092335.x79NZv5W026135@aojmv0008.oracle.com> Changeset: a59d56df3851 Author: mcimadamore Date: 2019-08-09 23:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a59d56df3851 Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Sat Aug 10 00:20:55 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Sat, 10 Aug 2019 00:20:55 +0000 Subject: hg: amber/amber: update javadoc behavior for undocumented permitted subtypes Message-ID: <201908100020.x7A0Ku70023058@aojmv0008.oracle.com> Changeset: 79c030f0364a Author: jjg Date: 2019-08-09 17:13 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/79c030f0364a update javadoc behavior for undocumented permitted subtypes ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testSealedTypes/TestSealedTypes.java From maurizio.cimadamore at oracle.com Sat Aug 10 00:49:54 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Sat, 10 Aug 2019 00:49:54 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908100049.x7A0ns5m009976@aojmv0008.oracle.com> Changeset: fa802f216fb2 Author: mcimadamore Date: 2019-08-10 00:49 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/fa802f216fb2 Automatic merge with records-and-sealed From talden at gmail.com Wed Aug 14 01:21:31 2019 From: talden at gmail.com (Aaron Scott-Boddendijk) Date: Wed, 14 Aug 2019 13:21:31 +1200 Subject: Text Block / String manipulation with Constant Functions. Message-ID: Quite a number of discussions (on and off these lists) about the proposed Text Blocks and earlier proposal run into the combinatorial problems of supporting all the ways in which the string should be converted from it's in-source representation for differing uses. I wonder if we could take a page from a feature I've found useful in Rust ('const functions') and in C++ (constexpr functions). For Java this would mean annotating methods and providing compiler support for those methods that, if the compiler find they act entirely on constant inputs, will be guaranteed to have a zero runtime cost by computing the result during compilation and only storing the result in the output. Eg | var s = " test ".trim(); If trim() was marked as a 'const function' then the actual String in the class-file will be "test". For String there are quite a few methods that this could be useful for, that play well with Text Blocks and other String literals - indent, length, replace, strip, trim and valueOf methods spring to mind. Adding appendLine, trimLeft, trimRight might prove useful too. Eg | var s = """ | This | is | a | test | """.appendLine().indent(2).replace("\n", "\r\n"); | | s.equals(" This\r\n is\r\n a\r\n test\r\n"); This allows the Text Block to consider only embedded indentation and avoid the, I believe usually superfluous, trailing line-separator before the terminating """. All of the transformations are guaranteed to be applied by the compiler so there's no runtime cost (beyond final storage space in the class file which might actually be less). This encodes API detail into the language-level to a greater degree than before since a method may be a constant function in language level N but not N-1 (though this just moves the cost to runtime). This might be seen as undesirable and potentially surprising. It's not clear if there are reasonable situations in which the constant form might not be desired (eg. such as bloating the clasfile with "".indent(1_000).replace(" ", "\n").indent(1_000_000)). Would guaranteeing execution at class-load be acceptable instead - sometimes perhaps but that's just a different part of runtime. Obviously we still want Text-blocks (and any eventual 'raw string', 'interpolated string' features) to be useful without the verbosity of the trailing functions in most cases but adding this would give developers control without requiring the grammar to become a swiss-army-knife. This feature could similarly be applied to other classes (some java.lang.Math methods for example, just extending how some constant expressions are compile-time evaluated). -- Aaron Scott-Boddendijk From brian.goetz at oracle.com Wed Aug 14 12:41:52 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 14 Aug 2019 08:41:52 -0400 Subject: Text Block / String manipulation with Constant Functions. In-Reply-To: References: Message-ID: <0CC80D5D-B4D3-4095-BEDC-9D721978C324@oracle.com> Yes, this is an area we have explored in some depth, see his video for a partial status report on this work: https://www.youtube.com/watch?v=iSEjlLFCS3E The summary is that this is indeed practical and desirable, but is a substantial project, and poses substantial disruption to the JLS (and indeed, to the foundations of the language.). So it?s not a small thing, but it?s something we?d like to see. Sent from my iPad > On Aug 13, 2019, at 9:21 PM, Aaron Scott-Boddendijk wrote: > > Quite a number of discussions (on and off these lists) about the proposed > Text Blocks and earlier proposal run into the combinatorial problems of > supporting all the ways in which the string should be converted from it's > in-source representation for differing uses. > > I wonder if we could take a page from a feature I've found useful in Rust > ('const functions') and in C++ (constexpr functions). > > For Java this would mean annotating methods and providing compiler support > for those methods that, if the compiler find they act entirely on constant > inputs, will be guaranteed to have a zero runtime cost by computing the > result during compilation and only storing the result in the output. > > Eg > | var s = " test ".trim(); > > If trim() was marked as a 'const function' then the actual String in the > class-file will be "test". > > For String there are quite a few methods that this could be useful for, > that play well with Text Blocks and other String literals - indent, length, > replace, strip, trim and valueOf methods spring to mind. Adding appendLine, > trimLeft, trimRight might prove useful too. > > Eg > | var s = """ > | This > | is > | a > | test > | """.appendLine().indent(2).replace("\n", "\r\n"); > | > | s.equals(" This\r\n is\r\n a\r\n test\r\n"); > > This allows the Text Block to consider only embedded indentation and avoid > the, I believe usually superfluous, trailing line-separator before the > terminating """. All of the transformations are guaranteed to be applied by > the compiler so there's no runtime cost (beyond final storage space in the > class file which might actually be less). > > This encodes API detail into the language-level to a greater degree than > before since a method may be a constant function in language level N but > not N-1 (though this just moves the cost to runtime). This might be seen as > undesirable and potentially surprising. > > It's not clear if there are reasonable situations in which the constant > form might not be desired (eg. such as bloating the clasfile with > "".indent(1_000).replace(" ", "\n").indent(1_000_000)). Would guaranteeing > execution at class-load be acceptable instead - sometimes perhaps but > that's just a different part of runtime. > > Obviously we still want Text-blocks (and any eventual 'raw string', > 'interpolated string' features) to be useful without the verbosity of the > trailing functions in most cases but adding this would give developers > control without requiring the grammar to become a swiss-army-knife. > > This feature could similarly be applied to other classes (some > java.lang.Math methods for example, just extending how some constant > expressions are compile-time evaluated). > > -- > Aaron Scott-Boddendijk From vicente.romero at oracle.com Wed Aug 14 22:20:43 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 14 Aug 2019 22:20:43 +0000 Subject: hg: amber/amber: dont accept record component names like: toString, etc Message-ID: <201908142220.x7EMKhSM007520@aojmv0008.oracle.com> Changeset: 36c88ca11314 Author: vromero Date: 2019-08-14 18:14 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/36c88ca11314 dont accept record component names like: toString, etc ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.java + test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.out From maurizio.cimadamore at oracle.com Wed Aug 14 22:25:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 14 Aug 2019 22:25:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908142225.x7EMPuEw013662@aojmv0008.oracle.com> Changeset: c0de553f0b3f Author: mcimadamore Date: 2019-08-14 22:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c0de553f0b3f Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From talden at gmail.com Thu Aug 15 10:35:03 2019 From: talden at gmail.com (Aaron Scott-Boddendijk) Date: Thu, 15 Aug 2019 22:35:03 +1200 Subject: Text Block / String manipulation with Constant Functions. In-Reply-To: <0CC80D5D-B4D3-4095-BEDC-9D721978C324@oracle.com> References: <0CC80D5D-B4D3-4095-BEDC-9D721978C324@oracle.com> Message-ID: I'd read some off the discussion on Constable and ConstantDesc during the JDK 12 dev cycle though I hadn't seen the presentation (which is a really good summary, thanks for that). Looking at some of the frameworks we use, the constant-folding could bring fairly significant results (looking at how we build query-fragments for requests to Elasticsearch and numerous examples in parts of the Spring-framework and just with some of our own builder patterns). It is a shame that we can't leverage that to get to the cases that would help with the ergonomics around text-block quickly but I understand that baking anything like that into the language itself needs to be carefully considered. I just hope that we don't try to do too much now with the text-blocks literal that would be better served via constant folding/propagation later. Thanks again for the link - the presentation was excellent and as more of our projects finally break free of Java 8 (the bottleneck now being effort rather than technical barriers) I will definitely be looking to make use of this. Right, now stop reading my prattle and get back to finishing features :) -- Aaron Scott-Boddendijk On Thu, Aug 15, 2019 at 12:41 AM Brian Goetz wrote: > Yes, this is an area we have explored in some depth, see his video for a > partial status report on this work: > > https://www.youtube.com/watch?v=iSEjlLFCS3E > > The summary is that this is indeed practical and desirable, but is a > substantial project, and poses substantial disruption to the JLS (and > indeed, to the foundations of the language.). So it?s not a small thing, > but it?s something we?d like to see. > > Sent from my iPad > > On Aug 13, 2019, at 9:21 PM, Aaron Scott-Boddendijk > wrote: > > Quite a number of discussions (on and off these lists) about the proposed > Text Blocks and earlier proposal run into the combinatorial problems of > supporting all the ways in which the string should be converted from it's > in-source representation for differing uses. > > I wonder if we could take a page from a feature I've found useful in Rust > ('const functions') and in C++ (constexpr functions). > > For Java this would mean annotating methods and providing compiler support > for those methods that, if the compiler find they act entirely on constant > inputs, will be guaranteed to have a zero runtime cost by computing the > result during compilation and only storing the result in the output. > > Eg > | var s = " test ".trim(); > > If trim() was marked as a 'const function' then the actual String in the > class-file will be "test". > > For String there are quite a few methods that this could be useful for, > that play well with Text Blocks and other String literals - indent, length, > replace, strip, trim and valueOf methods spring to mind. Adding appendLine, > trimLeft, trimRight might prove useful too. > > Eg > | var s = """ > | This > | is > | a > | test > | """.appendLine().indent(2).replace("\n", "\r\n"); > | > | s.equals(" This\r\n is\r\n a\r\n test\r\n"); > > This allows the Text Block to consider only embedded indentation and avoid > the, I believe usually superfluous, trailing line-separator before the > terminating """. All of the transformations are guaranteed to be applied by > the compiler so there's no runtime cost (beyond final storage space in the > class file which might actually be less). > > This encodes API detail into the language-level to a greater degree than > before since a method may be a constant function in language level N but > not N-1 (though this just moves the cost to runtime). This might be seen as > undesirable and potentially surprising. > > It's not clear if there are reasonable situations in which the constant > form might not be desired (eg. such as bloating the clasfile with > "".indent(1_000).replace(" ", "\n").indent(1_000_000)). Would guaranteeing > execution at class-load be acceptable instead - sometimes perhaps but > that's just a different part of runtime. > > Obviously we still want Text-blocks (and any eventual 'raw string', > 'interpolated string' features) to be useful without the verbosity of the > trailing functions in most cases but adding this would give developers > control without requiring the grammar to become a swiss-army-knife. > > This feature could similarly be applied to other classes (some > java.lang.Math methods for example, just extending how some constant > expressions are compile-time evaluated). > > -- > Aaron Scott-Boddendijk > > From vicente.romero at oracle.com Thu Aug 15 16:16:51 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Thu, 15 Aug 2019 12:16:51 -0400 Subject: CFV: New Amber Committer: Harold Seigel Message-ID: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> I hereby nominate Harold Seigel (hseigel) to Amber Committer. Harold is a member of the Hotspot team who has joined Project Amber to work on the records and sealed types projects, [3] and [4]. A list of his most recent OpenJDK contributions are available at [5]. Votes are due by August 29, 2019. Only current Amber Committers [1] are eligible to vote on this nomination. For Lazy Consensus voting instructions, see [2]. Thank you, Vicente Romero [1] http://openjdk.java.net/census [2] http://openjdk.java.net/projects/#committer-vote [3] https://bugs.openjdk.java.net/browse/JDK-8222777 [4] https://bugs.openjdk.java.net/browse/JDK-8227043 [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel) From jonathan.gibbons at oracle.com Thu Aug 15 16:19:53 2019 From: jonathan.gibbons at oracle.com (Jonathan Gibbons) Date: Thu, 15 Aug 2019 09:19:53 -0700 Subject: CFV: New Amber Committer: Harold Seigel In-Reply-To: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> References: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> Message-ID: Vote: yes On 8/15/19 9:16 AM, Vicente Romero wrote: > I hereby nominate Harold Seigel (hseigel) to Amber Committer. > > Harold is a member of the Hotspot team who has joined Project Amber to > work on the records and sealed types projects, [3] and [4]. A list of > his most recent OpenJDK contributions are available at [5]. > > Votes are due by August 29, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] https://bugs.openjdk.java.net/browse/JDK-8227043 > [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel) From brian.goetz at oracle.com Thu Aug 15 16:20:10 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 15 Aug 2019 12:20:10 -0400 Subject: CFV: New Amber Committer: Harold Seigel In-Reply-To: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> References: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> Message-ID: Vote: yes On 8/15/2019 12:16 PM, Vicente Romero wrote: > I hereby nominate Harold Seigel (hseigel) to Amber Committer. > > Harold is a member of the Hotspot team who has joined Project Amber to > work on the records and sealed types projects, [3] and [4]. A list of > his most recent OpenJDK contributions are available at [5]. > > Votes are due by August 29, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] https://bugs.openjdk.java.net/browse/JDK-8227043 > [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel) From lois.foltan at oracle.com Thu Aug 15 17:31:12 2019 From: lois.foltan at oracle.com (Lois Foltan) Date: Thu, 15 Aug 2019 13:31:12 -0400 Subject: CFV: New Amber Committer: Harold Seigel In-Reply-To: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> References: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> Message-ID: <50aa497a-56a9-cc36-fb03-a35c2e8e0fce@oracle.com> Vote: yes On 8/15/2019 12:16 PM, Vicente Romero wrote: > I hereby nominate Harold Seigel (hseigel) to Amber Committer. > > Harold is a member of the Hotspot team who has joined Project Amber to > work on the records and sealed types projects, [3] and [4]. A list of > his most recent OpenJDK contributions are available at [5]. > > Votes are due by August 29, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] https://bugs.openjdk.java.net/browse/JDK-8227043 > [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel) From vicente.romero at oracle.com Thu Aug 15 17:49:20 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 15 Aug 2019 17:49:20 +0000 Subject: hg: amber/amber: adding class java.lang.Record Message-ID: <201908151749.x7FHnL4t026004@aojmv0008.oracle.com> Changeset: 6f214db52b77 Author: briangoetz Date: 2019-08-15 13:48 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/6f214db52b77 adding class java.lang.Record + src/java.base/share/classes/java/lang/Record.java From maurizio.cimadamore at oracle.com Thu Aug 15 17:56:08 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 15 Aug 2019 17:56:08 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908151756.x7FHu9Hd004390@aojmv0008.oracle.com> Changeset: 416256f30eb9 Author: mcimadamore Date: 2019-08-15 17:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/416256f30eb9 Automatic merge with records-and-sealed From vicente.romero at oracle.com Thu Aug 15 18:02:01 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 15 Aug 2019 18:02:01 +0000 Subject: hg: amber/amber: rewording java.lang.Record spec Message-ID: <201908151802.x7FI21Em007845@aojmv0008.oracle.com> Changeset: 8e7456b980f4 Author: vromero Date: 2019-08-15 14:01 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/8e7456b980f4 rewording java.lang.Record spec ! src/java.base/share/classes/java/lang/Record.java From maurizio.cimadamore at oracle.com Thu Aug 15 18:05:54 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 15 Aug 2019 18:05:54 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908151805.x7FI5t7o011137@aojmv0008.oracle.com> Changeset: 82c842b0d999 Author: mcimadamore Date: 2019-08-15 18:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/82c842b0d999 Automatic merge with records-and-sealed From vicente.romero at oracle.com Thu Aug 15 21:46:22 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 15 Aug 2019 21:46:22 +0000 Subject: hg: amber/amber: make records inherit from j.l.Record and check that no class can inherit from j.l.Record Message-ID: <201908152146.x7FLkMDq029864@aojmv0008.oracle.com> Changeset: 10f3b9bd83b8 Author: vromero Date: 2019-08-15 17:45 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/10f3b9bd83b8 make records inherit from j.l.Record and check that no class can inherit from j.l.Record ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/records/record_superclass/RecordAsSuperclassTest.java From maurizio.cimadamore at oracle.com Thu Aug 15 21:50:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 15 Aug 2019 21:50:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908152150.x7FLow8k003247@aojmv0008.oracle.com> Changeset: 64208d25926f Author: mcimadamore Date: 2019-08-15 21:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/64208d25926f Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From vicente.romero at oracle.com Thu Aug 15 23:02:40 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 15 Aug 2019 23:02:40 +0000 Subject: hg: amber/amber: adding test RecordCompilationTests Message-ID: <201908152302.x7FN2fte017560@aojmv0008.oracle.com> Changeset: 7f0d4f15e62b Author: vromero Date: 2019-08-15 19:02 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/7f0d4f15e62b adding test RecordCompilationTests + test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Thu Aug 15 23:05:59 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 15 Aug 2019 23:05:59 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908152306.x7FN60TP020785@aojmv0008.oracle.com> Changeset: a44e7deb804c Author: mcimadamore Date: 2019-08-15 23:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a44e7deb804c Automatic merge with records-and-sealed From vicente.romero at oracle.com Fri Aug 16 15:01:20 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 16 Aug 2019 15:01:20 +0000 Subject: hg: amber/amber: moving previous negative tests to RecordCompilationTest, fixing reported bugs Message-ID: <201908161501.x7GF1LGm004684@aojmv0008.oracle.com> Changeset: be8b67a276dc Author: vromero Date: 2019-08-16 11:00 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/be8b67a276dc moving previous negative tests to RecordCompilationTest, fixing reported bugs ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/lib/combo/tools/javac/combo/JavacTemplateTestBase.java - test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.java - test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.out ! test/langtools/tools/javac/records/RecordCompilationTests.java - test/langtools/tools/javac/records/allow_static_fields/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.java - test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.out - test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.java - test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.out - test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java - test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out From maurizio.cimadamore at oracle.com Fri Aug 16 15:06:08 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 16 Aug 2019 15:06:08 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908161506.x7GF68Jr008475@aojmv0008.oracle.com> Changeset: 7ddffaf8b702 Author: mcimadamore Date: 2019-08-16 15:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/7ddffaf8b702 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.java - test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.out - test/langtools/tools/javac/records/allow_static_fields/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.java - test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.out - test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.java - test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.out - test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java - test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out From vicente.romero at oracle.com Fri Aug 16 16:03:24 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 16 Aug 2019 16:03:24 +0000 Subject: hg: amber/amber: additional permitted subtypes checks Message-ID: <201908161603.x7GG3O5W016573@aojmv0008.oracle.com> Changeset: 6fbc84eefe66 Author: hseigel Date: 2019-08-16 11:57 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/6fbc84eefe66 additional permitted subtypes checks ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/memory/heapInspection.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/java.base/share/classes/java/lang/Class.java + test/hotspot/jtreg/runtime/sealedTypes/getPermittedSubtypes.jcod ! test/hotspot/jtreg/runtime/sealedTypes/getPermittedSubtypesTest.java - test/hotspot/jtreg/runtime/sealedTypes/noLoadSubtypes.jcod From maurizio.cimadamore at oracle.com Fri Aug 16 16:05:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 16 Aug 2019 16:05:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908161605.x7GG5xn3019640@aojmv0008.oracle.com> Changeset: a8905b85b1f8 Author: mcimadamore Date: 2019-08-16 16:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a8905b85b1f8 Automatic merge with records-and-sealed - test/hotspot/jtreg/runtime/sealedTypes/noLoadSubtypes.jcod From vicente.romero at oracle.com Fri Aug 16 18:33:27 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 16 Aug 2019 18:33:27 +0000 Subject: hg: amber/amber: fixing test CheckingAttributeAtRuntimeTest Message-ID: <201908161833.x7GIXRoS027679@aojmv0008.oracle.com> Changeset: b58b165af743 Author: vromero Date: 2019-08-16 14:31 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/b58b165af743 fixing test CheckingAttributeAtRuntimeTest ! test/langtools/tools/javac/sealed/CheckingAttributeAtRuntimeTest.java From maurizio.cimadamore at oracle.com Fri Aug 16 18:35:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 16 Aug 2019 18:35:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908161835.x7GIZte3001054@aojmv0008.oracle.com> Changeset: 3d7072d56e6d Author: mcimadamore Date: 2019-08-16 18:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/3d7072d56e6d Automatic merge with records-and-sealed From vicente.romero at oracle.com Fri Aug 16 21:12:09 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 16 Aug 2019 21:12:09 +0000 Subject: hg: amber/amber: fixing more bugs on records, more changes to RecordCompilationTests Message-ID: <201908162112.x7GLCAIb001312@aojmv0008.oracle.com> Changeset: 6b7ea91a2528 Author: vromero Date: 2019-08-16 17:11 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/6b7ea91a2528 fixing more bugs on records, more changes to RecordCompilationTests ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/records/RecordCompilationTests.java ! test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java From maurizio.cimadamore at oracle.com Fri Aug 16 21:15:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 16 Aug 2019 21:15:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908162115.x7GLFtjD003683@aojmv0008.oracle.com> Changeset: 475bf8c9563b Author: mcimadamore Date: 2019-08-16 21:15 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/475bf8c9563b Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From brandileefehn5 at gmail.com Sat Aug 17 13:45:11 2019 From: brandileefehn5 at gmail.com (Brandi lee Fehn) Date: Sat, 17 Aug 2019 06:45:11 -0700 Subject: No subject In-Reply-To: References: Message-ID: Google Transparency Report From brian.goetz at oracle.com Mon Aug 19 20:00:41 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Mon, 19 Aug 2019 20:00:41 +0000 Subject: hg: amber/amber: More record compilation tests; add RECORD_COMPONENT ElementType enum. Message-ID: <201908192000.x7JK0f57004032@aojmv0008.oracle.com> Changeset: 4750d96927b1 Author: briangoetz Date: 2019-08-19 16:00 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/4750d96927b1 More record compilation tests; add RECORD_COMPONENT ElementType enum. ! src/java.base/share/classes/java/lang/annotation/ElementType.java ! test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Mon Aug 19 20:05:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 19 Aug 2019 20:05:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908192005.x7JK5sh1007508@aojmv0008.oracle.com> Changeset: 0fbfd52012af Author: mcimadamore Date: 2019-08-19 20:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/0fbfd52012af Automatic merge with records-and-sealed ! src/java.base/share/classes/java/lang/annotation/ElementType.java ! test/langtools/tools/javac/records/RecordCompilationTests.java From jan.lahoda at oracle.com Tue Aug 20 09:02:08 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Tue, 20 Aug 2019 09:02:08 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201908200902.x7K929rc001367@aojmv0008.oracle.com> Changeset: fac3587d6802 Author: jlahoda Date: 2019-08-19 16:49 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/fac3587d6802 Disabling merging of pattern variables. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/patterns/BindingsExistTest.out ! test/langtools/tools/javac/patterns/BindingsTest1.java + test/langtools/tools/javac/patterns/BindingsTest1Merging.java + test/langtools/tools/javac/patterns/BindingsTest1Merging.out ! test/langtools/tools/javac/patterns/BindingsTest2.out ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.java ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.out Changeset: d67b52fc90b2 Author: jlahoda Date: 2019-08-20 10:59 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/d67b52fc90b2 Merging recent changes to patterns-stage-1 into the patterns branch; reapplying the ability to merge pattern variables. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/patterns/BindingsExistTest.out ! test/langtools/tools/javac/patterns/BindingsTest1.java ! test/langtools/tools/javac/patterns/BindingsTest2.out ! test/langtools/tools/javac/patterns/DuplicateBindingTest.java ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.java ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.out ! test/langtools/tools/javac/patterns/SwitchFallThrough2.out From maurizio.cimadamore at oracle.com Tue Aug 20 09:05:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 09:05:53 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201908200905.x7K95s5w004396@aojmv0008.oracle.com> Changeset: b3b50e7ad342 Author: mcimadamore Date: 2019-08-20 09:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/b3b50e7ad342 Automatic merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From maurizio.cimadamore at oracle.com Tue Aug 20 09:06:22 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 09:06:22 +0000 Subject: hg: amber/amber: Automatic merge with patterns Message-ID: <201908200906.x7K96Mcr004973@aojmv0008.oracle.com> Changeset: bcd0f33734b3 Author: mcimadamore Date: 2019-08-20 09:06 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/bcd0f33734b3 Automatic merge with patterns ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/patterns/BindingsTest1.java From jan.lahoda at oracle.com Tue Aug 20 14:07:46 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Tue, 20 Aug 2019 14:07:46 +0000 Subject: hg: amber/amber: Fixing a few tests. Message-ID: <201908201407.x7KE7lAb003433@aojmv0008.oracle.com> Changeset: c91c71a053ad Author: jlahoda Date: 2019-08-20 15:59 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/c91c71a053ad Fixing a few tests. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! test/langtools/tools/javac/patterns/ConstantPatternTest2.out ! test/langtools/tools/javac/patterns/NullsInPatterns2.out From maurizio.cimadamore at oracle.com Tue Aug 20 14:11:00 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 14:11:00 +0000 Subject: hg: amber/amber: Automatic merge with patterns Message-ID: <201908201411.x7KEB0kF007654@aojmv0008.oracle.com> Changeset: d2da9cce7a04 Author: mcimadamore Date: 2019-08-20 14:10 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/d2da9cce7a04 Automatic merge with patterns ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From vicente.romero at oracle.com Tue Aug 20 17:32:05 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 17:32:05 +0000 Subject: hg: amber/amber: reject serialization members if declared in a record Message-ID: <201908201732.x7KHW6v0012035@aojmv0008.oracle.com> Changeset: a9021bd6ffbe Author: vromero Date: 2019-08-20 13:31 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/a9021bd6ffbe reject serialization members if declared in a record ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Tue Aug 20 17:35:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 17:35:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908201735.x7KHZwA1015930@aojmv0008.oracle.com> Changeset: a363100f43a9 Author: mcimadamore Date: 2019-08-20 17:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a363100f43a9 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From brian.goetz at oracle.com Tue Aug 20 17:43:59 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Tue, 20 Aug 2019 17:43:59 +0000 Subject: hg: amber/amber: Test cleanups Message-ID: <201908201743.x7KHhxGr022755@aojmv0008.oracle.com> Changeset: befc2bc52f1f Author: briangoetz Date: 2019-08-20 13:43 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/befc2bc52f1f Test cleanups ! test/langtools/tools/javac/records/RecordCompilationTests.java ! test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java From maurizio.cimadamore at oracle.com Tue Aug 20 17:45:51 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 17:45:51 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908201745.x7KHjqIR024198@aojmv0008.oracle.com> Changeset: 9de0ee33b0f4 Author: mcimadamore Date: 2019-08-20 17:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/9de0ee33b0f4 Automatic merge with records-and-sealed ! test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java From vicente.romero at oracle.com Tue Aug 20 18:34:53 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 18:34:53 +0000 Subject: hg: amber/amber: removing duplicated tests Message-ID: <201908201834.x7KIYrmw024503@aojmv0008.oracle.com> Changeset: 821f4cb1f879 Author: vromero Date: 2019-08-20 14:33 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/821f4cb1f879 removing duplicated tests ! test/langtools/tools/javac/records/RecordCompilationTests.java - test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.java - test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.out - test/langtools/tools/javac/records/mandated_members/RecordsCanReDeclareMembersTest.java - test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.java - test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.out - test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.java - test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.out - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.out From maurizio.cimadamore at oracle.com Tue Aug 20 18:40:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 18:40:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908201840.x7KIerap001683@aojmv0008.oracle.com> Changeset: a0077b5b35d8 Author: mcimadamore Date: 2019-08-20 18:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a0077b5b35d8 Automatic merge with records-and-sealed - test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.java - test/langtools/tools/javac/records/fields/IllegalRecordComponentNameTest.out - test/langtools/tools/javac/records/mandated_members/RecordsCanReDeclareMembersTest.java - test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.java - test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.out - test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.java - test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.out - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.out From vicente.romero at oracle.com Tue Aug 20 19:32:22 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 19:32:22 +0000 Subject: hg: amber/amber: assign unassigned components only for the compact record constructor Message-ID: <201908201932.x7KJWMAL002401@aojmv0008.oracle.com> Changeset: 1f7e5db93261 Author: vromero Date: 2019-08-20 15:31 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/1f7e5db93261 assign unassigned components only for the compact record constructor ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/tools/javac/records/RecordCompilationTests.java - test/langtools/tools/javac/records/mandated_members/MandatedMembersNotBeingEntered.java ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/MethodParametersForCanonicalConstructorTest.java From maurizio.cimadamore at oracle.com Tue Aug 20 19:35:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 19:35:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908201935.x7KJZrfY005514@aojmv0008.oracle.com> Changeset: 3ff2c65453c9 Author: mcimadamore Date: 2019-08-20 19:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/3ff2c65453c9 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/records/mandated_members/MandatedMembersNotBeingEntered.java From vicente.romero at oracle.com Tue Aug 20 19:55:12 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 19:55:12 +0000 Subject: hg: amber/amber: ignore CheckReadResolveMethodTest for now Message-ID: <201908201955.x7KJtCnU019219@aojmv0008.oracle.com> Changeset: b8a279cd5eb2 Author: vromero Date: 2019-08-20 15:54 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/b8a279cd5eb2 ignore CheckReadResolveMethodTest for now ! test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java From maurizio.cimadamore at oracle.com Tue Aug 20 20:00:56 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 20:00:56 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908202000.x7KK0vSw021930@aojmv0008.oracle.com> Changeset: fc7f8f88bf59 Author: mcimadamore Date: 2019-08-20 20:00 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/fc7f8f88bf59 Automatic merge with records-and-sealed From vicente.romero at oracle.com Tue Aug 20 21:22:56 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 21:22:56 +0000 Subject: hg: amber/amber: dont allow accessors or canonical constructor to declare checked exceptions Message-ID: <201908202122.x7KLMvPR011551@aojmv0008.oracle.com> Changeset: 0cf5b28173f4 Author: vromero Date: 2019-08-20 17:20 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/0cf5b28173f4 dont allow accessors or canonical constructor to declare checked exceptions ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Tue Aug 20 21:25:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 21:25:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908202125.x7KLPtJ6014998@aojmv0008.oracle.com> Changeset: dbabf3e03a38 Author: mcimadamore Date: 2019-08-20 21:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/dbabf3e03a38 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From vicente.romero at oracle.com Tue Aug 20 21:44:27 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 20 Aug 2019 21:44:27 +0000 Subject: hg: amber/amber: dont allow type annotations with TYPE_PARAMETER target on record components Message-ID: <201908202144.x7KLiRl9027043@aojmv0008.oracle.com> Changeset: 8275cb33e0ec Author: vromero Date: 2019-08-20 17:42 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/8275cb33e0ec dont allow type annotations with TYPE_PARAMETER target on record components ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! test/langtools/tools/javac/records/RecordCompilationTests.java - test/langtools/tools/javac/records/annotations/BadAnnotations.java - test/langtools/tools/javac/records/annotations/BadAnnotations.out From maurizio.cimadamore at oracle.com Tue Aug 20 21:50:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 20 Aug 2019 21:50:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908202150.x7KLotK4001279@aojmv0008.oracle.com> Changeset: ab326d47afbe Author: mcimadamore Date: 2019-08-20 21:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/ab326d47afbe Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java - test/langtools/tools/javac/records/annotations/BadAnnotations.java - test/langtools/tools/javac/records/annotations/BadAnnotations.out From forax at univ-mlv.fr Tue Aug 20 22:34:45 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Wed, 21 Aug 2019 00:34:45 +0200 (CEST) Subject: hg: amber/amber: dont allow accessors or canonical constructor to declare checked exceptions In-Reply-To: <201908202122.x7KLMvPR011551@aojmv0008.oracle.com> References: <201908202122.x7KLMvPR011551@aojmv0008.oracle.com> Message-ID: <298831627.365866.1566340485385.JavaMail.zimbra@u-pem.fr> Hi Vicente, stream.filter(exc -> !isUnchecked(exc)).findAny().isPresent() can be written stream.anyMatch(exc -> !isUnchecked(exc)) regards, R?mi ----- Mail original ----- > De: "Vicente Romero" > ?: "amber-dev" > Envoy?: Mardi 20 Ao?t 2019 23:22:56 > Objet: hg: amber/amber: dont allow accessors or canonical constructor to declare checked exceptions > Changeset: 0cf5b28173f4 > Author: vromero > Date: 2019-08-20 17:20 -0400 > URL: https://hg.openjdk.java.net/amber/amber/rev/0cf5b28173f4 > > dont allow accessors or canonical constructor to declare checked exceptions > > ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java > ! > src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties > ! test/langtools/tools/javac/records/RecordCompilationTests.java From jan.lahoda at oracle.com Wed Aug 21 11:30:41 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Wed, 21 Aug 2019 11:30:41 +0000 Subject: hg: amber/amber: Improving fallthrough handling in switches with patterns. Message-ID: <201908211130.x7LBUfo2001835@aojmv0008.oracle.com> Changeset: a898dc684456 Author: jlahoda Date: 2019-08-21 13:28 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/a898dc684456 Improving fallthrough handling in switches with patterns. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java From maurizio.cimadamore at oracle.com Wed Aug 21 11:36:06 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 21 Aug 2019 11:36:06 +0000 Subject: hg: amber/amber: Automatic merge with patterns Message-ID: <201908211136.x7LBa7Jd005591@aojmv0008.oracle.com> Changeset: 00dece45a5de Author: mcimadamore Date: 2019-08-21 11:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/00dece45a5de Automatic merge with patterns ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java From vicente.romero at oracle.com Wed Aug 21 16:01:28 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Wed, 21 Aug 2019 12:01:28 -0400 Subject: hg: amber/amber: dont allow accessors or canonical constructor to declare checked exceptions In-Reply-To: <298831627.365866.1566340485385.JavaMail.zimbra@u-pem.fr> References: <201908202122.x7KLMvPR011551@aojmv0008.oracle.com> <298831627.365866.1566340485385.JavaMail.zimbra@u-pem.fr> Message-ID: thanks Remi I will update that, Vicente On 8/20/19 6:34 PM, Remi Forax wrote: > Hi Vicente, > stream.filter(exc -> !isUnchecked(exc)).findAny().isPresent() > can be written > stream.anyMatch(exc -> !isUnchecked(exc)) > > regards, > R?mi > > ----- Mail original ----- >> De: "Vicente Romero" >> ?: "amber-dev" >> Envoy?: Mardi 20 Ao?t 2019 23:22:56 >> Objet: hg: amber/amber: dont allow accessors or canonical constructor to declare checked exceptions >> Changeset: 0cf5b28173f4 >> Author: vromero >> Date: 2019-08-20 17:20 -0400 >> URL: https://hg.openjdk.java.net/amber/amber/rev/0cf5b28173f4 >> >> dont allow accessors or canonical constructor to declare checked exceptions >> >> ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java >> ! >> src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties >> ! test/langtools/tools/javac/records/RecordCompilationTests.java From vicente.romero at oracle.com Thu Aug 22 13:42:54 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 22 Aug 2019 13:42:54 +0000 Subject: hg: amber/amber: allow records to implement serialization methods, stop generating the readResolve method Message-ID: <201908221342.x7MDgsWi015763@aojmv0008.oracle.com> Changeset: 238e9ac74503 Author: vromero Date: 2019-08-22 09:41 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/238e9ac74503 allow records to implement serialization methods, stop generating the readResolve method ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! test/langtools/tools/javac/records/RecordCompilationTests.java - test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java From maurizio.cimadamore at oracle.com Thu Aug 22 14:22:03 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 22 Aug 2019 14:22:03 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908221422.x7MEM36T010831@aojmv0008.oracle.com> Changeset: d7fdaac98918 Author: mcimadamore Date: 2019-08-22 14:21 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/d7fdaac98918 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java - test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java From vicente.romero at oracle.com Thu Aug 22 15:00:08 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 22 Aug 2019 15:00:08 +0000 Subject: hg: amber/amber: delta applying: allow records to implement serialization methods, stop generating the readResolve method, until all the support for record serialization has been pushed Message-ID: <201908221500.x7MF08S9005016@aojmv0008.oracle.com> Changeset: e9de706a3aae Author: vromero Date: 2019-08-22 10:59 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/e9de706a3aae delta applying: allow records to implement serialization methods, stop generating the readResolve method, until all the support for record serialization has been pushed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! test/langtools/tools/javac/records/RecordCompilationTests.java + test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java From maurizio.cimadamore at oracle.com Thu Aug 22 15:05:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 22 Aug 2019 15:05:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908221505.x7MF5xQN008984@aojmv0008.oracle.com> Changeset: 8ce09d289118 Author: mcimadamore Date: 2019-08-22 15:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/8ce09d289118 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java From vicente.romero at oracle.com Thu Aug 22 19:07:57 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 22 Aug 2019 19:07:57 +0000 Subject: hg: amber/amber: definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute Message-ID: <201908221907.x7MJ7vw2010792@aojmv0008.oracle.com> Changeset: 94d968db1049 Author: vromero Date: 2019-08-22 14:42 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/94d968db1049 definition of the new annotation target RECORD_COMPONENT, new implementation of the record attribute ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/ClassWriter.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/Record_attribute.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/AttributeWriter.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer2.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/combo/TargetAnnoCombo.java From maurizio.cimadamore at oracle.com Thu Aug 22 19:10:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 22 Aug 2019 19:10:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908221910.x7MJAsnR014480@aojmv0008.oracle.com> Changeset: f1f5f4dec514 Author: mcimadamore Date: 2019-08-22 19:10 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f1f5f4dec514 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From vicente.romero at oracle.com Thu Aug 22 21:19:29 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 22 Aug 2019 21:19:29 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201908222119.x7MLJTBW029202@aojmv0008.oracle.com> Changeset: 7956bba86402 Author: vromero Date: 2019-08-22 16:41 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/7956bba86402 minor code simplification ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java Changeset: 7f79a7ab6de8 Author: vromero Date: 2019-08-22 17:16 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/7f79a7ab6de8 bug fix: private records are not allowed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Thu Aug 22 21:25:52 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 22 Aug 2019 21:25:52 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908222125.x7MLPr6v006302@aojmv0008.oracle.com> Changeset: 893b9bb5dd1f Author: mcimadamore Date: 2019-08-22 21:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/893b9bb5dd1f Automatic merge with records-and-sealed From cafebab3 at googlemail.com Thu Aug 22 21:45:33 2019 From: cafebab3 at googlemail.com (Daniel Dietrich) Date: Thu, 22 Aug 2019 23:45:33 +0200 Subject: Some findings regarding records, sealed types and switch expressions Message-ID: Hello, my name is Daniel Dietrich (creator of Vavr). This is my first email to an OpenJDK mailing list. I ask myself how threads work. Does one simply reply to an email? Do I need to subscribe to amber-dev in order to see answers? I tested records, sealed types and switch expressions the last days. I know, that some of these features might still be under heavy development. But maybe some of my findings/questions help you. Thanks! Best regards, Daniel 1) Questions (sealed) 1.1) Question: Do make generics in the permits section sense? I can?t find a use case. The example below is misleading for a user. // why restrict an implementation to specific generic types? sealed interface A permits B {} class B implements A A a = new B<>(1); 1.2) Error: A generic sealed interface cannot be subclassed sealed interface A permits B {} class B implements A {} sealed interface A permits B {} class B implements A {} sealed interface A permits B {} class B implements A {} In all three examples we get "cannot inherit from sealed class: A" Removing the generic type parameter from the sealed interface satisfies the compiler: sealed interface A permits B {} class B implements A {} sealed interface A permits B {} class B implements A {} 1.3) Error: switch cases on generic records do not work sealed interface Option permits Some, None {} record Some(T t) implements Option {} record None() implements Option {} Option o1 = new Some<>("1"); var res = switch(o1) { case Some(var s) -> s; ^-- error: cannot access AutoCloseable bad class file: /modules/java.base/java/lang/AutoCloseable.class undeclared type variable: T Please remove or make sure it appears in the correct subdirectory of the classpath. case None none -> ""; }; If I add AutoCloseable, another sealed interface Option extends AutoCloseable permits Some, None {} Option o1 = new Some<>("1"); var res = switch(o1) { case Some(var s) -> s; ^-- error: cannot access ElementType bad class file: /modules/java.base/java/io/Serializable.class undeclared type variable: T Please remove or make sure it appears in the correct subdirectory of the classpath. case None none -> ""; }; I'm not sure, if the latter error (Serializable) was already fixed on the 'record-and-sealed' branch today, I've seen activity there. However, it isn't merged to the 'patterns-deconstruction', yet, so I couldn't test it (without manual merge effort). 2) Questions (records) I get a couple of errors on the 'pattern-deconstruction' branch (changeset 57026:00dece45a5de). 2.1) Compiler error: "Unexpected kind: RECORD" The compiler does not recognize if record parameters are missing (or added) on instance creation: // example record A(String s); new A(); // exception in the compiler (see below) An exception has occurred in the compiler (14-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you. java.lang.AssertionError: Unexpected kind: RECORD at jdk.compiler/com.sun.tools.javac.code.Kinds.kindName(Kinds.java:307) at jdk.compiler/com.sun.tools.javac.comp.Resolve$InapplicableSymbolError.getDiagnostic(Resolve.java:4011) at jdk.compiler/com.sun.tools.javac.comp.Resolve.logResolveError(Resolve.java:3731) at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessInternal(Resolve.java:2496) at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessMethod(Resolve.java:2514) at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.access(Resolve.java:3328) at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3569) at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2784) at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveConstructor(Resolve.java:2775) at jdk.compiler/com.sun.tools.javac.comp.Attr.visitNewClass(Attr.java:2599) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1854) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:685) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:736) at jdk.compiler/com.sun.tools.javac.comp.Attr.visitExec(Attr.java:2048) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1585) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:685) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:758) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:777) at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1331) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1047) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:685) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:758) at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1135) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:889) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:685) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:758) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:5211) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5064) at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:4993) at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:4938) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1346) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972) at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:318) at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176) at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) 2.2) Error: Not possible to match record with no arguments sealed interface Option permits Some, None {} record Some(String s) implements Option {} record None() implements Option {} Option o1 = new Some("1"); var res = switch(o1) { case Some(var s) -> s; case None() -> ""; ^-- error: illegal start of expression }; // workaround: case None none -> ""; // however, it fails with 2.3) then 2.3) Error: Exhaustiveness check does not seem to work in this case sealed interface Option permits Some, None {} record Some(String s) implements Option {} record None() implements Option {} Option o1 = new Some("1"); var res = switch(o1) { ^-- error: the switch expression does not cover all possible input values case Some(var s) -> s; case None none -> ""; }; // workaround: add default case 2.4) Question: Are instanceof checks planned in switch expressions? record A(); var res = switch(new Object()) { case A -> 1 // instanceof A check default -> 0 }; 2.5) Question: Best way to implement singletons? Scala: sealed trait Option[+T] case class Some[+T](t: T) extends Option[T] case object None extends Option[Nothing] // singleton val o1: Option[String] = Some("") val o2: Option[String] = None val res = o1 match { case Some(t) => t case None => "" } In Java, I would use a singleton class or an enum: sealed interface Option permits Some, None {} record Some(T t) implements Option {} class None implements Option { private static final None INSTANCE = new None<>(); private None() {} static None instance() { @SuppressWarnings("unchecked") final None none = (None) None.INSTANCE; return none; } } Option o1 = new Some<>(""); Option o2 = None.instance(); var res = switch(o1) { case Some(t) -> t; case None none -> ""; } However, what I really want is a singleton with all the benefits of a record: sealed interface Option permits Some, None {} record Some(T t) implements Option {} __singleton__ record None() implements Option {} // no new None() possible Option o1 = new Some<>(""); Option o2 = None.instance(); // generated method var res = switch(o1) { case Some(t) -> t; case None none -> ""; } However, I see that the cast is a corner case (possible, because record has no entries). From brian.goetz at oracle.com Thu Aug 22 22:01:29 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 22 Aug 2019 18:01:29 -0400 Subject: Some findings regarding records, sealed types and switch expressions In-Reply-To: References: Message-ID: > 1) Questions (sealed) > > 1.1) Question: Do make generics in the permits section sense? > > I can?t find a use case. The example below is misleading for a user. > > // why restrict an implementation to specific generic types? > sealed interface A permits B {} > class B implements A > > A a = new B<>(1); The permits clause should be a list of _classes_, not of _types_. If the compiler accepts the above, that's a compiler bug. > 1.2) Error: A generic sealed interface cannot be subclassed > > sealed interface A permits B {} > class B implements A {} > > sealed interface A permits B {} > class B implements A {} > > sealed interface A permits B {} > class B implements A {} > > In all three examples we get "cannot inherit from sealed class: A" I would expect the latter two sets of examples to work (the last example merely implements the raw type A, rather than the parameterized type A.)? This sounds like a bug. > 1.3) Error: switch cases on generic records do not work Which branch are you running against?? Deconstruction patterns in switch are not yet implemented, except experimentally in some branch that may or may not be parented on records-and-sealed.? In any case, the combination of these features is definitely bleeding edge at this point.? Our goal for the short term is to stabilized records and sealed types on their own, and add the pattern support after. I'll let Jan answer on the details of what the patterns-deconstruction branch currently does. > 2.4) Question: Are instanceof checks planned in switch expressions? > > record A(); > > var res = switch(new Object()) { > case A -> 1 // instanceof A check > default -> 0 > }; Yes, eventually, but its not clear whether the binding variable will be required: ??? case A a -> 1 or whether omitting the binding variable will be OK.? I am worried about ambiguities in `identifier` as a pattern, since it could be a constant pattern or a type pattern. > 2.5) Question: Best way to implement singletons? THis is an open question ... there's some overlap between enum and records that we're still working through. From cafebab3 at googlemail.com Thu Aug 22 22:54:02 2019 From: cafebab3 at googlemail.com (Daniel Dietrich) Date: Fri, 23 Aug 2019 00:54:02 +0200 Subject: Some findings regarding records, sealed types and switch expressions In-Reply-To: References: Message-ID: Thank you, Brian. I worked on the patterns-deconstruction branch. I updated to the latest change-set on the records-and-sealed branch and did a re-test of the following findings: > On 23. Aug 2019, at 00:01, Brian Goetz wrote: > >> 1) Questions (sealed) >> >> 1.1) Question: Do make generics in the permits section sense? >> >> I can?t find a use case. The example below is misleading for a user. >> >> // why restrict an implementation to specific generic types? >> sealed interface A permits B {} >> class B implements A >> >> A a = new B<>(1); > > The permits clause should be a list of _classes_, not of _types_. If the compiler accepts the above, that's a compiler bug. > class Test { public static void main(String[] args) { A a = new B<>(1); } } // compiles sealed interface A permits B {} record B(T t) implements A {} >> 1.2) Error: A generic sealed interface cannot be subclassed >> >> sealed interface A permits B {} >> class B implements A {} >> >> sealed interface A permits B {} >> class B implements A {} >> >> sealed interface A permits B {} >> class B implements A {} >> >> In all three examples we get "cannot inherit from sealed class: A" > > I would expect the latter two sets of examples to work (the last example merely implements the raw type A, rather than the parameterized type A.) This sounds like a bug. > // error: cannot inherit from sealed class: A1 sealed interface A1 permits B1 {} class B1 implements A1 {} // error: cannot inherit from sealed class: A2 sealed interface A2 permits B2 {} class B2 implements A2 {} // error: cannot inherit from sealed class: A3 sealed interface A3 permits B3 {} class B3 implements A3 {} >> 2.4) Question: Are instanceof checks planned in switch expressions? >> >> record A(); >> >> var res = switch(new Object()) { >> case A -> 1 // instanceof A check >> default -> 0 >> }; > > Yes, eventually, but its not clear whether the binding variable will be required: > > case A a -> 1 > > or whether omitting the binding variable will be OK. I am worried about ambiguities in `identifier` as a pattern, since it could be a constant pattern or a type pattern. > I see, that makes sense. Scala uses `case _: A => ?`. I don?t know if it would be a good idea to use `_` in Java when the binding variable isn?t needed (currently it fails on patterns-deconstruction). Having a proper name `case B b -> ...` is straight forward and also the case in lambda expressions for example `(A ignored, B b) -> ...`. class Test { public static void main(String[] args) { var res = switch(new Object()) { case B _ -> 1; ^--- error: : or -> expected ^-- error: '_' used as an identifier default -> -1; }; } } class B {} From vicente.romero at oracle.com Fri Aug 23 14:15:07 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Fri, 23 Aug 2019 10:15:07 -0400 Subject: CFV: New Amber Committer: Harold Seigel In-Reply-To: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> References: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> Message-ID: <6c6b50ff-21c4-c508-15df-a31ccdd6968a@oracle.com> vote: yes Vicente On 8/15/19 12:16 PM, Vicente Romero wrote: > I hereby nominate Harold Seigel (hseigel) to Amber Committer. > > Harold is a member of the Hotspot team who has joined Project Amber to > work on the records and sealed types projects, [3] and [4]. A list of > his most recent OpenJDK contributions are available at [5]. > > Votes are due by August 29, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] https://bugs.openjdk.java.net/browse/JDK-8227043 > [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel) From vicente.romero at oracle.com Fri Aug 23 14:21:46 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Fri, 23 Aug 2019 10:21:46 -0400 Subject: CFV: New Amber Committer: Chris Hegarty Message-ID: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> I hereby nominate Chris Hegarty (chegar) to Amber Committer. Chris, who doesn't need too much presentation and have tones of contributions, has joined Project Amber to work on the records project [3]. A list of his most recent OpenJDK contributions are vailable at [4]. Votes are due by September 6, 2019. Only current Amber Committers [1] are eligible to vote on this nomination. For Lazy Consensus voting instructions, see [2]. Thank you, Vicente Romero [1] http://openjdk.java.net/census [2] http://openjdk.java.net/projects/#committer-vote [3] https://bugs.openjdk.java.net/browse/JDK-8222777 [4] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(chegar) From vicente.romero at oracle.com Fri Aug 23 14:49:57 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Fri, 23 Aug 2019 10:49:57 -0400 Subject: CFV: New Amber Committer: Chris Hegarty In-Reply-To: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> References: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> Message-ID: vote: yes Vicente On 8/23/19 10:21 AM, Vicente Romero wrote: > I hereby nominate Chris Hegarty (chegar) to Amber Committer. > > Chris, who doesn't need too much presentation and have tones of > contributions, has joined Project Amber to work on the records project > [3]. A list of his most recent OpenJDK contributions are vailable at [4]. > > Votes are due by September 6, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(chegar) From brian.goetz at oracle.com Fri Aug 23 15:02:07 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Fri, 23 Aug 2019 11:02:07 -0400 Subject: CFV: New Amber Committer: Chris Hegarty In-Reply-To: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> References: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> Message-ID: Vote: yes On 8/23/2019 10:21 AM, Vicente Romero wrote: > I hereby nominate Chris Hegarty (chegar) to Amber Committer. > > Chris, who doesn't need too much presentation and have tones of > contributions, has joined Project Amber to work on the records project > [3]. A list of his most recent OpenJDK contributions are vailable at [4]. > > Votes are due by September 6, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(chegar) From brian.goetz at oracle.com Fri Aug 23 18:02:44 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 23 Aug 2019 18:02:44 +0000 Subject: hg: amber/amber: More test consolidation Message-ID: <201908231802.x7NI2j03005259@aojmv0008.oracle.com> Changeset: 65595e442c64 Author: briangoetz Date: 2019-08-23 14:02 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/65595e442c64 More test consolidation ! test/langtools/tools/javac/records/RecordCompilationTests.java ! test/langtools/tools/javac/records/fields/RecordFieldsTest.java ! test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.out - test/langtools/tools/javac/records/mandated_members/canonical_constructor/ParameterLessConstructorsTest.java - test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.java - test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.out From maurizio.cimadamore at oracle.com Fri Aug 23 18:05:52 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 23 Aug 2019 18:05:52 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908231805.x7NI5qcn008169@aojmv0008.oracle.com> Changeset: 75af95811f87 Author: mcimadamore Date: 2019-08-23 18:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/75af95811f87 Automatic merge with records-and-sealed ! test/langtools/tools/javac/records/fields/RecordFieldsTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.out - test/langtools/tools/javac/records/mandated_members/canonical_constructor/ParameterLessConstructorsTest.java - test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.java - test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.out From vicente.romero at oracle.com Fri Aug 23 18:16:27 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 23 Aug 2019 18:16:27 +0000 Subject: hg: amber/amber: allow varargs in records Message-ID: <201908231816.x7NIGS6X016776@aojmv0008.oracle.com> Changeset: b722ad2cbf9d Author: vromero Date: 2019-08-23 14:11 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/b722ad2cbf9d allow varargs in records ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/tools/javac/records/BadRecord.out ! test/langtools/tools/javac/records/RecordCompilationTests.java From maurizio.cimadamore at oracle.com Fri Aug 23 18:20:54 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 23 Aug 2019 18:20:54 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908231820.x7NIKt4f020095@aojmv0008.oracle.com> Changeset: bb8e22507782 Author: mcimadamore Date: 2019-08-23 18:20 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/bb8e22507782 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java From james.laskey at oracle.com Sat Aug 24 00:34:56 2019 From: james.laskey at oracle.com (James Laskey) Date: Fri, 23 Aug 2019 20:34:56 -0400 Subject: CFV: New Amber Committer: Chris Hegarty In-Reply-To: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> References: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> Message-ID: <0C7F7AF5-7416-459F-9C35-C31589512643@oracle.com> Vote: yes Sent from my iPhone > On Aug 23, 2019, at 10:21 AM, Vicente Romero wrote: > > I hereby nominate Chris Hegarty (chegar) to Amber Committer. > > Chris, who doesn't need too much presentation and have tones of contributions, has joined Project Amber to work on the records project [3]. A list of his most recent OpenJDK contributions are vailable at [4]. > > Votes are due by September 6, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(chegar) From jonathan.gibbons at oracle.com Sat Aug 24 00:43:56 2019 From: jonathan.gibbons at oracle.com (Jonathan Gibbons) Date: Fri, 23 Aug 2019 17:43:56 -0700 Subject: CFV: New Amber Committer: Chris Hegarty In-Reply-To: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> References: <8f5aa354-7090-aa7d-1b5f-454dafd7788a@oracle.com> Message-ID: <814e5347-c621-53e1-61dd-553bbfdeabe9@oracle.com> Vote: yes -- Jon On 8/23/19 7:21 AM, Vicente Romero wrote: > I hereby nominate Chris Hegarty (chegar) to Amber Committer. > > Chris, who doesn't need too much presentation and have tones of > contributions, has joined Project Amber to work on the records project > [3]. A list of his most recent OpenJDK contributions are vailable at [4]. > > Votes are due by September 6, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(chegar) From kasperni at gmail.com Sat Aug 24 05:57:18 2019 From: kasperni at gmail.com (Kasper Nielsen) Date: Sat, 24 Aug 2019 06:57:18 +0100 Subject: Records and null-values Message-ID: Hi, I was looking through a codebase trying to see where I could apply records. And I realised that there was not a single place where I did not check for null via requireNotNull() in the constructor. And looking at the use cases for records I'm sure most that is the case for most people. I know @Nullable annotations don't get much love, and it might have some deeper implications in the language. But it would save a lot of boilerplate if you where able to do something like: record R(Object key, @Nullable Object value) {} being equivalent to the constructor declaration record R(Object key, @Nullable Object value) { R { this.key = requireNonNull(key, "key is nul"); this.value = value; } } It would probably also prevent a couple of NPEs somewhere. Best Kasper From brian.goetz at oracle.com Sat Aug 24 12:57:16 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 24 Aug 2019 08:57:16 -0400 Subject: Records and null-values In-Reply-To: References: Message-ID: <111C9B6C-2BD0-4D81-9EFF-C7D119ACC68A@oracle.com> The recommended idiom here is to check for this in the constructor. I know that sounds contrary to the goal of records ? the point is not to have an explicit constructor ? but records have a streamlined constructor form that makes this only marginally verbose than what you suggest: record R(String s) { public R { requireNonNull(s); } } What is going on here is that you are allowed to omit the signature of the canonical constructor (it?s a record, we know what the canonical constructor should look like), and also, for any fields that are not definitely initialized by the constructor, they will be automatically initialized from the corresponding parameters. (This can also be used to normalize parameters, as well as validate.) So it?s a little more verbose, but it?s not terrible.(We?d like to make these auto-initializing constructors available to all classes someday, not just records.) Addressing the more general concern ? I sympathize with the problem, but I can?t agree with the proposed solution. First of all, remember that annotations are not, full stop, allowed to influence language semantics; they are intrinsically extralinguistic. At best, they can be used to perform additional safety checks (like @Override), but this is as far as we can push the line. (So conditioning runtime checks on compile-time annotations is right out.) If the language wants to be aware of nullity, it needs to be part of the language, such as a `non-null` keyword or non-nullable types like `String!`. This is a possibility, but it?s a huge effort, both for the language, and for the world of Java libraries (especially the JDK.) Which brings us to the real problem ? this is not a simple hack. Sure, we could hack something in for records, but that would be super-unsatisfying; surely, a facility that allows you to reject null arguments is useful and desirable beyond records. (Not to mention that it would make it harder to migrate smoothly between classes and records.) We would ? correctly, this time ? be greeted with a ?glass 90% empty? reaction. It was even suggested, during the development of the feature, that reference components of records _always_ be non-nullable. That would have been a terrible idea (though I understand the sort of pain that causes people to suggest such things.) There are numerous static analysis frameworks that will use annotations to detect errors, and if you can use these, that?s great. There?s a new effort brewing, being proposed by Google and Jetbrains, to coalesce around a set of nullity annotations and type checking rules, which was discussed at JVMLS this year. But, this is not a small problem, and not one with a guaranteed solution; it safe to say this is an order of magnitude bigger than records. So by all means, I support a more general solution, but hacking something in for records would be satisfying only for a few minutes, and thereafter would be disappointing. So, it?s a real problem, but not one that admits to simple solutions at the periphery. > On Aug 24, 2019, at 1:57 AM, Kasper Nielsen wrote: > > Hi, > > I was looking through a codebase trying to see where I could apply records. > And I realised that there was not a single place where I did not check for > null via requireNotNull() in the constructor. And looking at the use cases > for records I'm sure most that is the case for most people. > > I know @Nullable annotations don't get much love, and it might have some > deeper implications in the language. But it would save a lot of boilerplate > if you where able to do something like: > > record R(Object key, @Nullable Object value) {} > > being equivalent to the constructor declaration > > record R(Object key, @Nullable Object value) { > R { > this.key = requireNonNull(key, "key is nul"); > this.value = value; > } > } > > It would probably also prevent a couple of NPEs somewhere. > > Best > Kasper From kasperni at gmail.com Sun Aug 25 19:05:42 2019 From: kasperni at gmail.com (Kasper Nielsen) Date: Sun, 25 Aug 2019 20:05:42 +0100 Subject: Records and null-values In-Reply-To: <111C9B6C-2BD0-4D81-9EFF-C7D119ACC68A@oracle.com> References: <111C9B6C-2BD0-4D81-9EFF-C7D119ACC68A@oracle.com> Message-ID: Hi Brian, Thanks, I can't really argue with what you wrote, it makes total sense. I really appreciate you taking the time to write these often long emails on the various OpenJDK lists. I do believe, it makes it much easier for people to accept feature "shortcomings", when they understand the background and what kind of tough decisions had to made in order to deliver the feature. /Kasper On Sat, 24 Aug 2019 at 13:57, Brian Goetz wrote: > > The recommended idiom here is to check for this in the constructor. I know that sounds contrary to the goal of records ? the point is not to have an explicit constructor ? but records have a streamlined constructor form that makes this only marginally verbose than what you suggest: > > record R(String s) { > public R { requireNonNull(s); } > } > > What is going on here is that you are allowed to omit the signature of the canonical constructor (it?s a record, we know what the canonical constructor should look like), and also, for any fields that are not definitely initialized by the constructor, they will be automatically initialized from the corresponding parameters. (This can also be used to normalize parameters, as well as validate.) So it?s a little more verbose, but it?s not terrible.(We?d like to make these auto-initializing constructors available to all classes someday, not just records.) > > Addressing the more general concern ? I sympathize with the problem, but I can?t agree with the proposed solution. First of all, remember that annotations are not, full stop, allowed to influence language semantics; they are intrinsically extralinguistic. At best, they can be used to perform additional safety checks (like @Override), but this is as far as we can push the line. (So conditioning runtime checks on compile-time annotations is right out.) If the language wants to be aware of nullity, it needs to be part of the language, such as a `non-null` keyword or non-nullable types like `String!`. This is a possibility, but it?s a huge effort, both for the language, and for the world of Java libraries (especially the JDK.) > > Which brings us to the real problem ? this is not a simple hack. Sure, we could hack something in for records, but that would be super-unsatisfying; surely, a facility that allows you to reject null arguments is useful and desirable beyond records. (Not to mention that it would make it harder to migrate smoothly between classes and records.) We would ? correctly, this time ? be greeted with a ?glass 90% empty? reaction. > > It was even suggested, during the development of the feature, that reference components of records _always_ be non-nullable. That would have been a terrible idea (though I understand the sort of pain that causes people to suggest such things.) > > There are numerous static analysis frameworks that will use annotations to detect errors, and if you can use these, that?s great. There?s a new effort brewing, being proposed by Google and Jetbrains, to coalesce around a set of nullity annotations and type checking rules, which was discussed at JVMLS this year. But, this is not a small problem, and not one with a guaranteed solution; it safe to say this is an order of magnitude bigger than records. So by all means, I support a more general solution, but hacking something in for records would be satisfying only for a few minutes, and thereafter would be disappointing. > > So, it?s a real problem, but not one that admits to simple solutions at the periphery. > > > On Aug 24, 2019, at 1:57 AM, Kasper Nielsen wrote: > > > > Hi, > > > > I was looking through a codebase trying to see where I could apply records. > > And I realised that there was not a single place where I did not check for > > null via requireNotNull() in the constructor. And looking at the use cases > > for records I'm sure most that is the case for most people. > > > > I know @Nullable annotations don't get much love, and it might have some > > deeper implications in the language. But it would save a lot of boilerplate > > if you where able to do something like: > > > > record R(Object key, @Nullable Object value) {} > > > > being equivalent to the constructor declaration > > > > record R(Object key, @Nullable Object value) { > > R { > > this.key = requireNonNull(key, "key is nul"); > > this.value = value; > > } > > } > > > > It would probably also prevent a couple of NPEs somewhere. > > > > Best > > Kasper > From brian.goetz at oracle.com Sun Aug 25 21:51:12 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Sun, 25 Aug 2019 21:51:12 +0000 Subject: hg: amber/amber: Consolidate several tests into RecordMemberTests Message-ID: <201908252151.x7PLpD8e010382@aojmv0008.oracle.com> Changeset: d4d636bd1f67 Author: briangoetz Date: 2019-08-25 17:50 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/d4d636bd1f67 Consolidate several tests into RecordMemberTests ! test/langtools/tools/javac/records/OriginTest.java + test/langtools/tools/javac/records/RecordMemberTests.java - test/langtools/tools/javac/records/UserDefinedMethodsTest.java - test/langtools/tools/javac/records/fields/CheckDatumMembersAccess.java - test/langtools/tools/javac/records/fields/RecordFieldsTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MethodParametersForCanonicalConstructorTest.java - test/langtools/tools/javac/records/record_superclass/RecordAsSuperclassTest.java ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java From maurizio.cimadamore at oracle.com Sun Aug 25 21:55:57 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Sun, 25 Aug 2019 21:55:57 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908252155.x7PLtwtI015534@aojmv0008.oracle.com> Changeset: 14ebd6bdc001 Author: mcimadamore Date: 2019-08-25 21:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/14ebd6bdc001 Automatic merge with records-and-sealed ! test/langtools/tools/javac/records/OriginTest.java - test/langtools/tools/javac/records/UserDefinedMethodsTest.java - test/langtools/tools/javac/records/fields/CheckDatumMembersAccess.java - test/langtools/tools/javac/records/fields/RecordFieldsTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java - test/langtools/tools/javac/records/mandated_members/canonical_constructor/MethodParametersForCanonicalConstructorTest.java - test/langtools/tools/javac/records/record_superclass/RecordAsSuperclassTest.java ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java From vicente.romero at oracle.com Mon Aug 26 19:52:49 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 26 Aug 2019 19:52:49 +0000 Subject: hg: amber/amber: 3 new changesets Message-ID: <201908261952.x7QJqn2C026220@aojmv0008.oracle.com> Changeset: c8002c3943ee Author: vromero Date: 2019-08-26 13:11 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/c8002c3943ee updating list of forbidden record component names ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/tools/javac/records/RecordCompilationTests.java Changeset: 1956d9d6d0bc Author: hseigel Date: 2019-08-26 15:51 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/1956d9d6d0bc new implementation of the record attribute in the runtime, first iteration ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/memory/allocation.hpp ! src/hotspot/share/memory/heapInspection.hpp ! src/hotspot/share/memory/metaspaceShared.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp + src/hotspot/share/oops/recordComponent.cpp + src/hotspot/share/oops/recordComponent.hpp - src/hotspot/share/oops/recordParamInfo.hpp - src/hotspot/share/oops/recordParamStreams.hpp ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp ! src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp ! src/hotspot/share/prims/jvmtiRedefineClasses.cpp + test/hotspot/jtreg/runtime/records/recordAccessorsTest.java + test/hotspot/jtreg/runtime/records/recordAttribute.jcod + test/hotspot/jtreg/runtime/records/recordAttributeTest.java Changeset: 72963da61efb Author: vromero Date: 2019-08-26 15:52 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/72963da61efb activating ReflectionTest again ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java From maurizio.cimadamore at oracle.com Mon Aug 26 19:55:56 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 26 Aug 2019 19:55:56 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908261955.x7QJtvNC029704@aojmv0008.oracle.com> Changeset: 405722e6fff2 Author: mcimadamore Date: 2019-08-26 19:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/405722e6fff2 Automatic merge with records-and-sealed - src/hotspot/share/oops/recordParamInfo.hpp - src/hotspot/share/oops/recordParamStreams.hpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java From vicente.romero at oracle.com Mon Aug 26 20:38:36 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 26 Aug 2019 20:38:36 +0000 Subject: hg: amber/amber: additional var args tests Message-ID: <201908262038.x7QKcaE3024712@aojmv0008.oracle.com> Changeset: 620128930137 Author: vromero Date: 2019-08-26 16:38 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/620128930137 additional var args tests ! test/langtools/tools/javac/records/RecordMemberTests.java From maurizio.cimadamore at oracle.com Mon Aug 26 20:40:57 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 26 Aug 2019 20:40:57 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908262040.x7QKewEE026356@aojmv0008.oracle.com> Changeset: 40a13f652205 Author: mcimadamore Date: 2019-08-26 20:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/40a13f652205 Automatic merge with records-and-sealed ! test/langtools/tools/javac/records/RecordMemberTests.java From vicente.romero at oracle.com Tue Aug 27 20:22:04 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 27 Aug 2019 20:22:04 +0000 Subject: hg: amber/amber: relaxing an assertion on record components length at jvm::JVM_GetRecordComponentNames Message-ID: <201908272022.x7RKM4eX024258@aojmv0008.oracle.com> Changeset: 1790da960d59 Author: vromero Date: 2019-08-27 16:20 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/1790da960d59 relaxing an assertion on record components length at jvm::JVM_GetRecordComponentNames ! src/hotspot/share/prims/jvm.cpp From brian.goetz at oracle.com Tue Aug 27 20:24:44 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Tue, 27 Aug 2019 20:24:44 +0000 Subject: hg: amber/amber: More record test consolidation Message-ID: <201908272024.x7RKOjPE027238@aojmv0008.oracle.com> Changeset: 7cf9d1e04cb1 Author: briangoetz Date: 2019-08-27 16:24 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/7cf9d1e04cb1 More record test consolidation ! test/langtools/tools/javac/records/RecordCompilationTests.java ! test/langtools/tools/javac/records/RecordMemberTests.java + test/langtools/tools/javac/records/VarargsRecordsTest.java - test/langtools/tools/javac/records/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java From maurizio.cimadamore at oracle.com Tue Aug 27 20:25:56 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 27 Aug 2019 20:25:56 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908272025.x7RKPuHi028627@aojmv0008.oracle.com> Changeset: 40988e0ec912 Author: mcimadamore Date: 2019-08-27 20:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/40988e0ec912 Automatic merge with records-and-sealed From maurizio.cimadamore at oracle.com Tue Aug 27 20:31:05 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 27 Aug 2019 20:31:05 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908272031.x7RKV6cs001092@aojmv0008.oracle.com> Changeset: 033fe61e28ad Author: mcimadamore Date: 2019-08-27 20:30 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/033fe61e28ad Automatic merge with records-and-sealed ! test/langtools/tools/javac/records/RecordMemberTests.java - test/langtools/tools/javac/records/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java From vicente.romero at oracle.com Tue Aug 27 21:19:09 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 27 Aug 2019 21:19:09 +0000 Subject: hg: amber/amber: allow static members in inner classes Message-ID: <201908272119.x7RLJ9wR029173@aojmv0008.oracle.com> Changeset: 93af68a8ec11 Author: vromero Date: 2019-08-27 17:18 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/93af68a8ec11 allow static members in inner classes ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! test/langtools/tools/javac/records/RecordMemberTests.java From maurizio.cimadamore at oracle.com Tue Aug 27 21:25:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 27 Aug 2019 21:25:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908272125.x7RLPxw8006529@aojmv0008.oracle.com> Changeset: c84f723610a4 Author: mcimadamore Date: 2019-08-27 21:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c84f723610a4 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From vicente.romero at oracle.com Tue Aug 27 22:11:18 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 27 Aug 2019 22:11:18 +0000 Subject: hg: amber/amber: testing records in inner classes Message-ID: <201908272211.x7RMBJ0t003530@aojmv0008.oracle.com> Changeset: c8e9983b2732 Author: vromero Date: 2019-08-27 18:10 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/c8e9983b2732 testing records in inner classes ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! test/langtools/tools/javac/records/RecordMemberTests.java + test/langtools/tools/javac/records/RecordsInInnerClassesTest.java From maurizio.cimadamore at oracle.com Tue Aug 27 22:15:59 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 27 Aug 2019 22:15:59 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908272215.x7RMFx7h006188@aojmv0008.oracle.com> Changeset: e05b8504a9a2 Author: mcimadamore Date: 2019-08-27 22:15 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/e05b8504a9a2 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From mark.reinhold at oracle.com Tue Aug 27 23:14:52 2019 From: mark.reinhold at oracle.com (mark.reinhold at oracle.com) Date: Tue, 27 Aug 2019 16:14:52 -0700 (PDT) Subject: New candidate JEP: 360: Sealed Types (Preview) Message-ID: <20190827231452.2FFDB2BB903@eggemoggin.niobe.net> https://openjdk.java.net/jeps/360 - Mark From mark.reinhold at oracle.com Tue Aug 27 23:14:51 2019 From: mark.reinhold at oracle.com (mark.reinhold at oracle.com) Date: Tue, 27 Aug 2019 16:14:51 -0700 (PDT) Subject: New candidate JEP: 359: Records (Preview) Message-ID: <20190827231451.071A42BB901@eggemoggin.niobe.net> https://openjdk.java.net/jeps/359 - Mark From vicente.romero at oracle.com Wed Aug 28 01:10:51 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 28 Aug 2019 01:10:51 +0000 Subject: hg: amber/amber: allow explicitly static classes inside inner classes Message-ID: <201908280110.x7S1AqJH015966@aojmv0008.oracle.com> Changeset: 3df7cc39a142 Author: vromero Date: 2019-08-27 21:09 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/3df7cc39a142 allow explicitly static classes inside inner classes ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! test/langtools/tools/javac/records/StaticMembersInInnerClassesTest.java < test/langtools/tools/javac/records/RecordsInInnerClassesTest.java From maurizio.cimadamore at oracle.com Wed Aug 28 01:37:11 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 28 Aug 2019 01:37:11 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908280137.x7S1bDDf000281@aojmv0008.oracle.com> Changeset: dfe94c42148b Author: mcimadamore Date: 2019-08-28 01:36 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/dfe94c42148b Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java - test/langtools/tools/javac/records/RecordsInInnerClassesTest.java From lbkulinski at gmail.com Wed Aug 28 03:57:51 2019 From: lbkulinski at gmail.com (Logan Kulinski) Date: Tue, 27 Aug 2019 23:57:51 -0400 Subject: VM crash with record Message-ID: Hello Today I decided to build the current Amber repository. During configuration, I selected a debug level of slowdebug. After the build was finished, I compiled following code without any issue: > public record PointXY(int x, int y) { > public static void main(String[] args) { > PointXY origin = new PointXY(0, 0); > > System.out.println(origin); > } //main > } When I ran it, though, I was met with the following: > # To suppress the following error report, specify this argument > # after -XX: or in .hotspotrc: SuppressErrorAt=/classFileParser.cpp:3263 > # > # A fatal error has been detected by the Java Runtime Environment: > # > # Internal Error (/home/lbk/amber/src/hotspot/share/classfile/classFileParser.cpp:3263), pid=26001, tid=26002 > # assert(__null == _record_params) failed: invariant > # > # JRE version: OpenJDK Runtime Environment (14.0) (slowdebug build 14-internal+0-adhoc.lbk.amber) > # Java VM: OpenJDK 64-Bit Server VM (slowdebug 14-internal+0-adhoc.lbk.amber, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) > # Problematic frame: > # V [libjvm.so+0x7addf0] ClassFileParser::parse_classfile_record_attribute(ClassFileStream const*, unsigned char const*, ConstantPool*, int*, Thread*)+0x50 > # > # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P" (or dumping to /home/lbk/core.26001) > # > # An error report file with more information is saved as: > # /home/lbk/hs_err_pid26001.log > # > # If you would like to submit a bug report, please visit: > # http://bugreport.java.com/bugreport/crash.jsp > # > Current thread is 26002 > Dumping core ... > Aborted (core dumped) Is this a known issue? Was I doing something not allowed? It happens anytime I try to run. I am currently using Ubuntu 18.04.3 LTS. Please let me know if you need anything else, as I would be happy to help! Logan From harold.seigel at oracle.com Wed Aug 28 13:59:52 2019 From: harold.seigel at oracle.com (Harold Seigel) Date: Wed, 28 Aug 2019 09:59:52 -0400 Subject: VM crash with record In-Reply-To: References: Message-ID: <76027a98-4c70-9e51-e7a2-dafe5950d9a9@oracle.com> Hi Logan, There were recent changes to the Amber repository made on 26-Aug and 27-Aug that should fix this.? Can you try updating your repository? Thanks, Harold On 8/27/2019 11:57 PM, Logan Kulinski wrote: > Hello > > Today I decided to build the current Amber repository. During configuration, I selected a debug level of slowdebug. After the build was finished, I compiled following code without any issue: > >> public record PointXY(int x, int y) { >> public static void main(String[] args) { >> PointXY origin = new PointXY(0, 0); >> >> System.out.println(origin); >> } //main >> } > When I ran it, though, I was met with the following: > >> # To suppress the following error report, specify this argument >> # after -XX: or in .hotspotrc: SuppressErrorAt=/classFileParser.cpp:3263 >> # >> # A fatal error has been detected by the Java Runtime Environment: >> # >> # Internal Error (/home/lbk/amber/src/hotspot/share/classfile/classFileParser.cpp:3263), pid=26001, tid=26002 >> # assert(__null == _record_params) failed: invariant >> # >> # JRE version: OpenJDK Runtime Environment (14.0) (slowdebug build 14-internal+0-adhoc.lbk.amber) >> # Java VM: OpenJDK 64-Bit Server VM (slowdebug 14-internal+0-adhoc.lbk.amber, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) >> # Problematic frame: >> # V [libjvm.so+0x7addf0] ClassFileParser::parse_classfile_record_attribute(ClassFileStream const*, unsigned char const*, ConstantPool*, int*, Thread*)+0x50 >> # >> # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %d %P" (or dumping to /home/lbk/core.26001) >> # >> # An error report file with more information is saved as: >> # /home/lbk/hs_err_pid26001.log >> # >> # If you would like to submit a bug report, please visit: >> # http://bugreport.java.com/bugreport/crash.jsp >> # >> Current thread is 26002 >> Dumping core ... >> Aborted (core dumped) > > Is this a known issue? Was I doing something not allowed? It happens anytime I try to run. I am currently using Ubuntu 18.04.3 LTS. Please let me know if you need anything else, as I would be happy to help! > > Logan From vicente.romero at oracle.com Thu Aug 29 15:23:04 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 29 Aug 2019 15:23:04 +0000 Subject: hg: amber/amber: adding a preview check for records and sealed types Message-ID: <201908291523.x7TFN4Y4026477@aojmv0008.oracle.com> Changeset: 0bc6e63fd9b5 Author: vromero Date: 2019-08-29 11:22 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/0bc6e63fd9b5 adding a preview check for records and sealed types ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/tools/javac/records/BadRecord.java ! test/langtools/tools/javac/records/OriginTest.java ! test/langtools/tools/javac/records/RecordMemberTests.java ! test/langtools/tools/javac/records/StaticMembersInInnerClassesTest.java ! test/langtools/tools/javac/records/VarargsRecordsTest.java ! test/langtools/tools/javac/records/annotations/AnnoProcessorOnRecordsTest.java ! test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java ! test/langtools/tools/javac/records/writeread/WriteReadTest.java ! test/langtools/tools/javac/sealed/AnonymousAndLambdaCantExtendSealed.java ! test/langtools/tools/javac/sealed/CheckingAttributeAtRuntimeTest.java ! test/langtools/tools/javac/sealed/MethodsOfSealedTypesAreNotFinalByDefaultTest.java ! test/langtools/tools/javac/sealed/NotSealedTest.java ! test/langtools/tools/javac/sealed/PermitsInNoSealedClass.java ! test/langtools/tools/javac/sealed/SealedDiffConfigurationsTest.java ! test/langtools/tools/javac/sealed/SealedTest01.java ! test/langtools/tools/javac/sealed/sealedExtensionNeg/SealedExtensionNegTest.java ! test/langtools/tools/javac/sealed/separate/TestSeparate01.java ! test/langtools/tools/javac/sealed/separate/TestSeparate_Neg.java - test/langtools/tools/javac/sealed/separate/TestSeparate_Neg.out + test/langtools/tools/javac/sealed/separate/TestSeparate_Neg1.out + test/langtools/tools/javac/sealed/separate/TestSeparate_Neg2.out From maurizio.cimadamore at oracle.com Thu Aug 29 15:25:57 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 29 Aug 2019 15:25:57 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201908291525.x7TFPwpF029978@aojmv0008.oracle.com> Changeset: 5bdf17b7156a Author: mcimadamore Date: 2019-08-29 15:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/5bdf17b7156a Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/sealed/separate/TestSeparate_Neg.out From vicente.romero at oracle.com Thu Aug 29 15:58:01 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Thu, 29 Aug 2019 11:58:01 -0400 Subject: CFV: New Amber Committer: Harold Seigel In-Reply-To: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> References: <7062dc8d-f789-29cc-8a0a-433f79368452@oracle.com> Message-ID: <0f3d4774-1a34-bb9c-9bff-712f99c6a271@oracle.com> Voting for Harold Siegel [1] is now closed. Yes: 4 Veto: 0 Abstain: 0 According to the Bylaws definition of Lazy Consensus, this is sufficient to approve the nomination. Thanks, Vicente [1] http://mail.openjdk.java.net/pipermail/amber-dev/2019-August/004628.html On 8/15/19 12:16 PM, Vicente Romero wrote: > I hereby nominate Harold Seigel (hseigel) to Amber Committer. > > Harold is a member of the Hotspot team who has joined Project Amber to > work on the records and sealed types projects, [3] and [4]. A list of > his most recent OpenJDK contributions are available at [5]. > > Votes are due by August 29, 2019. > > Only current Amber Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Vicente Romero > > [1] http://openjdk.java.net/census > [2] http://openjdk.java.net/projects/#committer-vote > [3] https://bugs.openjdk.java.net/browse/JDK-8222777 > [4] https://bugs.openjdk.java.net/browse/JDK-8227043 > [5] http://hg.openjdk.java.net/jdk/jdk/search/?rev=author(hseigel)