-
Notifications
You must be signed in to change notification settings - Fork 463
/
Copy pathplayground_test.js
69 lines (55 loc) · 1.57 KB
/
playground_test.js
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
require("./compiler.js")
require("./packages/compiler-builtins/cmij.js")
require("./packages/@rescript/react/cmij.js")
require("./packages/@rescript/core/cmij.js")
let compiler = rescript_compiler.make()
let result = compiler.rescript.compile(`
@@jsxConfig({ version: 4, mode: "automatic" })
open RescriptCore
module A = {
@react.component
let make = (~a) => {
// This should yield a warning (unused variable state)
let state = React.useState(() => 0)
<div> {React.string(a)} </div>
}
}
module B = {
type props = { a: string }
let make = ({a}) => {
<A a/>
}
}
let sum = [1,2,3]
->Array.map(x => x * 2)
->Array.reduce(0, (acc, item) => acc + item)
// Test uncurried behavior
let runFn = (f, x) => f(x)
runFn(x => x + 1, 1)->Console.log
Console.log("Hello world!")
let a = <B a="hello" />
`);
if(result.js_code != "") {
console.log('-- Playground test output --');
console.log(`ReScript version: ${compiler.rescript.version}`);
console.log('----');
if(result.type === "unexpected_error") {
console.log("UNEXPECTED ERROR");
console.log(result);
process.exit(1);
}
if(result.errors && result.errors.length > 0) {
console.log("COMPILATION ERROR");
for(let error of result.errors) {
console.log(error.shortMsg);
}
process.exit(1);
}
if(result.warnings.length === 0) {
console.log("TEST FAILED");
console.log("The code should have at least one warning.");
process.exit(1);
}
console.log(result.js_code);
console.log('-- Playground test complete --');
}