On Wed, 24 Jul 2024 15:08:50 GMT, Chen Liang <li...@openjdk.org> wrote:
>> If you do not use TRUSTED Lookup, errors will occur when processing records. >> >> You can see this build error >> https://github.com/wenshao/jdk/actions/runs/10049344961/job/27775952878 >> >> TEST: java/lang/reflect/records/RecordReflectionTest.java >> >> >> Caused by: java.lang.IllegalAccessException: no such method: >> java.lang.StringConcatHelper$$StringConcat/0xad1b77c0.concat(R1,R2,R3)String/invokeStatic >> at >> java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:906) >> at >> java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:989) >> at >> java.base/java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:3750) >> at >> java.base/java.lang.invoke.MethodHandles$Lookup.findStatic(MethodHandles.java:2648) >> at >> java.base/java.lang.invoke.StringConcatFactory$SimpleStringBuilderStrategy.generate(StringConcatFactory.java:727) >> ... 41 more >> Caused by: java.lang.LinkageError: bad method type alias: (R1,R2,R3)String >> not visible from class java.lang.StringConcatHelper$$StringConcat/0xad1b77c0 >> at >> java.base/java.lang.invoke.MemberName.ensureTypeVisible(MemberName.java:812) >> at >> java.base/java.lang.invoke.MemberName$Factory.resolve(MemberName.java:961) >> at >> java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:986) >> ... 44 more >> >> >> >> record R1() {} >> >> record R2(int i, int j) {} >> >> record R3(List<String> ls) {} >> >> // error >> record R4(R1 r1, R2 r2, R3 r3) {} >> >> >> This PR also fixes the issue with TRUSTED not working in MemberName.java >> after using TRUSTED Lookup. > > The solution is to call `.erase()` on the input method handle, and call > `viewAsType` on the result method handle. Sorry, I don't understand what you mean. The following code can't solve the above build error public static CallSite makeConcatWithConstants() { // line 383 return new ConstantCallSite( SimpleStringBuilderStrategy.generate(lookup, concatType, constantStrings) .viewAsType(concatType, true)); ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20273#discussion_r1690626588