Lambda.java revision 2628:8df25ec8c930
1220497Smarkm/* 2220497Smarkm * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 3220497Smarkm * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4220497Smarkm * 5220497Smarkm * This code is free software; you can redistribute it and/or modify it 6220497Smarkm * under the terms of the GNU General Public License version 2 only, as 7220497Smarkm * published by the Free Software Foundation. 8220497Smarkm * 9220497Smarkm * This code is distributed in the hope that it will be useful, but WITHOUT 10220497Smarkm * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11220497Smarkm * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12220497Smarkm * version 2 for more details (a copy is included in the LICENSE file that 13220497Smarkm * accompanied this code). 14220497Smarkm * 15220497Smarkm * You should have received a copy of the GNU General Public License version 16220497Smarkm * 2 along with this work; if not, write to the Free Software Foundation, 17220497Smarkm * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18220497Smarkm * 19220497Smarkm * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20220497Smarkm * or visit www.oracle.com if you need additional information or have any 21220497Smarkm * questions. 22220497Smarkm */ 23220497Smarkm 24220497Smarkm/* 25220497Smarkm * @test 26220497Smarkm * @bug 8008077 8029721 8042451 8043974 27220497Smarkm * @summary Test population of reference info for lambda expressions 28220497Smarkm * javac crash for annotated parameter type of lambda in a field 29220497Smarkm * @ignore 8057687 emit correct byte code an attributes for type annotations 30220497Smarkm * @compile -g Driver.java ReferenceInfoUtil.java Lambda.java 31220497Smarkm * @run main Driver Lambda 32220497Smarkm * @author Werner Dietl 33220497Smarkm */ 34220497Smarkm 35220497Smarkmimport static com.sun.tools.classfile.TypeAnnotation.TargetType.*; 36220497Smarkm 37220497Smarkmpublic class Lambda { 38220497Smarkm 39220497Smarkm @TADescription(annotation = "TA", type = METHOD_REFERENCE, 40220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 41220497Smarkm @TADescription(annotation = "TB", type = METHOD_REFERENCE, 42220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 43220497Smarkm public String returnMethodRef1() { 44220497Smarkm return 45220497Smarkm "class Lambda {" + 46220497Smarkm " public String getName() { return \"Lambda!\"; }" + 47220497Smarkm "}" + 48220497Smarkm 49220497Smarkm "class %TEST_CLASS_NAME% {" + 50220497Smarkm " java.util.function.Function<Lambda, String> lambda() {" + 51220497Smarkm " return @TA @TB Lambda::getName;" + 52220497Smarkm " }" + 53220497Smarkm "}"; 54220497Smarkm } 55220497Smarkm 56220497Smarkm @TADescription(annotation = "TA", type = METHOD_REFERENCE, 57220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 58220497Smarkm @TADescription(annotation = "TB", type = METHOD_REFERENCE, 59220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 60220497Smarkm genericLocation = { 3, 0 }) 61220497Smarkm @TADescription(annotation = "TC", type = METHOD_REFERENCE, 62220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 63221471Sobrien genericLocation = { 3, 0 }) 64220497Smarkm @TADescription(annotation = "TD", type = METHOD_REFERENCE, 65220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 66220497Smarkm genericLocation = { 3, 1 }) 67220497Smarkm @TADescription(annotation = "TE", type = METHOD_REFERENCE, 68220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 69220497Smarkm genericLocation = { 3, 1}) 70220497Smarkm public String returnMethodRef2() { 71220497Smarkm return 72220497Smarkm "class Lambda<S, T> {" + 73220497Smarkm " public String getName() { return \"Lambda!\"; }" + 74220497Smarkm "}" + 75220497Smarkm 76220497Smarkm "class %TEST_CLASS_NAME% {" + 77220497Smarkm " java.util.function.Function<Lambda<Integer, Float>, String> lambda() {" + 78220497Smarkm " return @TA Lambda<@TB @TC Integer, @TD @TE Float>::getName;" + 79220497Smarkm " }" + 80220497Smarkm "}"; 81220497Smarkm } 82220497Smarkm 83220497Smarkm @TADescription(annotation = "CTA", type = METHOD_REFERENCE, 84220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 85220497Smarkm @TADescription(annotation = "CTB", type = METHOD_REFERENCE, 86220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 87220497Smarkm genericLocation = { 3, 0 }) 88220497Smarkm @TADescription(annotation = "CTC", type = METHOD_REFERENCE, 89220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 90220497Smarkm genericLocation = { 3, 1 }) 91220497Smarkm public String returnMethodRef3() { 92220497Smarkm return 93220497Smarkm "class Lambda<S, T> {" + 94220497Smarkm " public String getName() { return \"Lambda!\"; }" + 95220497Smarkm "}" + 96220497Smarkm 97220497Smarkm "@Target(ElementType.TYPE_USE)" + 98220497Smarkm "@interface CTA {" + 99220497Smarkm " String value();" + 100220497Smarkm "}" + 101220497Smarkm 102220497Smarkm "@Target(ElementType.TYPE_USE)" + 103220497Smarkm "@interface CTB {" + 104220497Smarkm " int age();" + 105220497Smarkm "}" + 106220497Smarkm 107220497Smarkm "@Target(ElementType.TYPE_USE)" + 108220497Smarkm "@interface CTC {" + 109220497Smarkm " String name();" + 110220497Smarkm "}" + 111220497Smarkm 112220497Smarkm "class %TEST_CLASS_NAME% {" + 113220497Smarkm " java.util.function.Function<Lambda<Integer, Float>, String> lambda() {" + 114220497Smarkm " return @CTA(\"x\") Lambda<@CTB(age = 5) Integer, @CTC(name = \"y\") Float>::getName;" + 115220497Smarkm " }" + 116220497Smarkm "}"; 117220497Smarkm } 118220497Smarkm 119220497Smarkm 120220497Smarkm @TADescription(annotation = "TA", type = CONSTRUCTOR_REFERENCE, 121220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 122220497Smarkm @TADescription(annotation = "TB", type = CONSTRUCTOR_REFERENCE, 123220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 124220497Smarkm public String returnConstructorRef1() { 125220497Smarkm return 126220497Smarkm "class Lambda {" + 127220497Smarkm " Lambda() { }" + 128220497Smarkm "}" + 129220497Smarkm 130220497Smarkm "class %TEST_CLASS_NAME% {" + 131220497Smarkm " Runnable lambda() {" + 132220497Smarkm " return @TA @TB Lambda::new;" + 133220497Smarkm " }" + 134220497Smarkm "}"; 135220497Smarkm } 136220497Smarkm 137220497Smarkm @TADescription(annotation = "TA", type = CONSTRUCTOR_REFERENCE, 138220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 139220497Smarkm @TADescription(annotation = "TB", type = CONSTRUCTOR_REFERENCE, 140220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 141220497Smarkm genericLocation = { 3, 0 }) 142220497Smarkm @TADescription(annotation = "TC", type = CONSTRUCTOR_REFERENCE, 143220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 144220497Smarkm genericLocation = { 3, 0 }) 145220497Smarkm @TADescription(annotation = "TD", type = CONSTRUCTOR_REFERENCE, 146220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 147220497Smarkm genericLocation = { 3, 1 }) 148220497Smarkm @TADescription(annotation = "TE", type = CONSTRUCTOR_REFERENCE, 149220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 150220497Smarkm genericLocation = { 3, 1 }) 151220497Smarkm public String returnConstructorRef2() { 152220497Smarkm return 153220497Smarkm "class Lambda<S, T> {" + 154220497Smarkm " Lambda() { }" + 155220497Smarkm "}" + 156220497Smarkm 157220497Smarkm "class %TEST_CLASS_NAME% {" + 158220497Smarkm " Runnable lambda() {" + 159220497Smarkm " return @TA Lambda<@TB @TC Integer, @TD @TE Float>::new;" + 160220497Smarkm " }" + 161220497Smarkm "}"; 162220497Smarkm } 163220497Smarkm 164220497Smarkm @TADescription(annotation = "CTA", type = CONSTRUCTOR_REFERENCE, 165220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 166220497Smarkm @TADescription(annotation = "CTB", type = CONSTRUCTOR_REFERENCE, 167220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 168220497Smarkm genericLocation = { 3, 0 }) 169220497Smarkm @TADescription(annotation = "CTC", type = CONSTRUCTOR_REFERENCE, 170220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 171220497Smarkm genericLocation = { 3, 1 }) 172220497Smarkm public String returnConstructorRef3() { 173220497Smarkm return 174220497Smarkm "class Lambda<S, T> {" + 175220497Smarkm " Lambda() { }" + 176220497Smarkm "}" + 177220497Smarkm 178220497Smarkm "@Target(ElementType.TYPE_USE)" + 179220497Smarkm "@interface CTA {" + 180220497Smarkm " String value();" + 181220497Smarkm "}" + 182220497Smarkm 183220497Smarkm "@Target(ElementType.TYPE_USE)" + 184220497Smarkm "@interface CTB {" + 185220497Smarkm " int age();" + 186220497Smarkm "}" + 187220497Smarkm 188220497Smarkm "@Target(ElementType.TYPE_USE)" + 189220497Smarkm "@interface CTC {" + 190220497Smarkm " String name();" + 191220497Smarkm "}" + 192220497Smarkm 193220497Smarkm "class %TEST_CLASS_NAME% {" + 194220497Smarkm " Runnable lambda() {" + 195220497Smarkm " return @CTA(\"x\") Lambda<@CTB(age = 5) Integer, @CTC(name = \"y\") Float>::new;" + 196220497Smarkm " }" + 197220497Smarkm "}"; 198220497Smarkm } 199220497Smarkm 200220497Smarkm 201220497Smarkm @TADescription(annotation = "TA", type = METHOD_REFERENCE_TYPE_ARGUMENT, 202220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 203220497Smarkm typeIndex = 0) 204220497Smarkm @TADescription(annotation = "TB", type = METHOD_REFERENCE_TYPE_ARGUMENT, 205220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 206220497Smarkm typeIndex = 1) 207220497Smarkm public String returnMethodRefTA1() { 208220497Smarkm return 209220497Smarkm "interface Lambda {" + 210220497Smarkm " <S, T> void generic(S p1, T p2);" + 211220497Smarkm "}" + 212220497Smarkm 213220497Smarkm "class LambdaImpl implements Lambda {" + 214220497Smarkm " public <S, T> void generic(S p1, T p2) {}" + 215220497Smarkm "}" + 216220497Smarkm 217220497Smarkm "class %TEST_CLASS_NAME% {" + 218220497Smarkm " Lambda lambda(LambdaImpl r) {" + 219220497Smarkm " return r::<@TA Object, @TB Object>generic;" + 220220497Smarkm " }" + 221220497Smarkm "}"; 222220497Smarkm } 223220497Smarkm 224220497Smarkm @TADescription(annotation = "TA", type = CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT, 225220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 226220497Smarkm typeIndex = 0) 227220497Smarkm @TADescription(annotation = "TB", type = CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT, 228220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 229220497Smarkm typeIndex = 1) 230220497Smarkm public String returnConstructorRefTA2() { 231220497Smarkm return 232220497Smarkm "interface Lambda {" + 233220497Smarkm " <S, T> void generic(S p1, T p2);" + 234220497Smarkm "}" + 235220497Smarkm 236220497Smarkm "class LambdaImpl implements Lambda {" + 237220497Smarkm " <S, T> LambdaImpl(S p1, T p2) {}" + 238220497Smarkm " public <S, T> void generic(S p1, T p2) {}" + 239220497Smarkm "}" + 240220497Smarkm 241220497Smarkm "class %TEST_CLASS_NAME% {" + 242220497Smarkm " Lambda lambda() {" + 243220497Smarkm " return LambdaImpl::<@TA Object, @TB Object>new;" + 244220497Smarkm " }" + 245220497Smarkm "}"; 246220497Smarkm } 247220497Smarkm 248220497Smarkm @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, 249220497Smarkm paramIndex = 0) 250220497Smarkm @TADescription(annotation = "TB", type = METHOD_FORMAL_PARAMETER, 251220497Smarkm paramIndex = 1) 252220497Smarkm @TADescription(annotation = "TC", type = METHOD_FORMAL_PARAMETER, 253220497Smarkm paramIndex = 1, genericLocation = { 3, 0 }) 254220497Smarkm @TADescription(annotation = "TD", type = LOCAL_VARIABLE, 255220497Smarkm lvarOffset = ReferenceInfoUtil.IGNORE_VALUE, 256220497Smarkm lvarLength = ReferenceInfoUtil.IGNORE_VALUE, 257220497Smarkm lvarIndex = ReferenceInfoUtil.IGNORE_VALUE) 258220497Smarkm @TADescription(annotation = "TE", type = CAST, 259220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 260220497Smarkm typeIndex = 0) 261220497Smarkm public String returnLambdaExpr1() { 262220497Smarkm return 263220497Smarkm "interface LambdaInt {" + 264220497Smarkm " void lambda(Object p1, List<Object> p2);" + 265220497Smarkm "}" + 266220497Smarkm "class %TEST_CLASS_NAME% {" + 267220497Smarkm " LambdaInt getLambda() {" + 268220497Smarkm " return (@TA Object x, @TB List<@TC Object> y) -> { @TD Object l = null; System.out.println((@TE Object) l); };" + 269220497Smarkm " }" + 270220497Smarkm "}"; 271220497Smarkm } 272220497Smarkm 273220497Smarkm @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, 274220497Smarkm paramIndex = 0) 275220497Smarkm public String lambdaField1() { 276220497Smarkm return 277220497Smarkm "class %TEST_CLASS_NAME% {" + 278220497Smarkm " java.util.function.IntUnaryOperator field = (@TA int y) -> 1;" + 279220497Smarkm "}"; 280220497Smarkm } 281220497Smarkm 282220497Smarkm @TADescription(annotation = "TA", type = METHOD_FORMAL_PARAMETER, 283221471Sobrien paramIndex = 0) 284220497Smarkm public String lambdaField2() { 285220497Smarkm return 286220497Smarkm "class %TEST_CLASS_NAME% {" + 287220497Smarkm " static java.util.function.IntUnaryOperator field = (@TA int y) -> 1;" + 288221471Sobrien "}"; 289220497Smarkm } 290220497Smarkm 291220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_REFERENCE, 292220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 293220497Smarkm public String returnMethodRefRepeatableAnnotation1() { 294220497Smarkm return 295220497Smarkm "class Lambda {" + 296220497Smarkm " public String getName() { return \"Lambda!\"; }" + 297220497Smarkm "}" + 298220497Smarkm 299220497Smarkm "class %TEST_CLASS_NAME% {" + 300220497Smarkm " java.util.function.Function<Lambda, String> lambda() {" + 301220497Smarkm " return @RTA @RTA Lambda::getName;" + 302220497Smarkm " }" + 303220497Smarkm "}"; 304220497Smarkm } 305220497Smarkm 306220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_REFERENCE, 307220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 308221471Sobrien @TADescription(annotation = "RTBs", type = METHOD_REFERENCE, 309220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 310220497Smarkm genericLocation = { 3, 0 }) 311220497Smarkm @TADescription(annotation = "RTCs", type = METHOD_REFERENCE, 312220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 313220497Smarkm genericLocation = { 3, 0 }) 314220497Smarkm @TADescription(annotation = "RTDs", type = METHOD_REFERENCE, 315220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 316220497Smarkm genericLocation = { 3, 1 }) 317220497Smarkm @TADescription(annotation = "RTEs", type = METHOD_REFERENCE, 318220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 319220497Smarkm genericLocation = { 3, 1}) 320220497Smarkm public String returnMethodRefRepeatableAnnotation2() { 321220497Smarkm return 322220497Smarkm "class Lambda<S, T> {" + 323220497Smarkm " public String getName() { return \"Lambda!\"; }" + 324220497Smarkm "}" + 325220497Smarkm 326220497Smarkm "class %TEST_CLASS_NAME% {" + 327220497Smarkm " java.util.function.Function<Lambda<Integer, Float>, String> lambda() {" + 328220497Smarkm " return @RTA @RTA Lambda<@RTB @RTB @RTC @RTC Integer, @RTD @RTD @RTE @RTE Float>::getName;" + 329220497Smarkm " }" + 330220497Smarkm "}"; 331220497Smarkm } 332220497Smarkm 333220497Smarkm @TADescription(annotation = "RTAs", type = CONSTRUCTOR_REFERENCE, 334220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 335220497Smarkm public String returnConstructorRefRepeatable1() { 336220497Smarkm return 337220497Smarkm "class Lambda {" + 338220497Smarkm " Lambda() { }" + 339220497Smarkm "}" + 340220497Smarkm 341220497Smarkm "class %TEST_CLASS_NAME% {" + 342220497Smarkm " Runnable lambda() {" + 343220497Smarkm " return @RTA @RTA Lambda::new;" + 344220497Smarkm " }" + 345220497Smarkm "}"; 346220497Smarkm } 347220497Smarkm 348220497Smarkm @TADescription(annotation = "RTAs", type = CONSTRUCTOR_REFERENCE, 349220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE) 350220497Smarkm @TADescription(annotation = "RTBs", type = CONSTRUCTOR_REFERENCE, 351220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 352220497Smarkm genericLocation = { 3, 0 }) 353220497Smarkm @TADescription(annotation = "RTCs", type = CONSTRUCTOR_REFERENCE, 354220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 355220497Smarkm genericLocation = { 3, 1 }) 356220497Smarkm public String returnConstructorRefRepeatable2() { 357220497Smarkm return 358220497Smarkm "class Lambda<S, T> {" + 359220497Smarkm " Lambda() { }" + 360220497Smarkm "}" + 361220497Smarkm 362220497Smarkm "class %TEST_CLASS_NAME% {" + 363220497Smarkm " Runnable lambda() {" + 364220497Smarkm " return @RTA @RTA Lambda<@RTB @RTB Integer, @RTC @RTC Float>::new;" + 365220497Smarkm " }" + 366220497Smarkm "}"; 367220497Smarkm } 368220497Smarkm 369220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_REFERENCE_TYPE_ARGUMENT, 370220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 371220497Smarkm typeIndex = 0) 372220497Smarkm @TADescription(annotation = "RTBs", type = METHOD_REFERENCE_TYPE_ARGUMENT, 373220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 374220497Smarkm typeIndex = 1) 375220497Smarkm public String returnMethodRefTARepeatableAnnotation1() { 376220497Smarkm return 377220497Smarkm "interface Lambda {" + 378220497Smarkm " <S, T> void generic(S p1, T p2);" + 379220497Smarkm "}" + 380220497Smarkm 381220497Smarkm "class LambdaImpl implements Lambda {" + 382220497Smarkm " public <S, T> void generic(S p1, T p2) {}" + 383220497Smarkm "}" + 384220497Smarkm 385220497Smarkm "class %TEST_CLASS_NAME% {" + 386220497Smarkm " Lambda lambda(LambdaImpl r) {" + 387220497Smarkm " return r::<@RTA @RTA Object, @RTB @RTB Object>generic;" + 388220497Smarkm " }" + 389220497Smarkm "}"; 390220497Smarkm } 391220497Smarkm 392220497Smarkm @TADescription(annotation = "RTAs", type = CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT, 393220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 394220497Smarkm typeIndex = 0) 395220497Smarkm @TADescription(annotation = "RTBs", type = CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT, 396220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 397220497Smarkm typeIndex = 1) 398220497Smarkm public String returnConstructorRefTARepeatableAnnotation2() { 399220497Smarkm return 400220497Smarkm "interface Lambda {" + 401220497Smarkm " <S, T> void generic(S p1, T p2);" + 402220497Smarkm "}" + 403220497Smarkm 404220497Smarkm "class LambdaImpl implements Lambda {" + 405220497Smarkm " <S, T> LambdaImpl(S p1, T p2) {}" + 406220497Smarkm " public <S, T> void generic(S p1, T p2) {}" + 407220497Smarkm "}" + 408220497Smarkm 409220497Smarkm "class %TEST_CLASS_NAME% {" + 410220497Smarkm " Lambda lambda() {" + 411220497Smarkm " return LambdaImpl::<@RTA @RTA Object, @RTB @RTB Object>new;" + 412220497Smarkm " }" + 413220497Smarkm "}"; 414220497Smarkm } 415220497Smarkm 416220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, 417220497Smarkm paramIndex = 0) 418220497Smarkm @TADescription(annotation = "RTBs", type = METHOD_FORMAL_PARAMETER, 419220497Smarkm paramIndex = 1) 420220497Smarkm @TADescription(annotation = "RTCs", type = METHOD_FORMAL_PARAMETER, 421220497Smarkm paramIndex = 1, genericLocation = { 3, 0 }) 422220497Smarkm @TADescription(annotation = "RTDs", type = LOCAL_VARIABLE, 423220497Smarkm lvarOffset = ReferenceInfoUtil.IGNORE_VALUE, 424220497Smarkm lvarLength = ReferenceInfoUtil.IGNORE_VALUE, 425220497Smarkm lvarIndex = ReferenceInfoUtil.IGNORE_VALUE) 426220497Smarkm @TADescription(annotation = "RTEs", type = CAST, 427220497Smarkm offset = ReferenceInfoUtil.IGNORE_VALUE, 428220497Smarkm typeIndex = 0) 429220497Smarkm public String returnLambdaExprRepeatableAnnotation1() { 430220497Smarkm return 431220497Smarkm "interface LambdaInt {" + 432220497Smarkm " void lambda(Object p1, List<Object> p2);" + 433220497Smarkm "}" + 434220497Smarkm "class %TEST_CLASS_NAME% {" + 435220497Smarkm " LambdaInt getLambda() {" + 436220497Smarkm " return (@RTA @RTA Object x, @RTB @RTB List<@RTC @RTC Object> y) ->" + 437220497Smarkm " { @RTD @RTD Object l = null; System.out.println((@RTE @RTE Object) l); };" + 438220497Smarkm " }" + 439220497Smarkm "}"; 440220497Smarkm } 441220497Smarkm 442220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, 443220497Smarkm paramIndex = 0) 444220497Smarkm public String lambdaFieldRepeatableAnnotation1() { 445220497Smarkm return 446220497Smarkm "class %TEST_CLASS_NAME% {" + 447220497Smarkm " java.util.function.IntUnaryOperator field = (@RTA @RTA int y) -> 1;" + 448220497Smarkm "}"; 449220497Smarkm } 450220497Smarkm 451220497Smarkm @TADescription(annotation = "RTAs", type = METHOD_FORMAL_PARAMETER, 452220497Smarkm paramIndex = 0) 453220497Smarkm public String lambdaFieldRepeatableAnnotation2() { 454220497Smarkm return 455220497Smarkm "class %TEST_CLASS_NAME% {" + 456220497Smarkm " static java.util.function.IntUnaryOperator field = (@RTA @RTA int y) -> 1;" + 457220497Smarkm "}"; 458220497Smarkm } 459220497Smarkm} 460220497Smarkm