-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmanual_test.coffee
executable file
·77 lines (66 loc) · 2.11 KB
/
manual_test.coffee
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
#!/usr/bin/env iced
### !pragma coverage-skip-block ###
require "fy"
fs = require "fs"
import_resolver = require "./src/import_resolver"
ast_gen = require "./src/ast_gen"
ast_transform = require("./src/ast_transform")
type_inference = require("./src/type_inference").gen
translate = require("./src/translate_ligo").gen
translate_ds = require("./src/translate_ligo_default_state").gen
{execSync} = require "child_process"
argv = require("minimist")(process.argv.slice(2))
argv.router ?= true
argv.contract ?= false
argv.disable_enums_to_nat ?= false
process_file = (file)->
code = import_resolver file
if argv.dump
p code
process.exit()
ast = ast_gen code,
suggest_solc_version : "0.4.26"
silent: true
if argv.ast_trans or argv.full
solidity_to_ast4gen = require("./src/solidity_to_ast4gen").gen
new_ast = solidity_to_ast4gen ast
if new_ast.need_prevent_deploy
p "FLAG need_prevent_deploy"
if argv.full
opt = {
router : argv.router,
contract : argv.contract
replace_enums_by_nats: not argv.disable_enums_to_nat
}
new_ast = ast_transform.pre_ti new_ast, opt
new_ast = type_inference new_ast
new_ast = ast_transform.post_ti new_ast, opt
code = translate new_ast, opt
if argv.print
puts code
if argv.ds or argv.default_state
ds_code = translate_ds new_ast
if argv.print
puts "default state:"
puts ds_code
if argv.ligo
code = code.replace /\(\* EmitStatement \*\);/g, ""
fs.writeFileSync "test.ligo", code
if fs.existsSync "ligo_tmp.log"
fs.unlinkSync "ligo_tmp.log"
try
execSync "ligo compile-contract test.ligo main > ./ligo_tmp.log", {stdio: "inherit"}
catch err
puts "ERROR"
puts fs.readFileSync "./ligo_tmp.log", "utf-8"
return
if argv.all
fs_tree = require "./test/walk_fs_tree"
fs_tree.walk "solidity_samples", (path)->
puts path
process_file path
else
if !(file = argv._[0])? and !(file = argv.file)
puts "usage ./manual_test.coffee <file.sol>"
process.exit()
process_file file