Skip to content

Commit 8938e2b

Browse files
authored
Merge pull request #198 from BobHanson/long
preliminary better long transpilation
2 parents c84a1cc + 7e817e9 commit 8938e2b

File tree

13 files changed

+676
-289
lines changed

13 files changed

+676
-289
lines changed
-7.74 MB
Binary file not shown.
-98.2 KB
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
<<<<<<< HEAD
2+
20201218184723
3+
=======
14
20201219083213
5+
>>>>>>> refs/heads/hanson1
-7.74 MB
Binary file not shown.
-98.2 KB
Binary file not shown.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
<<<<<<< HEAD
2+
20201218184723
3+
=======
14
20201219083213
5+
>>>>>>> refs/heads/hanson1

sources/net.sf.j2s.core/src/net/sf/j2s/core/Java2ScriptVisitor.java

Lines changed: 402 additions & 255 deletions
Large diffs are not rendered by default.
-7.74 MB
Binary file not shown.

sources/net.sf.j2s.java.core/src/test/Test_Long.java

Lines changed: 148 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,170 @@
88
*/
99
public abstract class Test_Long extends Test_ {
1010

11+
static long field;
12+
static Long Field = Long.valueOf(0);
13+
14+
static Long getLong(long l) {
15+
return Long.valueOf(l);
16+
}
17+
1118
public static void main(String[] args) {
1219

1320
long l;
1421
double d;
22+
Long L = Long.valueOf(10000);
23+
Long O, P, J, K;
24+
long j, k, m;
25+
showLong((O = ++L), 10001, L, 10001);
26+
showLong((J = L++), 10001, L, 10002);
27+
showLong((K = -L), -10002, L, 10002);
28+
k = ++(L);
29+
P = +L;
30+
k = -L;
31+
j = L--;
32+
m = ++L;
33+
P += 3;
34+
field = ++Field;
35+
System.out.println(
36+
" L = " + L + " O = " + O + " J = " + J + " K = " + K + " k = " + k + " j = " + j + " m = " + m);
37+
j = ++k;
38+
k = j--;
39+
Character C = Character.valueOf('c');
40+
char ch = C++;
41+
assert (ch == 'c');
42+
ch = ++C;
43+
assert (ch == 'e' && C == 'e');
44+
45+
long[] al = new long[] { O, J, K };
46+
Long[] AL = new Long[] { O, J, K };
47+
int i = 0;
48+
(al[i++])++;
49+
P = ((((AL[i++]))))++;
50+
System.out.println(O == Long.valueOf(10001));
51+
System.out.println(O.equals(Long.valueOf(10001)));
52+
System.out.println(O != Long.valueOf(10001));
53+
boolean b1 = false, b2 = false, b3 = false, b4;
54+
boolean tf = ((b1 = (K == -10002 && L == 10003 && O == 10001)) && (b2 = O.equals(Long.valueOf(10001)))
55+
&& (b3 = O != Long.valueOf(10001)));
56+
57+
assert (tf);
58+
59+
byte b = (byte) 255;
60+
byte c = b++;
61+
byte a = ++b;
62+
63+
Byte B = Byte.valueOf((byte)100);
64+
byte[] ab = new byte[] { 1, 2, 3, 4 };
65+
byte[][] abc = new byte[][] { new byte[] {}, new byte[] {1, 2, 3, 4} };
66+
Byte[][] ABC = new Byte[][] { new Byte[] {}, new Byte[] {1, 2, 3, 4} };
67+
Byte[] AB = new Byte[] { 1, 2, 3, 4 };
68+
i = 0;
69+
++ab[i++];
70+
ab[i++]++;
71+
++AB[i++];
72+
AB[i++]++;
73+
74+
i = 0;
75+
j = 1;
76+
abc[++i][(int) ++j] |= 0xFFFF;
77+
i = 0;
78+
j = 1;
79+
80+
assert(abc[1][2] == -1);
81+
82+
83+
P = K;
84+
assert (P == K);
85+
86+
P = +K;
87+
88+
assert( P != K);
89+
90+
// Long += is fine automatically unboxed and reboxed
91+
92+
K++;// = B ^ (byte) 3;
93+
K += (byte) 5;
94+
L += 5;
95+
k += 5;
96+
97+
assert (L == 10008);
98+
99+
Boolean BT = Boolean.TRUE;
100+
101+
BT = !BT;
102+
assert (BT == Boolean.FALSE);
103+
104+
// not allowed K ~= K;
105+
k = ~K; // allowed
106+
assert(k == 9997);
107+
k = -K; // allowed
108+
109+
Integer I = Integer.valueOf(33);
110+
i = I / 5;
111+
I /= 5;
112+
i = i / 5;
113+
114+
i /= 5;
115+
116+
L = Long.valueOf(20000);
117+
L /= 10;
118+
assert (L == 2000);
119+
L /= 3;
120+
k = L/3;
121+
k = 3 / L;
122+
k = L / L;
123+
L = L / L;
124+
k = 2000;
125+
L = Long.valueOf(k/3);
126+
assert (L == 666);
127+
L = L / 67;
128+
assert (L == 9);
129+
Short H = Short.valueOf((short) 14);
130+
H = (short) (H / 3);
15131

16132

17133
d = Integer.MAX_VALUE;
18134
d += 1e13;
19-
l = (long) d;
135+
l = (long) +d;
20136
System.out.println(d + " " + l);
21-
assert(false);
22-
23-
137+
assert(d == l);
138+
139+
24140
int ii = (int) Float.MAX_VALUE;
25141
assert (ii == Integer.MAX_VALUE);
142+
143+
144+
// TODO
145+
// long bl = 0x7FFFFFFFFFFFFFFFL;
146+
// System.out.println(bl + " " + (bl + 1));
147+
// assert (bl + 1 < 0);
148+
149+
System.out.println("JavaScript largest safe number " + Long.parseLong("1FFFFFFFFFFFFF", 16) + " " + 0x1FFFFFFFFFFFFFL);
26150
assert (Long.parseLong("1FFFFFFFFFFFFF", 16) == 0x1FFFFFFFFFFFFFL);
27151
d = 0x1FFFFFFFFFFFFFL;
28152
System.out.println((long) d);
29-
// note that long literals are NOT caught
30-
System.out.println(0x1FFFFFFFFFFFFFL);
31153
assert (((long) d) == /** @j2sNative 1 ? 0 : */
32154
0x1FFFFFFFFFFFFFL);
33155

156+
k = 0x7FFFFFFFFFFFFFFFL;
157+
L = 0x7FFFFFFFFFFFFFFFL;
158+
L += 0x7FFFFFFFFFFFFFFFL;
159+
// note that long literals are NOT caught
160+
System.out.println("Largest Java Number is 9223372036854775807: " + L);
161+
34162
// Can't do this in Java:
35163
try {
36164
l = Long.valueOf("0xFFFFF");
37165
assert (false);
38166
} catch (NumberFormatException e) {
39167
}
40-
168+
41169
try {
42170
l = Long.parseLong("0xFFFFF", 16);
43171
assert (false);
44172
} catch (NumberFormatException e) {
45173
}
46-
174+
47175
try {
48176
l = Long.parseLong("0xFFFFF");
49177
assert (false);
@@ -59,20 +187,18 @@ public static void main(String[] args) {
59187
assert (d == 3);
60188
d = (long) -3.8;
61189
assert (d == -3);
62-
63-
long m;
64-
for (double i = -20; i < 20; i++) {
190+
for (double di = -20; di < 20; di++) {
65191
l = 0;
66-
m = (long) (l + i / 10);
67-
l += i / 10;
68-
System.out.println(l + " " + (i / 10) + " " + m);
192+
m = (long) (l + di / 10);
193+
l += di / 10;
194+
System.out.println(l + " " + (di / 10) + " " + m);
69195
assert (l == m);
70196
}
71-
for (double i = -20; i < 20; i++) {
197+
for (double di = -20; di < 20; di++) {
72198
l = 0;
73-
m = (long) (l - i / 10);
74-
l -= i / 10;
75-
System.out.println(l + " " + (-i / 10) + " " + m);
199+
m = (long) (l - di / 10);
200+
l -= di / 10;
201+
System.out.println(l + " " + (-di / 10) + " " + m);
76202
assert (l == m);
77203
}
78204
l = 0;
@@ -83,4 +209,8 @@ public static void main(String[] args) {
83209
System.out.println("Test_Long OK");
84210
}
85211

212+
private static void showLong(Long ll1, long l1, Long ll2, long l2) {
213+
System.out.println(ll1 + "=" + l1 + " and " + ll2 + "=" + l2);
214+
}
215+
86216
}

sources/net.sf.j2s.java.core/srcjs/js/core/corebottom2.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)