1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
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
}
}
|