a15db1a56c
Reviewed-by: vromero
309 lines
7.2 KiB
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();
|
|
}
|
|
}
|
|
}
|