mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +00:00
84 lines
2.0 KiB
Java
84 lines
2.0 KiB
Java
/*
|
|
* @test /nodynamiccopyright/
|
|
* @bug 5038439
|
|
* @summary Verify warnings about bit shifts using out-of-range shift amounts
|
|
* @compile/ref=ShiftOutOfRange.out -XDrawDiagnostics -Xlint:lossy-conversions ShiftOutOfRange.java
|
|
*/
|
|
|
|
public class ShiftOutOfRange {
|
|
|
|
public void shiftInt() {
|
|
int a = 123;
|
|
|
|
// These should generate warnings
|
|
a = a << (byte)-32;
|
|
a = a >> (short)-32;
|
|
a = a >>> -32;
|
|
a <<= -32L;
|
|
a >>= (byte)-32;
|
|
a >>>= (short)-32;
|
|
|
|
// These should not generate warnings
|
|
a = a << (byte)-31;
|
|
a = a >> (short)-23;
|
|
a = a >>> -17;
|
|
a <<= -13L;
|
|
a >>= (byte)-1;
|
|
a >>>= (short)0;
|
|
a = a << (byte)0;
|
|
a = a >> (char)7;
|
|
a = a >>> (short)13;
|
|
a <<= 17;
|
|
a >>= (long)23;
|
|
a >>>= (byte)31;
|
|
a <<= hashCode();
|
|
a >>= hashCode();
|
|
a >>>= hashCode();
|
|
|
|
// These should generate warnings
|
|
a = a << (byte)32;
|
|
a = a >> (char)32;
|
|
a = a >>> (short)32;
|
|
a <<= 32;
|
|
a >>= (long)32;
|
|
a >>>= (byte)32;
|
|
}
|
|
|
|
public void shiftLong() {
|
|
long a = 123;
|
|
|
|
// These should generate warnings
|
|
a = a << (byte)-64;
|
|
a = a >> (short)-64;
|
|
a = a >>> -64;
|
|
a <<= -64L;
|
|
a >>= (byte)-64L;
|
|
a >>>= (short)-64;
|
|
|
|
// These should not generate warnings
|
|
a = a << (byte)-63;
|
|
a = a >> (short)-47;
|
|
a = a >>> -34;
|
|
a <<= -25L;
|
|
a >>= (byte)-15;
|
|
a >>>= (short)0;
|
|
a = a << (byte)0;
|
|
a = a >> (char)15;
|
|
a = a >>> (short)25;
|
|
a <<= 34;
|
|
a >>= (long)47;
|
|
a >>>= (byte)63;
|
|
a <<= hashCode();
|
|
a >>= hashCode();
|
|
a >>>= hashCode();
|
|
|
|
// These should generate warnings
|
|
a = a << (byte)64;
|
|
a = a >> (char)64;
|
|
a = a >>> (short)64;
|
|
a <<= 64;
|
|
a >>= (long)64;
|
|
a >>>= (byte)64;
|
|
}
|
|
}
|