jdk-24/test/langtools/tools/javac/patterns/BindingsTest2.java

309 lines
7.2 KiB
Java

/*
* @test /nodynamiccopyright/
* @bug 8231827
* @summary Ensure that scopes arising from conditionalExpressions are handled corrected.
* @compile/fail/ref=BindingsTest2.out -XDrawDiagnostics -XDshould-stop.at=FLOW BindingsTest2.java
*/
public class BindingsTest2 {
public static boolean Ktrue() { return true; }
public static void meth() {
Object o1 = "hello";
Integer in = 42;
Object o2 = in;
Object o3 = "there";
if (Ktrue() ? o2 instanceof Integer x : o2 instanceof String x) {
x.intValue();
}
if (Ktrue() ? o2 instanceof Integer x : true) {
x.intValue();
}
if (o1 instanceof String s ? true : true) {
s.length();
}
if (o1 instanceof String s ? true : o2 instanceof Integer s) {
s.length();
}
if (o1 instanceof String s ? true : o2 instanceof Integer i) {
s.length();
}
// Test for (e1 ? e2 : e3).T contains intersect(e1.F, e2.T)
if (!(o1 instanceof String s) ? true : true) {
s.length();
}
if (!(o1 instanceof String s) ? (o2 instanceof Integer s) : true) {
s.length();
}
if (!(o1 instanceof String s) ? (o2 instanceof Integer i) : true) {
s.length();
i.intValue();
}
if (!(o1 instanceof String s) ? (o1 instanceof String s2) : true) {
s.length();
s2.length();
}
// Test for (e1 ? e2 : e3).F contains intersect(e2.F, e3.F)
if (Ktrue() ? !(o2 instanceof Integer x) : !(o1 instanceof String x)){
} else {
x.intValue();
}
if (Ktrue() ? !(o2 instanceof Integer x) : !(o1 instanceof String s)){
} else {
x.intValue();
}
if (Ktrue() ? !(o2 instanceof Integer x) : !(o2 instanceof Integer x1)){
} else {
x.intValue();
x1.intValue();
}
if (Ktrue() ? !(o2 instanceof Integer x) : false){
} else {
x.intValue();
}
// Test for (e1 ? e2 : e3).F contains intersect(e1.T, e3.F)
if (o1 instanceof String s ? true : !(o2 instanceof Integer s)){
} else {
s.length();
}
if (o1 instanceof String s ? true : !(o2 instanceof Integer i)){
} else {
s.length();
i.intValue();
}
if (o1 instanceof String s ? true : !(o2 instanceof String s1)){
} else {
s.length();
s1.length();
}
// Test for (e1 ? e2 : e3).F contains intersect(e1.F, e2.F)
if (!(o1 instanceof String s) ? !(o1 instanceof String s1) : true){
} else {
s.length();
s1.length();
}
if (!(o1 instanceof String s) ? !(o2 instanceof Integer s) : true){
} else {
s.length();
}
if (!(o1 instanceof String s) ? !(o2 instanceof Integer i) : true){
} else {
s.length();
i.intValue();
}
// Test for e1 ? e2: e3 - include e1.T in e2
if (o1 instanceof String s ? false : s.length()>0) {
System.out.println("done");
}
if (o1 instanceof String s ? false : s.intValue!=0) {
System.out.println("done");
}
// Test for e1 ? e2 : e3 - include e1.F in e3
if (!(o1 instanceof String s) ? s.length()>0 : false){
System.out.println("done");
}
if (!(o1 instanceof String s) ? s.intValue>0 : false){
System.out.println("done");
}
{
while (!(o1 instanceof String s)) {
break;
}
s.length();
}
{
while (!(o1 instanceof String s)) {
if (false) break;
}
s.length();
}
{
while (!(o1 instanceof String s)) {
while (true);
break;
}
s.length();
}
{
for (; !(o1 instanceof String s); ) {
break;
}
s.length();
}
{
for (; !(o1 instanceof String s); ) {
if (false) break;
}
s.length();
}
{
for (; !(o1 instanceof String s); ) {
while (true);
break;
}
s.length();
}
{
do {
break;
} while (!(o1 instanceof String s));
s.length();
}
{
do {
if (false) break;
} while (!(o1 instanceof String s));
s.length();
}
{
do {
while (true);
break;
} while (!(o1 instanceof String s));
s.length();
}
{
L: while (!(o1 instanceof String s)) {
break L;
}
s.length();
}
{
L: for (; !(o1 instanceof String s); ) {
break L;
}
s.length();
}
{
L: do {
break L;
} while (!(o1 instanceof String s));
s.length();
}
{
L: {
while (!(o1 instanceof String s)) {
break L;
}
s.length();
}
}
{
L: {
for (; !(o1 instanceof String s); ) {
break L;
}
s.length();
}
}
{
L: {
do {
break L;
} while (!(o1 instanceof String s));
s.length();
}
}
{
if (o1 instanceof final String s) {
s = "";
}
}
{
LBL1: LBL2: if (!(o1 instanceof String s)) {
break LBL1;
}
System.err.println(s);
}
{
LBL1: LBL2: if (!(o1 instanceof String s)) {
break LBL2;
}
System.err.println(s);
}
{
LBL1: LBL2: if (o1 instanceof String s) {
} else {
break LBL1;
}
System.err.println(s);
}
{
LBL1: LBL2: if (o1 instanceof String s) {
} else {
break LBL2;
}
System.err.println(s);
}
{
switch (0) {
case 0:
if (!(o1 instanceof String s)) {
break;
}
}
s.length();
}
{
int j = 0;
L: while (j++ < 2)
if (!(o1 instanceof String s)) {
break L;
}
s.length();
}
{
int j = 0;
L: for (; j++ < 2; )
if (!(o1 instanceof String s)) {
break L;
}
s.length();
}
}
}