1 /* 2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @summary Test of method selection and resolution cases that 27 * generate IllegalAccessErrorTest 28 * @modules java.base/jdk.internal.org.objectweb.asm 29 * @library /runtime/SelectionResolution/classes 30 * @build selectionresolution.* 31 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-VerifyDependencies IllegalAccessErrorTest 32 */ 33 34 import java.util.Arrays; 35 import java.util.Collection; 36 import java.util.EnumSet; 37 import selectionresolution.ClassData; 38 import selectionresolution.MethodData; 39 import selectionresolution.Result; 40 import selectionresolution.SelectionResolutionTest; 41 import selectionresolution.SelectionResolutionTestCase; 42 import selectionresolution.Template; 43 44 public class IllegalAccessErrorTest extends SelectionResolutionTest { 45 46 private static final SelectionResolutionTestCase.Builder initBuilder = 47 new SelectionResolutionTestCase.Builder(); 48 49 static { 50 initBuilder.setResult(Result.IAE); 51 } 52 53 private static final Collection<TestGroup> testgroups = 54 Arrays.asList( 55 /* invokestatic tests */ 56 /* Group 125 : callsite = methodref, methodref != 57 * expected, expected is class 58 */ 59 new TestGroup.Simple(initBuilder, 60 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 61 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 62 EnumSet.of(MethodData.Access.PRIVATE), 63 EnumSet.of(MethodData.Context.STATIC), 64 EnumSet.of(ClassData.Package.SAME)), 65 Template.MethodrefNotEqualsExpectedClass, 66 Template.CallsiteEqualsMethodref, 67 Template.TrivialObjectref), 68 /* Group 126: callsite :> methodref, methodref = expected, 69 * expected is class, expected and callsite in the same package 70 */ 71 new TestGroup.Simple(initBuilder, 72 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 73 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 74 EnumSet.of(MethodData.Access.PRIVATE), 75 EnumSet.of(MethodData.Context.STATIC), 76 EnumSet.of(ClassData.Package.SAME)), 77 Template.MethodrefEqualsExpected, 78 Template.CallsiteSubclassMethodref, 79 Template.TrivialObjectref), 80 /* Group 127: callsite :> methodref, methodref != expected, 81 * expected is class, expected and callsite in the same package 82 */ 83 new TestGroup.Simple(initBuilder, 84 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 85 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 86 EnumSet.of(MethodData.Access.PRIVATE), 87 EnumSet.of(MethodData.Context.STATIC), 88 EnumSet.of(ClassData.Package.SAME)), 89 Template.MethodrefNotEqualsExpectedClass, 90 Template.CallsiteSubclassMethodref, 91 Template.TrivialObjectref), 92 /* Group 128: callsite unrelated to methodref, methodref = expected, 93 * expected is class, expected and callsite in the same package 94 */ 95 new TestGroup.Simple(initBuilder, 96 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 97 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 98 EnumSet.of(MethodData.Access.PRIVATE), 99 EnumSet.of(MethodData.Context.STATIC), 100 EnumSet.of(ClassData.Package.SAME)), 101 Template.MethodrefEqualsExpected, 102 Template.CallsiteUnrelatedToMethodref, 103 Template.TrivialObjectref), 104 /* Group 129: callsite unrelated to methodref, methodref != expected, 105 * expected is class, expected and callsite in the same package 106 */ 107 new TestGroup.Simple(initBuilder, 108 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 109 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 110 EnumSet.of(MethodData.Access.PRIVATE), 111 EnumSet.of(MethodData.Context.STATIC), 112 EnumSet.of(ClassData.Package.SAME)), 113 Template.MethodrefNotEqualsExpectedClass, 114 Template.CallsiteUnrelatedToMethodref, 115 Template.TrivialObjectref), 116 /* Group 130: callsite = methodref, methodref != expected, 117 * expected is class, expected and callsite not in the same package 118 */ 119 new TestGroup.Simple(initBuilder, 120 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 121 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 122 EnumSet.of(MethodData.Access.PRIVATE, 123 MethodData.Access.PACKAGE), 124 EnumSet.of(MethodData.Context.STATIC), 125 EnumSet.of(ClassData.Package.DIFFERENT)), 126 Template.MethodrefNotEqualsExpectedClass, 127 Template.CallsiteEqualsMethodref, 128 Template.TrivialObjectref), 129 /* Group 131: callsite :> methodref, methodref = expected, 130 * expected is class, expected and callsite not in the same package 131 */ 132 new TestGroup.Simple(initBuilder, 133 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 134 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 135 EnumSet.of(MethodData.Access.PRIVATE, 136 MethodData.Access.PACKAGE), 137 EnumSet.of(MethodData.Context.STATIC), 138 EnumSet.of(ClassData.Package.DIFFERENT)), 139 Template.MethodrefEqualsExpected, 140 Template.CallsiteSubclassMethodref, 141 Template.TrivialObjectref), 142 /* Group 132: callsite :> methodref, methodref != expected, 143 * expected is class, expected and callsite not in the same package 144 */ 145 new TestGroup.Simple(initBuilder, 146 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 147 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 148 EnumSet.of(MethodData.Access.PRIVATE, 149 MethodData.Access.PACKAGE), 150 EnumSet.of(MethodData.Context.STATIC), 151 EnumSet.of(ClassData.Package.DIFFERENT)), 152 Template.MethodrefNotEqualsExpectedClass, 153 Template.CallsiteSubclassMethodref, 154 Template.TrivialObjectref), 155 /* Group 133: callsite unrelated to methodref, methodref = expected, 156 * expected is class, expected and callsite not in the same package 157 */ 158 new TestGroup.Simple(initBuilder, 159 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 160 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 161 EnumSet.of(MethodData.Access.PRIVATE, 162 MethodData.Access.PROTECTED, 163 MethodData.Access.PACKAGE), 164 EnumSet.of(MethodData.Context.STATIC), 165 EnumSet.of(ClassData.Package.DIFFERENT)), 166 Template.MethodrefEqualsExpected, 167 Template.CallsiteUnrelatedToMethodref, 168 Template.TrivialObjectref), 169 /* Group 134: callsite unrelated to methodref, methodref != expected, 170 * expected is class, expected and callsite not in the same package 171 */ 172 new TestGroup.Simple(initBuilder, 173 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESTATIC), 174 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 175 EnumSet.of(MethodData.Access.PRIVATE, 176 MethodData.Access.PROTECTED, 177 MethodData.Access.PACKAGE), 178 EnumSet.of(MethodData.Context.STATIC), 179 EnumSet.of(ClassData.Package.DIFFERENT)), 180 Template.MethodrefNotEqualsExpectedClass, 181 Template.CallsiteUnrelatedToMethodref, 182 Template.TrivialObjectref), 183 184 /* invokevirtual tests */ 185 /* Group 135: callsite = methodref, methodref != expected, 186 * expected is class, expected and callsite in the same package 187 */ 188 new TestGroup.Simple(initBuilder, 189 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 190 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 191 EnumSet.of(MethodData.Access.PRIVATE), 192 EnumSet.of(MethodData.Context.INSTANCE), 193 EnumSet.of(ClassData.Package.SAME)), 194 Template.OverrideAbstractExpectedClass, 195 Template.MethodrefNotEqualsExpectedClass, 196 Template.IgnoredAbstract, 197 Template.CallsiteEqualsMethodref, 198 Template.MethodrefSelectionResolvedIsClass), 199 /* Group 136: callsite :> methodref, methodref = expected, 200 * expected is class, expected and callsite in the same package 201 */ 202 new TestGroup.Simple(initBuilder, 203 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 204 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 205 EnumSet.of(MethodData.Access.PRIVATE), 206 EnumSet.of(MethodData.Context.INSTANCE), 207 EnumSet.of(ClassData.Package.SAME)), 208 Template.OverrideAbstractExpectedClass, 209 Template.MethodrefEqualsExpected, 210 Template.IgnoredAbstract, 211 Template.CallsiteSubclassMethodref, 212 Template.MethodrefSelectionResolvedIsClass), 213 /* Group 137: callsite :> methodref, methodref != expected, 214 * expected is class, expected and callsite in the same package 215 */ 216 new TestGroup.Simple(initBuilder, 217 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 218 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 219 EnumSet.of(MethodData.Access.PRIVATE), 220 EnumSet.of(MethodData.Context.INSTANCE), 221 EnumSet.of(ClassData.Package.SAME)), 222 Template.OverrideAbstractExpectedClass, 223 Template.MethodrefNotEqualsExpectedClass, 224 Template.IgnoredAbstract, 225 Template.CallsiteSubclassMethodref, 226 Template.MethodrefSelectionResolvedIsClass), 227 /* Group 138: callsite unrelated to methodref, methodref = expected, 228 * expected is class, expected and callsite in the same package 229 */ 230 new TestGroup.Simple(initBuilder, 231 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 232 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 233 EnumSet.of(MethodData.Access.PRIVATE), 234 EnumSet.of(MethodData.Context.INSTANCE), 235 EnumSet.of(ClassData.Package.SAME)), 236 Template.OverrideAbstractExpectedClass, 237 Template.MethodrefEqualsExpected, 238 Template.IgnoredAbstract, 239 Template.CallsiteUnrelatedToMethodref, 240 Template.MethodrefSelectionResolvedIsClass), 241 /* Group 139: callsite unrelated to methodref, methodref != expected, 242 * expected is class, expected and callsite in the same package 243 */ 244 new TestGroup.Simple(initBuilder, 245 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 246 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 247 EnumSet.of(MethodData.Access.PRIVATE), 248 EnumSet.of(MethodData.Context.INSTANCE), 249 EnumSet.of(ClassData.Package.SAME)), 250 Template.OverrideAbstractExpectedClass, 251 Template.MethodrefNotEqualsExpectedClass, 252 Template.IgnoredAbstract, 253 Template.CallsiteUnrelatedToMethodref, 254 Template.MethodrefSelectionResolvedIsClass), 255 /* Group 140: callsite = methodref, methodref != expected, 256 * expected is class, expected and callsite not in the same package 257 */ 258 new TestGroup.Simple(initBuilder, 259 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 260 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 261 EnumSet.of(MethodData.Access.PACKAGE, 262 MethodData.Access.PRIVATE), 263 EnumSet.of(MethodData.Context.INSTANCE), 264 EnumSet.of(ClassData.Package.DIFFERENT)), 265 Template.OverrideAbstractExpectedClass, 266 Template.MethodrefNotEqualsExpectedClass, 267 Template.IgnoredAbstract, 268 Template.CallsiteEqualsMethodref, 269 Template.MethodrefSelectionResolvedIsClass), 270 /* Group 141: callsite :> methodref, methodref = expected, 271 * expected is class, expected and callsite not in the same package 272 */ 273 new TestGroup.Simple(initBuilder, 274 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 275 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 276 EnumSet.of(MethodData.Access.PACKAGE, 277 MethodData.Access.PRIVATE), 278 EnumSet.of(MethodData.Context.INSTANCE, 279 MethodData.Context.ABSTRACT), 280 EnumSet.of(ClassData.Package.DIFFERENT)), 281 Template.OverrideAbstractExpectedClass, 282 Template.MethodrefEqualsExpected, 283 Template.IgnoredAbstract, 284 Template.CallsiteSubclassMethodref, 285 Template.MethodrefSelectionResolvedIsClass), 286 /* Group 142: callsite :> methodref, methodref = expected, 287 * expected is class, expected and callsite not in the same package 288 */ 289 new TestGroup.Simple(initBuilder, 290 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 291 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 292 EnumSet.of(MethodData.Access.PACKAGE, 293 MethodData.Access.PRIVATE), 294 EnumSet.of(MethodData.Context.INSTANCE, 295 MethodData.Context.ABSTRACT), 296 EnumSet.of(ClassData.Package.DIFFERENT)), 297 Template.OverrideAbstractExpectedClass, 298 Template.MethodrefNotEqualsExpectedClass, 299 Template.IgnoredAbstract, 300 Template.CallsiteSubclassMethodref, 301 Template.MethodrefSelectionResolvedIsClass), 302 /* Group 143: callsite unrelated to methodref, methodref = expected, 303 * expected is class, expected and callsite not in the same package 304 */ 305 new TestGroup.Simple(initBuilder, 306 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 307 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 308 EnumSet.of(MethodData.Access.PACKAGE, 309 // protected causes verifier error. 310 MethodData.Access.PRIVATE), 311 EnumSet.of(MethodData.Context.INSTANCE, 312 MethodData.Context.ABSTRACT), 313 EnumSet.of(ClassData.Package.DIFFERENT)), 314 Template.OverrideAbstractExpectedClass, 315 Template.MethodrefEqualsExpected, 316 Template.IgnoredAbstract, 317 Template.CallsiteUnrelatedToMethodref, 318 Template.MethodrefSelectionResolvedIsClass), 319 /* Group 144: callsite unrelated to methodref, methodref != expected, 320 * expected is class, expected and callsite not in the same package 321 */ 322 new TestGroup.Simple(initBuilder, 323 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEVIRTUAL), 324 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 325 EnumSet.of(MethodData.Access.PACKAGE, 326 // protected causes verifier error. 327 MethodData.Access.PRIVATE), 328 EnumSet.of(MethodData.Context.INSTANCE, 329 MethodData.Context.ABSTRACT), 330 EnumSet.of(ClassData.Package.DIFFERENT)), 331 Template.OverrideAbstractExpectedClass, 332 Template.MethodrefNotEqualsExpectedClass, 333 Template.IgnoredAbstract, 334 Template.CallsiteUnrelatedToMethodref, 335 Template.MethodrefSelectionResolvedIsClass), 336 337 /* invokeinterface tests */ 338 /* Group 145: callsite = methodref = expected */ 339 new TestGroup.Simple(initBuilder, 340 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 341 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 342 EnumSet.of(MethodData.Access.PUBLIC), 343 EnumSet.of(MethodData.Context.INSTANCE), 344 EnumSet.of(ClassData.Package.SAME)), 345 Template.OverrideAbstractExpectedIface, 346 Template.MethodrefEqualsExpected, 347 Template.IgnoredAbstract, 348 Template.CallsiteEqualsMethodref, 349 Template.IfaceMethodrefSelectionOverrideNonPublic), 350 /* Group 146: callsite = methodref, methodref != expected */ 351 new TestGroup.Simple(initBuilder, 352 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 353 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 354 EnumSet.of(MethodData.Access.PUBLIC), 355 EnumSet.of(MethodData.Context.INSTANCE), 356 EnumSet.of(ClassData.Package.SAME, 357 ClassData.Package.DIFFERENT)), 358 Template.OverrideAbstractExpectedIface, 359 Template.IfaceMethodrefNotEqualsExpected, 360 Template.IgnoredAbstract, 361 Template.CallsiteEqualsMethodref, 362 Template.IfaceMethodrefSelectionOverrideNonPublic), 363 /* Group 147: callsite :> methodref, methodref = expected */ 364 new TestGroup.Simple(initBuilder, 365 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 366 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 367 EnumSet.of(MethodData.Access.PUBLIC), 368 EnumSet.of(MethodData.Context.INSTANCE), 369 EnumSet.of(ClassData.Package.SAME, 370 ClassData.Package.DIFFERENT)), 371 Template.OverrideAbstractExpectedIface, 372 Template.MethodrefEqualsExpected, 373 Template.IgnoredAbstract, 374 Template.CallsiteSubclassMethodref, 375 Template.IfaceMethodrefSelectionOverrideNonPublic), 376 /* Group 148: callsite :> methodref, methodref != expected */ 377 new TestGroup.Simple(initBuilder, 378 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 379 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 380 EnumSet.of(MethodData.Access.PUBLIC), 381 EnumSet.of(MethodData.Context.INSTANCE), 382 EnumSet.of(ClassData.Package.SAME, 383 ClassData.Package.DIFFERENT)), 384 Template.OverrideAbstractExpectedIface, 385 Template.IfaceMethodrefNotEqualsExpected, 386 Template.IgnoredAbstract, 387 Template.CallsiteSubclassMethodref, 388 Template.IfaceMethodrefSelectionOverrideNonPublic), 389 /* Group 149: callsite unrelated to methodref, methodref = expected */ 390 new TestGroup.Simple(initBuilder, 391 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 392 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 393 EnumSet.of(MethodData.Access.PUBLIC), 394 EnumSet.of(MethodData.Context.INSTANCE), 395 EnumSet.of(ClassData.Package.SAME, 396 ClassData.Package.DIFFERENT)), 397 Template.OverrideAbstractExpectedIface, 398 Template.MethodrefEqualsExpected, 399 Template.IgnoredAbstract, 400 Template.CallsiteUnrelatedToMethodref, 401 Template.IfaceMethodrefSelectionOverrideNonPublic), 402 /* Group 150: callsite unrelated to methodref, methodref != expected */ 403 new TestGroup.Simple(initBuilder, 404 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKEINTERFACE), 405 Template.ResultCombo(EnumSet.of(Template.Kind.INTERFACE), 406 EnumSet.of(MethodData.Access.PUBLIC), 407 EnumSet.of(MethodData.Context.INSTANCE), 408 EnumSet.of(ClassData.Package.SAME, 409 ClassData.Package.DIFFERENT)), 410 Template.OverrideAbstractExpectedIface, 411 Template.IfaceMethodrefNotEqualsExpected, 412 Template.IgnoredAbstract, 413 Template.CallsiteUnrelatedToMethodref, 414 Template.IfaceMethodrefSelectionOverrideNonPublic), 415 416 /* invokespecial tests */ 417 /* Group 151: callsite = methodref, methodref != expected, 418 * expected is class, expected and callsite in the same package 419 */ 420 new TestGroup.Simple(initBuilder, 421 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 422 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 423 EnumSet.of(MethodData.Access.PRIVATE), 424 EnumSet.of(MethodData.Context.INSTANCE, 425 MethodData.Context.ABSTRACT), 426 EnumSet.of(ClassData.Package.SAME)), 427 Template.OverrideAbstractExpectedClass, 428 Template.MethodrefNotEqualsExpectedClass, 429 Template.IgnoredAbstract, 430 Template.CallsiteEqualsMethodref, 431 Template.ObjectrefAssignableToCallsite), 432 /* Group 152: callsite :> methodref, methodref = expected, 433 * expected is class, expected and callsite in the same package 434 */ 435 new TestGroup.Simple(initBuilder, 436 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 437 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 438 EnumSet.of(MethodData.Access.PRIVATE), 439 EnumSet.of(MethodData.Context.INSTANCE, 440 MethodData.Context.ABSTRACT), 441 EnumSet.of(ClassData.Package.SAME)), 442 Template.OverrideAbstractExpectedClass, 443 Template.MethodrefEqualsExpected, 444 Template.IgnoredAbstract, 445 Template.CallsiteSubclassMethodref, 446 Template.ObjectrefAssignableToCallsite), 447 /* Group 153: callsite :> methodref, methodref != expected, 448 * expected is class, expected and callsite in the same package 449 */ 450 new TestGroup.Simple(initBuilder, 451 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 452 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 453 EnumSet.of(MethodData.Access.PRIVATE), 454 EnumSet.of(MethodData.Context.INSTANCE, 455 MethodData.Context.ABSTRACT), 456 EnumSet.of(ClassData.Package.SAME)), 457 Template.OverrideAbstractExpectedClass, 458 Template.MethodrefNotEqualsExpectedClass, 459 Template.IgnoredAbstract, 460 Template.CallsiteSubclassMethodref, 461 Template.ObjectrefAssignableToCallsite), 462 /* Group 154: callsite = methodref, methodref != expected, 463 * expected is class, expected and callsite not in the same package 464 */ 465 new TestGroup.Simple(initBuilder, 466 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 467 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 468 EnumSet.of(MethodData.Access.PACKAGE, 469 MethodData.Access.PRIVATE), 470 EnumSet.of(MethodData.Context.INSTANCE), 471 EnumSet.of(ClassData.Package.DIFFERENT)), 472 Template.OverrideAbstractExpectedClass, 473 Template.MethodrefNotEqualsExpectedClass, 474 Template.IgnoredAbstract, 475 Template.CallsiteEqualsMethodref, 476 Template.ObjectrefExactSubclassOfCallsite), 477 /* Group 155: callsite :> methodref, methodref = expected, 478 * expected is class, expected and callsite not in the same package 479 */ 480 new TestGroup.Simple(initBuilder, 481 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 482 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 483 EnumSet.of(MethodData.Access.PACKAGE, 484 MethodData.Access.PRIVATE), 485 EnumSet.of(MethodData.Context.INSTANCE), 486 EnumSet.of(ClassData.Package.DIFFERENT)), 487 Template.OverrideAbstractExpectedClass, 488 Template.MethodrefEqualsExpected, 489 Template.IgnoredAbstract, 490 Template.CallsiteSubclassMethodref, 491 Template.ObjectrefExactSubclassOfCallsite), 492 /* Group 156: callsite :> methodref, methodref != expected, 493 * expected is class, expected and callsite not in the same package 494 */ 495 new TestGroup.Simple(initBuilder, 496 Template.SetInvoke(SelectionResolutionTestCase.InvokeInstruction.INVOKESPECIAL), 497 Template.ResultCombo(EnumSet.of(Template.Kind.CLASS), 498 EnumSet.of(MethodData.Access.PACKAGE, 499 MethodData.Access.PRIVATE), 500 EnumSet.of(MethodData.Context.INSTANCE, 501 MethodData.Context.ABSTRACT), 502 EnumSet.of(ClassData.Package.DIFFERENT)), 503 Template.OverrideAbstractExpectedClass, 504 Template.MethodrefNotEqualsExpectedClass, 505 Template.IgnoredAbstract, 506 Template.CallsiteSubclassMethodref, 507 Template.ObjectrefExactSubclassOfCallsite) 508 ); 509 510 private IllegalAccessErrorTest() { 511 super(testgroups); 512 } 513 514 public static void main(final String... args) { 515 new IllegalAccessErrorTest().run(); 516 } 517 }