class TypePromotions { public void byteParam(byte p1) { } public void shortParam(short p1) { } public void intParam(int p1) { } public void longParam(long p1) { } public void callingLong() { longParam((byte)1); longParam((short)1); longParam(1); longParam(1L); } public void callingInt() { intParam((byte)1); intParam((short)1); intParam(1); intParam(1L); // fails } public void callingShort() { shortParam((byte)1); shortParam((short)1); shortParam(1); // fails shortParam(1L); // fails } public void callingByte() { byteParam((byte)1); byteParam((short)1); // fails byteParam(1); // fails byteParam(1L); // fails } } class TypePromotionsWithExtraParam { public void byteParam(int p0, byte p1) { } public void shortParam(int p0, short p1) { } public void intParam(int p0, int p1) { } public void longParam(int p0, long p1) { } public void callingLong() { longParam(6, (byte)1); longParam(6, (short)1); longParam(6, 1); longParam(6, 1L); } public void callingInt() { intParam(6, (byte)1); intParam(6, (short)1); intParam(6, 1); intParam(6, 1L); // fails } public void callingShort() { shortParam(6, (byte)1); shortParam(6, (short)1); shortParam(6, 1); // fails shortParam(6, 1L); // fails } public void callingByte() { byteParam(6, (byte)1); byteParam(6, (short)1); // fails byteParam(6, 1); // fails byteParam(6, 1L); // fails } }