diff --git a/Cargo.lock b/Cargo.lock index 40d5e5dd1..458e3cae5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,7 +2,7 @@ name = "parity" version = "1.7.0" dependencies = [ - "ansi_term 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "app_dirs 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)", @@ -39,6 +39,7 @@ dependencies = [ "parity-reactor 0.1.0", "parity-rpc-client 1.4.0", "parity-updater 1.7.0", + "path 0.1.0", "regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.1.0", "rpassword 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -72,7 +73,7 @@ dependencies = [ [[package]] name = "ansi_term" -version = "0.7.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -93,19 +94,19 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.3.16" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aster" -version = "0.17.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -356,7 +357,7 @@ name = "eth-secp256k1" version = "0.5.6" source = "git+https://github.com/ethcore/rust-secp256k1#98ad9b9ecae44a563efdd64273bcebc6b4ed81c6" dependencies = [ - "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -403,6 +404,7 @@ dependencies = [ "ethcore-ipc 1.7.0", "ethcore-ipc-codegen 1.7.0", "ethcore-ipc-nano 1.7.0", + "ethcore-logger 1.7.0", "ethcore-stratum 1.7.0", "ethcore-util 1.7.0", "ethjson 0.1.0", @@ -464,7 +466,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-hash-fetch 1.7.0", "parity-reactor 0.1.0", "parity-ui 1.7.0", @@ -511,11 +513,11 @@ dependencies = [ name = "ethcore-ipc-codegen" version = "1.7.0" dependencies = [ - "aster 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi_codegen 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -579,11 +581,13 @@ dependencies = [ name = "ethcore-logger" version = "1.7.0" dependencies = [ + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-util 1.7.0", "isatty 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -592,10 +596,11 @@ dependencies = [ name = "ethcore-network" version = "1.7.0" dependencies = [ - "ansi_term 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-devtools 1.7.0", "ethcore-io 1.7.0", + "ethcore-logger 1.7.0", "ethcore-util 1.7.0", "ethcrypto 0.1.0", "ethkey 0.2.0", @@ -604,6 +609,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.1 (git+https://github.com/ethcore/mio)", "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "path 0.1.0", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.1.0", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", @@ -624,6 +630,7 @@ dependencies = [ "ethcore-io 1.7.0", "ethcore-ipc 1.7.0", "ethcore-light 1.7.0", + "ethcore-logger 1.7.0", "ethcore-util 1.7.0", "ethcrypto 0.1.0", "ethjson 0.1.0", @@ -681,7 +688,7 @@ dependencies = [ "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", "jsonrpc-server-utils 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-ui 1.7.0", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -697,6 +704,7 @@ dependencies = [ "ethcore-ipc 1.7.0", "ethcore-ipc-codegen 1.7.0", "ethcore-ipc-nano 1.7.0", + "ethcore-logger 1.7.0", "ethcore-util 1.7.0", "futures 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -712,8 +720,7 @@ dependencies = [ name = "ethcore-util" version = "1.7.0" dependencies = [ - "ansi_term 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "clippy 0.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.6.0 (git+https://github.com/ethcore/elastic-array)", "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -721,9 +728,9 @@ dependencies = [ "ethcore-bigint 0.1.2", "ethcore-bloom-journal 0.1.0", "ethcore-devtools 1.7.0", + "ethcore-logger 1.7.0", "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1484,7 +1491,7 @@ dependencies = [ [[package]] name = "nodrop" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1625,16 +1632,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parity-dapps-glue" -version = "1.4.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aster 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quasi_codegen 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1727,24 +1734,24 @@ dependencies = [ name = "parity-ui" version = "1.7.0" dependencies = [ - "parity-ui-dev 1.4.0", + "parity-ui-dev 1.7.0", "parity-ui-precompiled 1.4.0 (git+https://github.com/ethcore/js-precompiled.git)", "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-ui-dev" -version = "1.4.0" +version = "1.7.0" dependencies = [ - "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-ui-precompiled" version = "1.4.0" -source = "git+https://github.com/ethcore/js-precompiled.git#47da49294ad958933e85a9c4f0f2bb4df5dc47de" +source = "git+https://github.com/ethcore/js-precompiled.git#9651995aa0fa718b9b9b58f1c7281900643bdf8f" dependencies = [ - "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1761,6 +1768,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-hash-fetch 1.7.0", "parity-reactor 0.1.0", + "path 0.1.0", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1785,6 +1793,10 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "path" +version = "0.1.0" + [[package]] name = "phf" version = "0.7.14" @@ -1872,20 +1884,22 @@ dependencies = [ [[package]] name = "quasi" -version = "0.11.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "quasi_codegen" -version = "0.11.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aster 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2305,23 +2319,44 @@ dependencies = [ [[package]] name = "syntex" -version = "0.33.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syntex_errors" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_pos 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syntex_pos" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syntex_syntax" -version = "0.33.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_errors 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntex_pos 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2348,7 +2383,7 @@ dependencies = [ [[package]] name = "term" -version = "0.2.14" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2534,11 +2569,6 @@ name = "unicode-normalization" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unicode-xid" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicode-xid" version = "0.0.4" @@ -2668,11 +2698,11 @@ dependencies = [ [metadata] "checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a" "checksum aho-corasick 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "67077478f0a03952bed2e6786338d400d40c25e9836e08ad50af96607317fd03" -"checksum ansi_term 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1f46cd5b1d660c938e3f92dfe7a73d832b3281479363dd0cd9c1c2fbf60f7962" +"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" "checksum app_dirs 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7d1c0d48a81bbb13043847f957971f4d87c81542d80ece5e84ba3cba4058fd4" -"checksum arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "16e3bdb2f54b3ace0285975d59a97cf8ed3855294b2b6bc651fcf22a9c352975" -"checksum aster 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07d344974f0a155f091948aa389fb1b912d3a58414fbdb9c8d446d193ee3496a" +"checksum arrayvec 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d89f1b0e242270b5b797778af0c8d182a1a2ccac5d8d6fadf414223cc0fab096" +"checksum aster 0.41.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfdf7355d9db158df68f976ed030ab0f6578af811f5a7bb6dcf221ec24e0e0" "checksum base-x 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f59103b47307f76e03bef1633aec7fa9e29bfb5aa6daf5a334f94233c71f6c1" "checksum base32 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1b9605ba46d61df0410d8ac686b0007add8172eba90e8e909c347856fe794d8c" "checksum bigint 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2311bcd71b281e142a095311c22509f0d6bcd87b3000d7dbaa810929b9d6f6ae" @@ -2771,7 +2801,7 @@ dependencies = [ "checksum net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)" = "6a816012ca11cb47009693c1e0c6130e26d39e4d97ee2a13c50e868ec83e3204" "checksum nix 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a7bb1da2be7da3cbffda73fc681d509ffd9e665af478d2bee1907cee0bc64b2" "checksum nix 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0d95c5fa8b641c10ad0b8887454ebaafa3c92b5cd5350f8fc693adafd178e7b" -"checksum nodrop 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4d9a22dbcebdeef7bf275cbf444d6521d4e7a2fee187b72d80dba0817120dd8f" +"checksum nodrop 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "52cd74cd09beba596430cc6e3091b74007169a56246e1262f0ba451ea95117b2" "checksum nom 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6caab12c5f97aa316cb249725aa32115118e1522b445e26c257dd77cad5ffd4e" "checksum num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "c04bd954dbf96f76bab6e5bd6cef6f1ce1262d15268ce4f926d2b5b778fa7af2" "checksum num-bigint 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "41655c8d667be847a0b72fe0888857a7b3f052f691cf40852be5fcf87b274a65" @@ -2788,7 +2818,7 @@ dependencies = [ "checksum openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d2845e841700e7b04282ceaa115407ea84e0db918ae689ad9ceb6f06fa6046bd" "checksum order-stat 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb" "checksum owning_ref 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8d91377085359426407a287ab16884a0111ba473aa6844ff01d4ec20ce3d75e7" -"checksum parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98378dec0a185da2b7180308752f0bad73aaa949c3e0a3b0528d0e067945f7ab" +"checksum parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1d06f6ee0fda786df3784a96ee3f0629f529b91cbfb7d142f6410e6bcd1ce2c" "checksum parity-tokio-ipc 0.1.0 (git+https://github.com/nikvolf/parity-tokio-ipc)" = "" "checksum parity-ui-precompiled 1.4.0 (git+https://github.com/ethcore/js-precompiled.git)" = "" "checksum parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e1435e7a2a00dfebededd6c6bdbd54008001e94b4a2aadd6aef0dc4c56317621" @@ -2804,8 +2834,8 @@ dependencies = [ "checksum primal-check 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "647c81b67bb9551a7b88d0bcd785ac35b7d0bf4b2f358683d7c2375d04daec51" "checksum primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5" "checksum primal-sieve 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7aa73fd87e5984a00bdb4c1b14d3d5d6d0bad01b2caaaf924c16ab7260ac946c" -"checksum quasi 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b26543b563704e7d87f3ec7cfafb713010a905c5f1b155a8ab66863af43ca578" -"checksum quasi_codegen 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0881d9a45d5f9ebe4a7e77742f8c604f3658c212baf8dd711a692dd000bc648c" +"checksum quasi 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18c45c4854d6d1cf5d531db97c75880feb91c958b0720f4ec1057135fec358b3" +"checksum quasi_codegen 0.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9e25fa23c044c1803f43ca59c98dac608976dd04ce799411edd58ece776d4" "checksum quick-error 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0aad603e8d7fb67da22dbdf1f4b826ce8829e406124109e73cf1b2454b93a71c" "checksum quine-mc_cluskey 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6683b0e23d80813b1a535841f0048c1537d3f86d63c999e8373b39a9b0eb74a" "checksum quote 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6732e32663c9c271bfc7c1823486b471f18c47a2dbf87c066897b7b51afc83be" @@ -2854,12 +2884,14 @@ dependencies = [ "checksum stable-heap 0.1.0 (git+https://github.com/carllerche/stable-heap?rev=3c5cd1ca47)" = "" "checksum strsim 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e4d73a2c36a4d095ed1a6df5cbeac159863173447f7a82b3f4757426844ab825" "checksum syn 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f94368aae82bb29656c98443a7026ca931a659e8d19dcdc41d6e273054e820" -"checksum syntex 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393b6dd0889df2b064beeea954cfda6bc2571604ac460deeae0fed55a53988af" -"checksum syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44bded3cabafc65c90b663b1071bd2d198a9ab7515e6ce729e4570aaf53c407e" +"checksum syntex 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "35f3cc9d446323ef8fefad933b65cd6de271d29fa14a2e9d036a084770c6d6d5" +"checksum syntex_errors 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3af03823ea45d420dd2c1a44bb074e13ea55f9b99afe960fd58eb4069b7f6cad" +"checksum syntex_pos 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1e502a4a904d9f37cf975dbdbb0b08f2d111322f6792bda6eb095b4112c9a24b" +"checksum syntex_syntax 0.58.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6cf936464c3863952ea3fab848860ea891eba8647b6008b04c36f0bb007192a3" "checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" "checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" "checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" -"checksum term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "f2077e54d38055cf1ca0fd7933a2e00cd3ec8f6fed352b2a377f06dcdaaf3281" +"checksum term 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d168af3930b369cfe245132550579d47dfd873d69470755a19c2c6568dbbd989" "checksum termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a" "checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" "checksum thread_local 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0694f51610ef7cfac7a1b81de7f1602ee5356e76541bcd62c40e71933338cab1" @@ -2881,7 +2913,6 @@ dependencies = [ "checksum unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "13a5906ca2b98c799f4b1ab4557b76367ebd6ae5ef14930ec841c74aed5f3764" "checksum unicode-bidi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c1f7ceb96afdfeedee42bade65a0d585a6a0106f681b6749c8ff4daa8df30b3f" "checksum unicode-normalization 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26643a2f83bac55f1976fb716c10234485f9202dcd65cfbdf9da49867b271172" -"checksum unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "36dff09cafb4ec7c8cf0023eb0b686cb6ce65499116a12201c9e11840ca01beb" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum untrusted 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "193df64312e3515fd983ded55ad5bcaa7647a035804828ed757e832ce6029ef3" "checksum url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afe9ec54bc4db14bc8744b7fed060d785ac756791450959b2248443319d5b119" diff --git a/Cargo.toml b/Cargo.toml index 954f3f240..f0978f420 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ num_cpus = "1.2" number_prefix = "0.2" rpassword = "0.2.1" semver = "0.5" -ansi_term = "0.7" +ansi_term = "0.9" regex = "0.1" isatty = "0.1" toml = "0.2" @@ -50,6 +50,7 @@ parity-updater = { path = "updater" } parity-reactor = { path = "util/reactor" } parity-local-store = { path = "local-store" } ethcore-dapps = { path = "dapps", optional = true } +path = { path = "util/path" } clippy = { version = "0.0.103", optional = true} ethcore-secretstore = { path = "secret_store", optional = true } diff --git a/dapps/Cargo.toml b/dapps/Cargo.toml index b2c4945b5..27a786cb3 100644 --- a/dapps/Cargo.toml +++ b/dapps/Cargo.toml @@ -13,6 +13,7 @@ env_logger = "0.3" futures = "0.1" linked-hash-map = "0.3" log = "0.3" +parity-dapps-glue = "1.7" mime = "0.2" mime_guess = "1.6.1" rand = "0.3" @@ -34,7 +35,6 @@ ethcore-devtools = { path = "../devtools" } ethcore-rpc = { path = "../rpc" } ethcore-util = { path = "../util" } fetch = { path = "../util/fetch" } -parity-dapps-glue = "1.4" parity-hash-fetch = { path = "../hash-fetch" } parity-reactor = { path = "../util/reactor" } parity-ui = { path = "./ui" } diff --git a/dapps/js-glue/Cargo.toml b/dapps/js-glue/Cargo.toml index b53b158c7..0f4c92968 100644 --- a/dapps/js-glue/Cargo.toml +++ b/dapps/js-glue/Cargo.toml @@ -7,17 +7,17 @@ authors = ["Parity Technologies "] build = "build.rs" [build-dependencies] -quasi_codegen = { version = "0.11", optional = true } -syntex = { version = "0.33", optional = true } +quasi_codegen = { version = "0.32", optional = true } +syntex = { version = "0.58", optional = true } [dependencies] glob = { version = "0.2.11" } mime_guess = { version = "1.6.1" } -aster = { version = "0.17", default-features = false } -quasi = { version = "0.11", default-features = false } -quasi_macros = { version = "0.11", optional = true } -syntex = { version = "0.33", optional = true } -syntex_syntax = { version = "0.33", optional = true } +aster = { version = "0.41", default-features = false } +quasi = { version = "0.32", default-features = false } +quasi_macros = { version = "0.32", optional = true } +syntex = { version = "0.58", optional = true } +syntex_syntax = { version = "0.58", optional = true } clippy = { version = "0.0.90", optional = true } [features] diff --git a/dapps/js-glue/build.rs b/dapps/js-glue/build.rs index 12afa7974..442abf7df 100644 --- a/dapps/js-glue/build.rs +++ b/dapps/js-glue/build.rs @@ -25,13 +25,11 @@ mod inner { pub fn main() { let out_dir = env::var_os("OUT_DIR").unwrap(); - let mut registry = syntex::Registry::new(); - quasi_codegen::register(&mut registry); let src = Path::new("src/lib.rs.in"); let dst = Path::new(&out_dir).join("lib.rs"); - registry.expand("", &src, &dst).unwrap(); + quasi_codegen::expand(&src, &dst).unwrap(); } } diff --git a/dapps/js-glue/src/build.rs b/dapps/js-glue/src/build.rs index 86c93171b..31f27306a 100644 --- a/dapps/js-glue/src/build.rs +++ b/dapps/js-glue/src/build.rs @@ -13,9 +13,8 @@ pub mod inner { impl fold::Folder for StripAttributeFolder { fn fold_attribute(&mut self, attr: ast::Attribute) -> Option { - match attr.node.value.node { - ast::MetaItemKind::List(ref n, _) if n == &"webapp" => { return None; } - _ => {} + if &*attr.value.name.as_str() == "webapp" { + return None; } Some(attr) diff --git a/dapps/js-glue/src/codegen.rs b/dapps/js-glue/src/codegen.rs index e74ad5fbe..3d8c93460 100644 --- a/dapps/js-glue/src/codegen.rs +++ b/dapps/js-glue/src/codegen.rs @@ -22,16 +22,12 @@ use self::mime_guess::guess_mime_type; use std::path::{self, Path, PathBuf}; use std::ops::Deref; -use syntax::ast::{MetaItem, Item}; - -use syntax::ast; use syntax::attr; +use syntax::ast::{self, MetaItem, Item}; use syntax::codemap::Span; use syntax::ext::base::{Annotatable, ExtCtxt}; -use syntax::ptr::P; -use syntax::print::pprust::{lit_to_string}; -use syntax::parse::token::{InternedString}; - +use syntax::print::pprust::lit_to_string; +use syntax::symbol::InternedString; pub fn expand_webapp_implementation( cx: &mut ExtCtxt, @@ -48,7 +44,7 @@ pub fn expand_webapp_implementation( }, }; let builder = aster::AstBuilder::new().span(span); - implement_webapp(cx, &builder, &item, push); + implement_webapp(cx, &builder, item, push); } fn implement_webapp(cx: &ExtCtxt, builder: &aster::AstBuilder, item: &Item, push: &mut FnMut(Annotatable)) { @@ -117,11 +113,12 @@ fn implement_webapp(cx: &ExtCtxt, builder: &aster::AstBuilder, item: &Item, push } fn extract_path(cx: &ExtCtxt, item: &Item) -> String { - for meta_items in item.attrs().iter().filter_map(webapp_meta_items) { + for meta_items in item.attrs.iter().filter_map(webapp_meta_items) { for meta_item in meta_items { + let is_path = &*meta_item.name.as_str() == "path"; match meta_item.node { - ast::MetaItemKind::NameValue(ref name, ref lit) if name == &"path" => { - if let Some(s) = get_str_from_lit(cx, name, lit) { + ast::MetaItemKind::NameValue(ref lit) if is_path => { + if let Some(s) = get_str_from_lit(cx, lit) { return s.deref().to_owned(); } }, @@ -134,14 +131,32 @@ fn extract_path(cx: &ExtCtxt, item: &Item) -> String { "web".to_owned() } -fn get_str_from_lit(cx: &ExtCtxt, name: &str, lit: &ast::Lit) -> Option { +fn webapp_meta_items(attr: &ast::Attribute) -> Option> { + let is_webapp = &*attr.value.name.as_str() == "webapp"; + match attr.value.node { + ast::MetaItemKind::List(ref items) if is_webapp => { + attr::mark_used(&attr); + Some( + items.iter() + .map(|item| item.node.clone()) + .filter_map(|item| match item { + ast::NestedMetaItemKind::MetaItem(item) => Some(item), + _ => None, + }) + .collect() + ) + } + _ => None + } +} + +fn get_str_from_lit(cx: &ExtCtxt, lit: &ast::Lit) -> Option { match lit.node { - ast::LitKind::Str(ref s, _) => Some(s.clone()), + ast::LitKind::Str(ref s, _) => Some(s.clone().as_str()), _ => { cx.span_err( lit.span, - &format!("webapp annotation `{}` must be a string, not `{}`", - name, + &format!("webapp annotation path must be a string, not `{}`", lit_to_string(lit) ) ); @@ -150,16 +165,6 @@ fn get_str_from_lit(cx: &ExtCtxt, name: &str, lit: &ast::Lit) -> Option Option<&[P]> { - match attr.node.value.node { - ast::MetaItemKind::List(ref name, ref items) if name == &"webapp" => { - attr::mark_used(&attr); - Some(items) - } - _ => None - } -} - fn as_uri(path: &Path) -> String { let mut s = String::new(); for component in path.iter() { @@ -169,7 +174,6 @@ fn as_uri(path: &Path) -> String { s[0..s.len()-1].into() } - #[test] fn should_convert_path_separators_on_all_platforms() { // given diff --git a/dapps/js-glue/src/lib.rs b/dapps/js-glue/src/lib.rs index 72f228481..143dd1fc8 100644 --- a/dapps/js-glue/src/lib.rs +++ b/dapps/js-glue/src/lib.rs @@ -22,7 +22,6 @@ extern crate syntex; #[cfg(feature = "with-syntex")] -#[macro_use] extern crate syntex_syntax as syntax; #[cfg(feature = "with-syntex")] diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index 68a28b399..d910f9a56 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -43,9 +43,10 @@ rlp = { path = "../util/rlp" } ethcore-stratum = { path = "../stratum" } ethcore-bloom-journal = { path = "../util/bloom" } hardware-wallet = { path = "../hw" } +ethcore-logger = { path = "../logger" } stats = { path = "../util/stats" } -num = "0.1" hyper = { git = "https://github.com/paritytech/hyper", default-features = false } +num = "0.1" [features] jit = ["evmjit"] diff --git a/ethcore/light/src/on_demand/mod.rs b/ethcore/light/src/on_demand/mod.rs index 3f495f9ab..8d451c88e 100644 --- a/ethcore/light/src/on_demand/mod.rs +++ b/ethcore/light/src/on_demand/mod.rs @@ -18,6 +18,9 @@ //! The request service is implemented using Futures. Higher level request handlers //! will take the raw data received here and extract meaningful results from it. +// TODO [ToDr] Suppressing deprecation warnings. Rob will fix the API anyway. +#![allow(deprecated)] + use std::collections::HashMap; use std::sync::Arc; diff --git a/ethcore/src/json_tests/chain.rs b/ethcore/src/json_tests/chain.rs index 221fa1aba..987280bc1 100644 --- a/ethcore/src/json_tests/chain.rs +++ b/ethcore/src/json_tests/chain.rs @@ -25,7 +25,7 @@ use miner::Miner; use io::IoChannel; pub fn json_chain_test(json_data: &[u8], era: ChainEra) -> Vec { - init_log(); + ::ethcore_logger::init_log(); let tests = ethjson::blockchain::Test::load(json_data).unwrap(); let mut failed = Vec::new(); diff --git a/ethcore/src/json_tests/state.rs b/ethcore/src/json_tests/state.rs index 5a6b1ccd0..6388daf94 100644 --- a/ethcore/src/json_tests/state.rs +++ b/ethcore/src/json_tests/state.rs @@ -22,7 +22,7 @@ use ethereum; use ethjson; pub fn json_chain_test(json_data: &[u8], era: ChainEra) -> Vec { - init_log(); + ::ethcore_logger::init_log(); let tests = ethjson::state::Test::load(json_data).unwrap(); let mut failed = Vec::new(); let engine = match era { diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 75c8a80e1..df0738997 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -106,6 +106,7 @@ extern crate ethcore_stratum; extern crate ethabi; extern crate hardware_wallet; extern crate stats; +extern crate ethcore_logger; extern crate num; #[macro_use] diff --git a/ethcore/src/miner/price_info.rs b/ethcore/src/miner/price_info.rs index 4cc6fb36b..29994afb4 100644 --- a/ethcore/src/miner/price_info.rs +++ b/ethcore/src/miner/price_info.rs @@ -110,7 +110,7 @@ impl PriceInfo { fn should_get_price_info() { use std::sync::Arc; use std::time::Duration; - use util::log::init_log; + use ethcore_logger::init_log; use util::{Condvar, Mutex}; init_log(); diff --git a/ethcore/src/miner/transaction_queue.rs b/ethcore/src/miner/transaction_queue.rs index 9a3e6af1a..81c944e4d 100644 --- a/ethcore/src/miner/transaction_queue.rs +++ b/ethcore/src/miner/transaction_queue.rs @@ -2454,6 +2454,7 @@ pub mod test { #[test] fn should_replace_same_transaction_when_has_higher_fee() { + use ethcore_logger::init_log; init_log(); // given let mut txq = TransactionQueue::default(); diff --git a/ethcore/src/state/mod.rs b/ethcore/src/state/mod.rs index 583cab7c5..26d33d152 100644 --- a/ethcore/src/state/mod.rs +++ b/ethcore/src/state/mod.rs @@ -943,7 +943,7 @@ mod tests { use env_info::EnvInfo; use spec::*; use transaction::*; - use util::log::init_log; + use ethcore_logger::init_log; use trace::{FlatTrace, TraceError, trace}; use types::executed::CallType; diff --git a/ethcore/src/state_db.rs b/ethcore/src/state_db.rs index bfd1068ca..2831d2f9b 100644 --- a/ethcore/src/state_db.rs +++ b/ethcore/src/state_db.rs @@ -457,7 +457,7 @@ mod tests { use util::{U256, H256, Address, DBTransaction}; use tests::helpers::*; use state::{Account, Backend}; - use util::log::init_log; + use ethcore_logger::init_log; #[test] fn state_db_smoke() { diff --git a/ipc/codegen/Cargo.toml b/ipc/codegen/Cargo.toml index 63e0fc7c6..52016f45a 100644 --- a/ipc/codegen/Cargo.toml +++ b/ipc/codegen/Cargo.toml @@ -14,13 +14,13 @@ nightly-testing = ["clippy"] with-syntex = ["quasi/with-syntex", "quasi_codegen", "quasi_codegen/with-syntex", "syntex", "syntex_syntax"] [build-dependencies] -quasi_codegen = { version = "0.11", optional = true } -syntex = { version = "0.33", optional = true } +quasi_codegen = { version = "0.32", optional = true } +syntex = { version = "0.58", optional = true } [dependencies] -aster = { version = "0.17", default-features = false } +aster = { version = "0.41", default-features = false } clippy = { version = "^0.*", optional = true } -quasi = { version = "0.11", default-features = false } -quasi_macros = { version = "0.11", optional = true } -syntex = { version = "0.33", optional = true } -syntex_syntax = { version = "0.33", optional = true } +quasi = { version = "0.32", default-features = false } +quasi_macros = { version = "0.32", optional = true } +syntex = { version = "0.58", optional = true } +syntex_syntax = { version = "0.58", optional = true } diff --git a/ipc/codegen/build.rs b/ipc/codegen/build.rs index 12afa7974..442abf7df 100644 --- a/ipc/codegen/build.rs +++ b/ipc/codegen/build.rs @@ -25,13 +25,11 @@ mod inner { pub fn main() { let out_dir = env::var_os("OUT_DIR").unwrap(); - let mut registry = syntex::Registry::new(); - quasi_codegen::register(&mut registry); let src = Path::new("src/lib.rs.in"); let dst = Path::new(&out_dir).join("lib.rs"); - registry.expand("", &src, &dst).unwrap(); + quasi_codegen::expand(&src, &dst).unwrap(); } } diff --git a/ipc/codegen/src/codegen.rs b/ipc/codegen/src/codegen.rs index d44a8137d..2f4752d97 100644 --- a/ipc/codegen/src/codegen.rs +++ b/ipc/codegen/src/codegen.rs @@ -56,7 +56,7 @@ pub fn expand_ipc_implementation( let builder = aster::AstBuilder::new().span(span); - let interface_map = match implement_interface(cx, &builder, &item, push) { + let interface_map = match implement_interface(cx, &builder, &item, push, meta_item) { Ok(interface_map) => interface_map, Err(Error) => { return; }, }; @@ -99,9 +99,9 @@ fn push_invoke_signature_aster( let inputs = &named_signature.sig.decl.inputs; let (input_type_name, input_arg_names, input_arg_tys) = if inputs.len() > 0 { let first_field_name = field_name(builder, &inputs[0]).name.as_str(); - if first_field_name == "self" && inputs.len() == 1 { (None, vec![], vec![]) } + if &*first_field_name == "self" && inputs.len() == 1 { (None, vec![], vec![]) } else { - let skip = if first_field_name == "self" { 2 } else { 1 }; + let skip = if &*first_field_name == "self" { 2 } else { 1 }; let name_str = format!("{}_input", named_signature.ident.name.as_str()); let mut arg_names = Vec::new(); @@ -181,6 +181,7 @@ fn implement_dispatch_arm_invoke_stmt( dispatch: &Dispatch, ) -> ast::Stmt { + use ::syntax::tokenstream::TokenTree::Token; let function_name = builder.id(dispatch.function_name.as_str()); let input_args_exprs = dispatch.input_arg_names.iter().enumerate().map(|(arg_index, arg_name)| { @@ -193,56 +194,56 @@ fn implement_dispatch_arm_invoke_stmt( let ext_cx = &*cx; ::quasi::parse_stmt_panic(&mut ::syntax::parse::new_parser_from_tts( ext_cx.parse_sess(), - ext_cx.cfg(), { let _sp = ext_cx.call_site(); let mut tt = ::std::vec::Vec::new(); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); if dispatch.return_type_ty.is_some() { - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::ModSep)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("ipc")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::ModSep)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("binary")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::ModSep)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("serialize")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); + tt.push(Token(_sp, ::syntax::parse::token::ModSep)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("ipc")))); + tt.push(Token(_sp, ::syntax::parse::token::ModSep)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("binary")))); + tt.push(Token(_sp, ::syntax::parse::token::ModSep)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("serialize")))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("self")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Dot)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("self")))); + tt.push(Token(_sp, ::syntax::parse::token::Dot)); tt.extend(::quasi::ToTokens::to_tokens(&function_name, ext_cx).into_iter()); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); for arg_expr in input_args_exprs { tt.extend(::quasi::ToTokens::to_tokens(&arg_expr, ext_cx).into_iter()); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Comma)); + tt.push(Token(_sp, ::syntax::parse::token::Comma)); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); if dispatch.return_type_ty.is_some() { - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Dot)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("unwrap")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::Dot)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("unwrap")))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); } else { - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Semi)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("Vec")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::ModSep)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("new")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::Semi)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("Vec")))); + tt.push(Token(_sp, ::syntax::parse::token::ModSep)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("new")))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); tt - })).unwrap() + } + )).unwrap() } fn implement_dispatch_arm_invoke( @@ -344,6 +345,8 @@ fn implement_client_method_body( interface_map: &InterfaceMap, ) -> P { + use ::syntax::tokenstream::TokenTree::Token; + let dispatch = &interface_map.dispatches[index as usize]; let index_ident = builder.id(format!("{}", index + RESERVED_MESSAGE_IDS).as_str()); @@ -391,26 +394,25 @@ fn implement_client_method_body( let ext_cx = &*cx; ::quasi::parse_stmt_panic(&mut ::syntax::parse::new_parser_from_tts( ext_cx.parse_sess(), - ext_cx.cfg(), { let _sp = ext_cx.call_site(); let mut tt = ::std::vec::Vec::new(); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("let")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("payload")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Eq)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("Request")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("let")))); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("payload")))); + tt.push(Token(_sp, ::syntax::parse::token::Eq)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("Request")))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); for arg in dispatch.input_arg_names.iter() { - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg.as_str())))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Colon)); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg.as_str())))); + tt.push(Token(_sp, ::syntax::parse::token::Colon)); + tt.push(Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg.as_str())))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Comma)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg.as_str())))); + tt.push(Token(_sp, ::syntax::parse::token::Comma)); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); tt })) }); @@ -465,6 +467,8 @@ fn implement_client_method( ) -> ast::ImplItem { + use ::syntax::tokenstream::TokenTree::Token; + let dispatch = &interface_map.dispatches[index as usize]; let method_name = builder.id(dispatch.function_name.as_str()); let body = implement_client_method_body(cx, builder, index, interface_map); @@ -476,36 +480,35 @@ fn implement_client_method( let signature = ::syntax::parse::parser::Parser::parse_impl_item( &mut ::syntax::parse::new_parser_from_tts( ext_cx.parse_sess(), - ext_cx.cfg(), { let _sp = ext_cx.call_site(); let mut tt = ::std::vec::Vec::new(); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("fn")))); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("fn")))); tt.extend(::quasi::ToTokens::to_tokens(&method_name, ext_cx).into_iter()); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("self")))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Comma)); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::BinOp(::syntax::parse::token::And))); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of("self")))); + tt.push(Token(_sp, ::syntax::parse::token::Comma)); for arg_idx in 0..dispatch.input_arg_names.len() { let arg_name = dispatch.input_arg_names[arg_idx].as_str(); let arg_ty = dispatch.input_arg_tys[arg_idx].clone(); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg_name)))); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Colon)); + tt.push(Token(_sp, ::syntax::parse::token::Ident(ext_cx.ident_of(arg_name)))); + tt.push(Token(_sp, ::syntax::parse::token::Colon)); tt.extend(::quasi::ToTokens::to_tokens(&arg_ty, ext_cx).into_iter()); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::Comma)); + tt.push(Token(_sp, ::syntax::parse::token::Comma)); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Paren))); if let Some(ref return_ty) = dispatch.return_type_ty { - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::RArrow)); + tt.push(Token(_sp, ::syntax::parse::token::RArrow)); tt.extend(::quasi::ToTokens::to_tokens(return_ty, ext_cx).into_iter()); } - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::OpenDelim(::syntax::parse::token::Brace))); tt.extend(::quasi::ToTokens::to_tokens(&body, ext_cx).into_iter()); - tt.push(::syntax::ast::TokenTree::Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); + tt.push(Token(_sp, ::syntax::parse::token::CloseDelim(::syntax::parse::token::Brace))); tt })); @@ -526,7 +529,7 @@ fn client_generics(builder: &aster::AstBuilder, interface_map: &InterfaceMap) -> fn client_qualified_ident(cx: &ExtCtxt, builder: &aster::AstBuilder, interface_map: &InterfaceMap) -> P { let generics = client_generics(builder, interface_map); - aster::ty::TyBuilder::new().path().segment(interface_map.ident_map.client_ident(cx, builder, &interface_map.original_item)) + aster::ty::TyBuilder::new().path().segment(interface_map.ident_map.client_ident(cx, builder)) .with_generics(generics).build() .build() } @@ -542,7 +545,7 @@ fn client_phantom_ident(builder: &aster::AstBuilder, interface_map: &InterfaceMa /// for say `Service` it generates `ServiceClient` fn push_client_struct(cx: &ExtCtxt, builder: &aster::AstBuilder, interface_map: &InterfaceMap, push: &mut FnMut(Annotatable)) { let generics = client_generics(builder, interface_map); - let client_short_ident = interface_map.ident_map.client_ident(cx, builder, &interface_map.original_item); + let client_short_ident = interface_map.ident_map.client_ident(cx, builder); let phantom = client_phantom_ident(builder, interface_map); let client_struct_item = quote_item!(cx, @@ -575,7 +578,7 @@ fn push_with_socket_client_implementation( let generics = client_generics(builder, interface_map); let client_ident = client_qualified_ident(cx, builder, interface_map); let where_clause = &generics.where_clause; - let client_short_ident = interface_map.ident_map.client_ident(cx, builder, &interface_map.original_item); + let client_short_ident = interface_map.ident_map.client_ident(cx, builder); let implement = quote_item!(cx, impl $generics ::ipc::WithSocket for $client_ident $where_clause { @@ -717,33 +720,31 @@ fn get_str_from_lit(cx: &ExtCtxt, name: &str, lit: &ast::Lit) -> Result Option<&[P]> { - match attr.node.value.node { - ast::MetaItemKind::List(ref name, ref items) if name == &"ipc" => { - Some(items) - } - _ => None - } -} - -fn client_ident_renamed(cx: &ExtCtxt, item: &ast::Item) -> Option { - for meta_items in item.attrs().iter().filter_map(get_ipc_meta_items) { - for meta_item in meta_items { - match meta_item.node { - ast::MetaItemKind::NameValue(ref name, ref lit) if name == &"client_ident" => { - if let Ok(s) = get_str_from_lit(cx, name, lit) { - return Some(s); +fn client_ident_renamed(cx: &ExtCtxt, meta_item: &MetaItem) -> Option { + if let ast::MetaItemKind::List(ref list) = meta_item.node { + for nested in list { + match nested.node { + ast::NestedMetaItemKind::MetaItem(ref meta_item) => { + let is_client_ident = &*meta_item.name.as_str() == "client_ident"; + match meta_item.node { + ast::MetaItemKind::NameValue(ref lit) if is_client_ident => { + if let Ok(s) = get_str_from_lit(cx, "client_ident", lit) { + return Some(s); + } + } + _ => { + cx.span_err( + meta_item.span, + &format!("unknown client_ident container attribute `{}`", + ::syntax::print::pprust::meta_item_to_string(&meta_item))); + } } - } - _ => { - cx.span_err( - meta_item.span, - &format!("unknown client_ident container attribute `{}`", - ::syntax::print::pprust::meta_item_to_string(meta_item))); - } + }, + _ => {}, } } } + None } @@ -759,6 +760,7 @@ struct InterfaceMap { struct IdentMap { original_path: ast::Path, + meta_item: MetaItem, } impl IdentMap { @@ -766,8 +768,8 @@ impl IdentMap { builder.id(format!("{}", ::syntax::print::pprust::path_to_string(&self.original_path))) } - fn client_ident(&self, cx: &ExtCtxt, builder: &aster::AstBuilder, item: &ast::Item) -> Ident { - if let Some(new_name) = client_ident_renamed(cx, item) { + fn client_ident(&self, cx: &ExtCtxt, builder: &aster::AstBuilder) -> Ident { + if let Some(new_name) = client_ident_renamed(cx, &self.meta_item) { builder.id(new_name) } else { @@ -776,12 +778,12 @@ impl IdentMap { } } -fn ty_ident_map(original_ty: &P) -> IdentMap { +fn ty_ident_map(original_ty: &P, meta_item: &MetaItem) -> IdentMap { let original_path = match original_ty.node { ::syntax::ast::TyKind::Path(_, ref path) => path.clone(), _ => { panic!("incompatible implementation"); } }; - let ident_map = IdentMap { original_path: original_path }; + let ident_map = IdentMap { original_path: original_path, meta_item: meta_item.clone() }; ident_map } @@ -791,6 +793,7 @@ fn implement_interface( builder: &aster::AstBuilder, item: &Item, push: &mut FnMut(Annotatable), + meta_item: &MetaItem, ) -> Result { let (generics, impl_trait, original_ty, dispatch_table) = match item.node { ast::ItemKind::Impl(_, _, ref generics, ref impl_trait, ref ty, ref impl_items) => { @@ -844,7 +847,7 @@ fn implement_interface( let (handshake_arm, handshake_arm_buf) = implement_handshake_arm(cx); - let ty = ty_ident_map(&original_ty).ident(builder); + let ty = ty_ident_map(&original_ty, meta_item).ident(builder); let (interface_endpoint, host_generics) = match impl_trait { Some(ref trait_) => (builder.id(::syntax::print::pprust::path_to_string(&trait_.path)), None), None => (ty, Some(&impl_generics)), @@ -884,7 +887,7 @@ fn implement_interface( ).unwrap(); Ok(InterfaceMap { - ident_map: ty_ident_map(&original_ty), + ident_map: ty_ident_map(&original_ty, meta_item), original_item: item.clone(), item: ipc_item, dispatches: dispatch_table, diff --git a/ipc/codegen/src/lib.rs b/ipc/codegen/src/lib.rs index 33894b485..6e7fc441b 100644 --- a/ipc/codegen/src/lib.rs +++ b/ipc/codegen/src/lib.rs @@ -66,9 +66,11 @@ struct StripAttributeFolder<'a> { #[cfg(feature = "with-syntex")] impl<'a> fold::Folder for StripAttributeFolder<'a> { fn fold_attribute(&mut self, attr: ast::Attribute) -> Option { - match attr.node.value.node { - ast::MetaItemKind::List(ref n, _) if n == self.attr_title => { return None; } - ast::MetaItemKind::Word(ref n) if n == self.attr_title => { return None; } + let is_self = &*attr.value.name.as_str() == self.attr_title; + + match attr.value.node { + ast::MetaItemKind::List(_) if is_self => { return None; } + ast::MetaItemKind::Word if is_self => { return None; } _ => {} } diff --git a/ipc/codegen/src/serialization.rs b/ipc/codegen/src/serialization.rs index cf1ec6696..fd908725c 100644 --- a/ipc/codegen/src/serialization.rs +++ b/ipc/codegen/src/serialization.rs @@ -151,7 +151,7 @@ fn binary_expr( _ => { cx.span_bug(item.span, "expected ItemStruct or ItemEnum in #[derive(Binary)]"); - Err(Error) + Err(Error) as Result }, } } @@ -184,13 +184,17 @@ fn binary_expr_struct( let size_exprs: Vec> = fields.iter().enumerate().map(|(index, field)| { let raw_ident = ::syntax::print::pprust::ty_to_string(&codegen::strip_ptr(&field.ty)); let index_ident = builder.id(format!("__field{}", index)); + let field_id = match field.ident { + Some(ident) => builder.id(ident), + None => builder.id(format!("{}", index)), + }; + match raw_ident.as_ref() { "u8" => { quote_expr!(cx, 1) }, "[u8]" => { value_ident.and_then(|x| { - let field_id = builder.id(field.ident.unwrap()); Some(quote_expr!(cx, $x. $field_id .len())) }) .unwrap_or_else(|| { @@ -207,7 +211,6 @@ fn binary_expr_struct( value_ident.and_then(|x| { - let field_id = builder.id(field.ident.unwrap()); Some(quote_expr!(cx, match $field_type_ident_qualified::len_params() { 0 => ::std::mem::size_of::<$field_type_ident>(), @@ -232,12 +235,12 @@ fn binary_expr_struct( } let mut write_stmts = Vec::::new(); - write_stmts.push(quote_stmt!(cx, let mut offset = 0usize;).unwrap()); + write_stmts.push(quote_stmt!(cx, let mut offset = 0usize;).expect("stmt1")); let mut map_stmts = Vec::::new(); let field_amount = builder.id(&format!("{}",fields.len())); - map_stmts.push(quote_stmt!(cx, let mut map = vec![0usize; $field_amount];).unwrap()); - map_stmts.push(quote_stmt!(cx, let mut total = 0usize;).unwrap()); + map_stmts.push(quote_stmt!(cx, let mut map = vec![0usize; $field_amount];).expect("stmt2")); + map_stmts.push(quote_stmt!(cx, let mut total = 0usize;).expect("stmt3")); let mut post_write_stmts = Vec::::new(); @@ -248,9 +251,12 @@ fn binary_expr_struct( let field_type_ident_qualified = builder.id( replace_qualified(&::syntax::print::pprust::ty_to_string(&codegen::strip_ptr(&field.ty)))); + let field_id = match field.ident { + Some(ident) => builder.id(ident), + None => builder.id(format!("{}", index)), + }; let member_expr = match value_ident { Some(x) => { - let field_id = builder.id(field.ident.unwrap()); quote_expr!(cx, $x . $field_id) }, None => { @@ -267,8 +273,8 @@ fn binary_expr_struct( match raw_ident.as_ref() { "u8" => { - write_stmts.push(quote_stmt!(cx, let next_line = offset + 1;).unwrap()); - write_stmts.push(quote_stmt!(cx, buffer[offset] = $member_expr; ).unwrap()); + write_stmts.push(quote_stmt!(cx, let next_line = offset + 1;).expect("stmt4")); + write_stmts.push(quote_stmt!(cx, buffer[offset] = $member_expr; ).expect("stm5")); }, "[u8]" => { write_stmts.push(quote_stmt!(cx, let size = $member_expr .len();).unwrap()); @@ -374,7 +380,7 @@ fn binary_expr_item_struct( cx.span_bug(span, &format!("#[derive(Binary)] Unsupported struct content, expected tuple/struct, found: {:?}", variant_data)); - Err(Error) + Err(Error) as Result }, } } @@ -431,13 +437,12 @@ fn fields_sequence( variant_ident: &ast::Ident, ) -> ast::Expr { use syntax::parse::token; - use syntax::ast::TokenTree::Token; + use syntax::tokenstream::TokenTree::Token; let named_members = fields.iter().any(|f| f.ident.is_some()); ::quasi::parse_expr_panic(&mut ::syntax::parse::new_parser_from_tts( ext_cx.parse_sess(), - ext_cx.cfg(), { let _sp = ext_cx.call_site(); let mut tt = ::std::vec::Vec::new(); @@ -569,11 +574,10 @@ fn named_fields_sequence( fields: &[ast::StructField], ) -> ast::Stmt { use syntax::parse::token; - use syntax::ast::TokenTree::Token; + use syntax::tokenstream::TokenTree::Token; ::quasi::parse_stmt_panic(&mut ::syntax::parse::new_parser_from_tts( ext_cx.parse_sess(), - ext_cx.cfg(), { let _sp = ext_cx.call_site(); let mut tt = ::std::vec::Vec::new(); @@ -590,7 +594,10 @@ fn named_fields_sequence( tt.push(Token(_sp, token::OpenDelim(token::Brace))); for (idx, field) in fields.iter().enumerate() { - tt.push(Token(_sp, token::Ident(field.ident.clone().expect("function is called for named fields")))); + tt.push(Token(_sp, match field.ident { + Some(ident) => token::Ident(ident), + None => token::Ident(ext_cx.ident_of(&format!("{}", idx))), + })); tt.push(Token(_sp, token::Colon)); // special case for u8, it just takes byte form sequence diff --git a/js/Cargo.precompiled.toml b/js/Cargo.precompiled.toml index 5de652037..87369005c 100644 --- a/js/Cargo.precompiled.toml +++ b/js/Cargo.precompiled.toml @@ -12,8 +12,8 @@ use-precompiled-js = ["parity-dapps-glue/use-precompiled-js"] with-syntex = ["parity-dapps-glue/with-syntex"] [build-dependencies] -parity-dapps-glue = "1.4" +parity-dapps-glue = "1.7" [dependencies] -parity-dapps-glue = "1.4" +parity-dapps-glue = "1.7" diff --git a/js/Cargo.toml b/js/Cargo.toml index 231f5fa24..71683b899 100644 --- a/js/Cargo.toml +++ b/js/Cargo.toml @@ -1,7 +1,7 @@ [package] description = "Parity built-in dapps." name = "parity-ui-dev" -version = "1.4.0" +version = "1.7.0" license = "GPL-3.0" authors = ["Parity Technologies "] build = "build.rs" @@ -11,8 +11,8 @@ default = ["with-syntex"] with-syntex = ["parity-dapps-glue/with-syntex"] [build-dependencies] -parity-dapps-glue = "1.4" +parity-dapps-glue = "1.7" [dependencies] -parity-dapps-glue = "1.4" +parity-dapps-glue = "1.7" diff --git a/js/package.json b/js/package.json index 1e770ac34..54cc076fe 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "parity.js", - "version": "1.7.22", + "version": "1.7.26", "main": "release/index.js", "jsnext:main": "src/index.js", "author": "Parity Team ", diff --git a/js/src/api/subscriptions/personal.js b/js/src/api/subscriptions/personal.js index 15b037b42..fa7ae823c 100644 --- a/js/src/api/subscriptions/personal.js +++ b/js/src/api/subscriptions/personal.js @@ -42,7 +42,7 @@ export default class Personal { // FIXME: Because of the different API instances, the "wait for valid changes" approach // doesn't work. Since the defaultAccount is critical to operation, we poll in exactly - // same way we do in ../eth (ala same as eth_blockNumber) and update. This should be moved + // same way we do in ../eth (ala eth_blockNumber) and update. This should be moved // to pub-sub as it becomes available _defaultAccount = (timerDisabled = false) => { const nextTimeout = (timeout = 1000) => { diff --git a/js/src/api/util/encode.js b/js/src/api/util/encode.js index 5b5fb5eac..f18fbbe2b 100644 --- a/js/src/api/util/encode.js +++ b/js/src/api/util/encode.js @@ -17,6 +17,10 @@ import Abi from '~/abi'; import Func from '~/abi/spec/function'; +import { abiDecode } from './decode'; +import { cleanupValue } from './format'; +import { sha3 } from './sha3'; + export function encodeMethodCallAbi (methodAbi = {}, values = []) { const func = new Func(methodAbi); const tokens = Abi.encodeTokens(func.inputParamTypes(), values); @@ -36,3 +40,30 @@ export function abiEncode (methodName, inputTypes, data) { return result; } + +export function abiUnencode (abi, data) { + const callsig = data.substr(2, 8); + const op = abi.find((field) => { + return field.type === 'function' && + abiSignature(field.name, field.inputs.map((input) => input.type)).substr(2, 8) === callsig; + }); + + if (!op) { + console.warn(`Unknown function ID: ${callsig}`); + return null; + } + + let argsByIndex = abiDecode(op.inputs.map((field) => field.type), '0x' + data.substr(10)) + .map((value, index) => cleanupValue(value, op.inputs[index].type)); + const argsByName = op.inputs.reduce((result, field, index) => { + result[field.name] = argsByIndex[index]; + + return result; + }, {}); + + return [op.name, argsByName, argsByIndex]; +} + +export function abiSignature (name, inputs) { + return sha3(`${name}(${inputs.join()})`); +} diff --git a/js/src/api/util/encode.spec.js b/js/src/api/util/encode.spec.js index 6fead2ed5..7847f06ec 100644 --- a/js/src/api/util/encode.spec.js +++ b/js/src/api/util/encode.spec.js @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { abiEncode, encodeMethodCallAbi } from './encode'; +import { abiEncode, abiUnencode, abiSignature, encodeMethodCallAbi } from './encode'; const ABI = { type: 'function', @@ -51,7 +51,11 @@ describe('api/util/encode', () => { }); it('encodes variable values', () => { - expect(abiEncode('hintUrl', ['bytes32', 'string'], ['0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470', 'http://foo.bar/'])).to.equal(`0x${VARIABLE}`); + expect( + abiEncode( + 'hintUrl', ['bytes32', 'string'], ['0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470', 'http://foo.bar/'] + ) + ).to.equal(`0x${VARIABLE}`); }); it('encodes only the data with null name', () => { @@ -60,4 +64,27 @@ describe('api/util/encode', () => { ).to.equal(`0x${RESULT.substr(8)}`); }); }); + + describe('abiUnencode', () => { + it('decodes data correctly from abi', () => { + expect( + abiUnencode([{ + name: 'test', + type: 'function', + inputs: [ + { type: 'uint', name: 'arga' } + ] + }], '0x1acb6f7700000000000000000000000000000038') + ).to.deep.equal(['test', { arga: 56 }, [56]]); + }); + }); + + // Same example as in abi/util/signature.spec.js + describe('abiSignature', () => { + it('encodes baz(uint32,bool) correctly', () => { + expect( + abiSignature('baz', ['uint32', 'bool']) + ).to.equal('0xcdcd77c0992ec5bbfc459984220f8c45084cc24d9b6efed1fae540db8de801d2'); + }); + }); }); diff --git a/js/src/api/util/format.js b/js/src/api/util/format.js index c1fac8fff..c7594b692 100644 --- a/js/src/api/util/format.js +++ b/js/src/api/util/format.js @@ -20,6 +20,38 @@ export function bytesToHex (bytes) { return '0x' + bytes.map((b) => ('0' + b.toString(16)).slice(-2)).join(''); } +export function cleanupValue (value, type) { + // TODO: make work with arbitrary depth arrays + if (value instanceof Array && type.match(/bytes[0-9]+/)) { + // figure out if it's an ASCII string hiding in there: + let ascii = ''; + + for (let index = 0, ended = false; index < value.length && ascii !== null; ++index) { + const val = value[index]; + + if (val === 0) { + ended = true; + } else { + ascii += String.fromCharCode(val); + } + + if ((ended && val !== 0) || (!ended && (val < 32 || val >= 128))) { + ascii = null; + } + } + + value = ascii === null + ? bytesToHex(value) + : ascii; + } + + if (type.substr(0, 4) === 'uint' && +type.substr(4) <= 48) { + value = +value; + } + + return value; +} + export function hexToBytes (hex) { const raw = toHex(hex).slice(2); const bytes = []; diff --git a/js/src/api/util/format.spec.js b/js/src/api/util/format.spec.js index 8a89c0862..c37205569 100644 --- a/js/src/api/util/format.spec.js +++ b/js/src/api/util/format.spec.js @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -import { bytesToHex, hexToBytes, hexToAscii, bytesToAscii, asciiToHex } from './format'; +import { bytesToHex, cleanupValue, hexToBytes, hexToAscii, bytesToAscii, asciiToHex } from './format'; describe('api/util/format', () => { describe('bytesToHex', () => { @@ -27,6 +27,28 @@ describe('api/util/format', () => { }); }); + describe('cleanupValue', () => { + it('returns unknown values as the original', () => { + expect(cleanupValue('original', 'unknown')).to.equal('original'); + }); + + it('returns ascii arrays as ascii', () => { + expect(cleanupValue([97, 115, 99, 105, 105, 0], 'bytes32')).to.equal('ascii'); + }); + + it('returns non-ascii arrays as hex strings', () => { + expect(cleanupValue([97, 200, 0, 0], 'bytes4')).to.equal('0x61c80000'); + }); + + it('returns uint (>48) as the original', () => { + expect(cleanupValue('original', 'uint49')).to.equal('original'); + }); + + it('returns uint (<=48) as the number value', () => { + expect(cleanupValue('12345', 'uint48')).to.equal(12345); + }); + }); + describe('hexToBytes', () => { it('correctly converts an empty string', () => { expect(hexToBytes('')).to.deep.equal([]); diff --git a/js/src/api/util/index.js b/js/src/api/util/index.js index 254b97c74..cc8fc9b93 100644 --- a/js/src/api/util/index.js +++ b/js/src/api/util/index.js @@ -16,8 +16,8 @@ import { isAddress as isAddressValid, toChecksumAddress } from '../../abi/util/address'; import { abiDecode, decodeCallData, decodeMethodInput, methodToAbi } from './decode'; -import { abiEncode, encodeMethodCallAbi } from './encode'; -import { bytesToHex, hexToAscii, asciiToHex } from './format'; +import { abiEncode, abiUnencode, abiSignature, encodeMethodCallAbi } from './encode'; +import { bytesToHex, hexToAscii, asciiToHex, cleanupValue } from './format'; import { fromWei, toWei } from './wei'; import { sha3 } from './sha3'; import { isArray, isFunction, isHex, isInstanceOf, isString } from './types'; @@ -26,6 +26,9 @@ import { createIdentityImg } from './identity'; export default { abiDecode, abiEncode, + abiUnencode, + abiSignature, + cleanupValue, isAddressValid, isArray, isFunction, diff --git a/js/src/dapps/registry/Accounts/accounts.css b/js/src/dapps/registry/Accounts/accounts.css index d69c25e2b..d886138f0 100644 --- a/js/src/dapps/registry/Accounts/accounts.css +++ b/js/src/dapps/registry/Accounts/accounts.css @@ -15,24 +15,10 @@ /* along with Parity. If not, see . */ -.button { - /* TODO remove !important once material design lite is used */ - padding: 0 !important; -} - .icon { /* TODO remove !important once material design lite is used */ - margin: 0 !important; - width: 30px !important; height: 30px !important; -} - -.menuIcon { - display: inline-block; - vertical-align: middle; -} -.menuText { - display: inline-block; - line-height: 24px; - vertical-align: top; + margin: 0 !important; + padding: 0 !important; + width: 30px !important; } diff --git a/js/src/dapps/registry/Accounts/accounts.js b/js/src/dapps/registry/Accounts/accounts.js index 0651f6857..b17ad63b1 100644 --- a/js/src/dapps/registry/Accounts/accounts.js +++ b/js/src/dapps/registry/Accounts/accounts.js @@ -17,83 +17,50 @@ import React, { Component, PropTypes } from 'react'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import IconMenu from 'material-ui/IconMenu'; -import IconButton from 'material-ui/IconButton/IconButton'; import AccountIcon from 'material-ui/svg-icons/action/account-circle'; -import MenuItem from 'material-ui/MenuItem'; +import { init } from './actions'; import IdentityIcon from '../IdentityIcon'; -import Address from '../ui/address'; -import { select } from './actions'; import styles from './accounts.css'; class Accounts extends Component { static propTypes = { - all: PropTypes.object.isRequired, - selected: PropTypes.object, + selected: PropTypes.oneOfType([ + PropTypes.oneOf([ null ]), + PropTypes.string + ]), + onInit: PropTypes.func.isRequired + }; - select: PropTypes.func.isRequired + componentWillMount () { + this.props.onInit(); } render () { - const { all, selected } = this.props; + const { selected } = this.props; - const origin = { horizontal: 'right', vertical: 'top' }; - - const accountsButton = ( - - { selected - ? ( - - ) : ( - - ) - } - ); + if (!selected) { + return ( + + ); + } return ( - - { Object.values(all).map(this.renderAccount) } - + ); } - - renderAccount = (account) => { - const { selected } = this.props; - const isSelected = selected && selected.address === account.address; - - return ( - -
- - ); - }; - - onAccountSelect = (e, address) => { - this.props.select(address); - }; } const mapStateToProps = (state) => state.accounts; -const mapDispatchToProps = (dispatch) => bindActionCreators({ select }, dispatch); +const mapDispatchToProps = (dispatch) => bindActionCreators({ + onInit: init +}, dispatch); export default connect(mapStateToProps, mapDispatchToProps)(Accounts); diff --git a/js/src/dapps/registry/Accounts/actions.js b/js/src/dapps/registry/Accounts/actions.js index bacd85f2e..7f38de579 100644 --- a/js/src/dapps/registry/Accounts/actions.js +++ b/js/src/dapps/registry/Accounts/actions.js @@ -14,4 +14,27 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +import { api } from '../parity'; + export const select = (address) => ({ type: 'accounts select', address }); + +export const init = () => (dispatch) => { + api.subscribe('parity_defaultAccount', (error, accountAddress) => { + if (error) { + return console.error(error); + } + + if (accountAddress) { + dispatch(select(accountAddress)); + } + }); + + return api.parity + .defaultAccount() + .then((accountAddress) => { + dispatch(select(accountAddress)); + }) + .catch((error) => { + console.error(error); + }); +}; diff --git a/js/src/dapps/registry/Application/application.css b/js/src/dapps/registry/Application/application.css index e4fc21a26..b9fac12ae 100644 --- a/js/src/dapps/registry/Application/application.css +++ b/js/src/dapps/registry/Application/application.css @@ -16,9 +16,11 @@ */ .header { + align-items: center; display: flex; justify-content: space-between; - margin: 0; padding: .3em 1em; + margin: 0; + padding: 0.3em 1em; color: #fff; background-color: #333; } @@ -54,6 +56,7 @@ background: #f80; bottom: 0; color: #fff; + cursor: pointer; left: 0; opacity: 1; padding: 1.5em; diff --git a/js/src/dapps/registry/Application/application.js b/js/src/dapps/registry/Application/application.js index 33b3662b1..7857b1ad1 100644 --- a/js/src/dapps/registry/Application/application.js +++ b/js/src/dapps/registry/Application/application.js @@ -49,6 +49,10 @@ export default class Application extends Component { fee: nullableProptype(PropTypes.object.isRequired) }; + state = { + showWarning: true + }; + render () { const { contract, fee } = this.props; let warning = null; @@ -65,9 +69,7 @@ export default class Application extends Component { { this.renderActions() } -
- WARNING: The name registry is experimental. Please ensure that you understand the risks, benefits & consequences of registering a name before doing so. A non-refundable fee of { api.util.fromWei(fee).toFormat(3) }ETH is required for all registrations. -
+ { this.renderWarning() } ) : ( @@ -98,4 +100,39 @@ export default class Application extends Component { ); } + + renderWarning () { + const { showWarning } = this.state; + const { fee } = this.props; + + if (!showWarning) { + return null; + } + + return ( +
+ + WARNING: The name registry is experimental. Please ensure that you understand the risks, + benefits & consequences of registering a name before doing so. + + { + fee && api.util.fromWei(fee).gt(0) + ? ( + +  A non-refundable fee of { api.util.fromWei(fee).toFormat(3) } ETH +  is required for all registrations. + + ) + : null + } +
+ ); + } + + handleHideWarning = () => { + this.setState({ showWarning: false }); + } } diff --git a/js/src/dapps/registry/Names/actions.js b/js/src/dapps/registry/Names/actions.js index 8bc981d0d..9e5ff4fc6 100644 --- a/js/src/dapps/registry/Names/actions.js +++ b/js/src/dapps/registry/Names/actions.js @@ -33,11 +33,11 @@ export const reserveFail = (name, error) => ({ type: 'names reserve fail', name, export const reserve = (name) => (dispatch, getState) => { const state = getState(); - const account = state.accounts.selected; + const accountAddress = state.accounts.selected; const contract = state.contract; const fee = state.fee; - if (!contract || !account) { + if (!contract || !accountAddress) { return; } @@ -58,7 +58,7 @@ export const reserve = (name) => (dispatch, getState) => { const { reserve } = contract.instance; const options = { - from: account.address, + from: accountAddress, value: fee }; const values = [ @@ -88,10 +88,10 @@ export const dropFail = (name, error) => ({ type: 'names drop fail', name, error export const drop = (name) => (dispatch, getState) => { const state = getState(); - const account = state.accounts.selected; + const accountAddress = state.accounts.selected; const contract = state.contract; - if (!contract || !account) { + if (!contract || !accountAddress) { return; } @@ -105,14 +105,14 @@ export const drop = (name) => (dispatch, getState) => { return getOwner(contract, name) .then((owner) => { - if (owner.toLowerCase() !== account.address.toLowerCase()) { + if (owner.toLowerCase() !== accountAddress.toLowerCase()) { throw new Error(`you are not the owner of "${name}"`); } const { drop } = contract.instance; const options = { - from: account.address + from: accountAddress }; const values = [ diff --git a/js/src/dapps/registry/Records/actions.js b/js/src/dapps/registry/Records/actions.js index 9f0d1beff..4b7ef51d1 100644 --- a/js/src/dapps/registry/Records/actions.js +++ b/js/src/dapps/registry/Records/actions.js @@ -30,10 +30,10 @@ export const fail = (error) => ({ type: 'records update fail', error }); export const update = (name, key, value) => (dispatch, getState) => { const state = getState(); - const account = state.accounts.selected; + const accountAddress = state.accounts.selected; const contract = state.contract; - if (!contract || !account) { + if (!contract || !accountAddress) { return; } @@ -42,7 +42,7 @@ export const update = (name, key, value) => (dispatch, getState) => { return getOwner(contract, name) .then((owner) => { - if (owner.toLowerCase() !== account.address.toLowerCase()) { + if (owner.toLowerCase() !== accountAddress.toLowerCase()) { throw new Error(`you are not the owner of "${name}"`); } @@ -51,7 +51,7 @@ export const update = (name, key, value) => (dispatch, getState) => { : contract.instance.setData || contract.instance.set; const options = { - from: account.address + from: accountAddress }; const values = [ diff --git a/js/src/dapps/registry/Reverse/actions.js b/js/src/dapps/registry/Reverse/actions.js index 6effa9f10..f78ff3434 100644 --- a/js/src/dapps/registry/Reverse/actions.js +++ b/js/src/dapps/registry/Reverse/actions.js @@ -30,10 +30,10 @@ export const fail = (action, error) => ({ type: `reverse ${action} fail`, error export const propose = (name, address) => (dispatch, getState) => { const state = getState(); - const account = state.accounts.selected; + const accountAddress = state.accounts.selected; const contract = state.contract; - if (!contract || !account) { + if (!contract || !accountAddress) { return; } @@ -42,14 +42,14 @@ export const propose = (name, address) => (dispatch, getState) => { return getOwner(contract, name) .then((owner) => { - if (owner.toLowerCase() !== account.address.toLowerCase()) { + if (owner.toLowerCase() !== accountAddress.toLowerCase()) { throw new Error(`you are not the owner of "${name}"`); } const { proposeReverse } = contract.instance; const options = { - from: account.address + from: accountAddress }; const values = [ @@ -74,10 +74,10 @@ export const propose = (name, address) => (dispatch, getState) => { export const confirm = (name) => (dispatch, getState) => { const state = getState(); - const account = state.accounts.selected; + const accountAddress = state.accounts.selected; const contract = state.contract; - if (!contract || !account) { + if (!contract || !accountAddress) { return; } @@ -86,14 +86,14 @@ export const confirm = (name) => (dispatch, getState) => { return getOwner(contract, name) .then((owner) => { - if (owner.toLowerCase() !== account.address.toLowerCase()) { + if (owner.toLowerCase() !== accountAddress.toLowerCase()) { throw new Error(`you are not the owner of "${name}"`); } const { confirmReverse } = contract.instance; const options = { - from: account.address + from: accountAddress }; const values = [ diff --git a/js/src/dapps/registry/addresses/accounts-reducer.js b/js/src/dapps/registry/addresses/accounts-reducer.js index 5be0421ec..2ff11ae27 100644 --- a/js/src/dapps/registry/addresses/accounts-reducer.js +++ b/js/src/dapps/registry/addresses/accounts-reducer.js @@ -31,8 +31,8 @@ export default (state = initialState, action) => { return { ...state, all: accounts }; } - if (action.type === 'accounts select' && state.all[action.address]) { - return { ...state, selected: state.all[action.address] }; + if (action.type === 'accounts select') { + return { ...state, selected: action.address }; } return state; diff --git a/js/src/dapps/registry/util/etherscan-url.js b/js/src/dapps/registry/util/etherscan-url.js index bb4e2fe98..68e765c17 100644 --- a/js/src/dapps/registry/util/etherscan-url.js +++ b/js/src/dapps/registry/util/etherscan-url.js @@ -22,7 +22,7 @@ const etherscanUrl = (hash, isTestnet, netVersion) => { hash = hash.toLowerCase().replace(leading0x, ''); const type = hash.length === 40 ? 'address' : 'tx'; - return `https://${externalUrl(isTestnet, netVersion)}/${type}/0x${hash}`; + return `${externalUrl(isTestnet, netVersion)}/${type}/0x${hash}`; }; export default etherscanUrl; diff --git a/js/src/modals/CreateAccount/CreationType/creationType.js b/js/src/modals/CreateAccount/CreationType/creationType.js index 392db7445..a7d23a667 100644 --- a/js/src/modals/CreateAccount/CreationType/creationType.js +++ b/js/src/modals/CreateAccount/CreationType/creationType.js @@ -145,6 +145,7 @@ export default class CreationType extends Component { items={ TYPES } noStretch onSelectClick={ this.onChange } + onSelectDoubleClick={ this.onSelect } renderItem={ this.renderItem } /> ); @@ -180,4 +181,11 @@ export default class CreationType extends Component { store.setCreateType(item.key); } + + onSelect = (item) => { + const { store } = this.props; + + store.setCreateType(item.key); + store.nextStage(); + } } diff --git a/js/src/ui/Container/container.js b/js/src/ui/Container/container.js index ef26a3ad8..81e48f7f3 100644 --- a/js/src/ui/Container/container.js +++ b/js/src/ui/Container/container.js @@ -82,11 +82,16 @@ export default class Container extends Component { to={ link } > { card } + { this.renderHover() } ) - : card + : ( +
+ { card } + { this.renderHover() } +
+ ) } - { this.renderHover() } ); } diff --git a/js/src/ui/SelectionList/selectionList.js b/js/src/ui/SelectionList/selectionList.js index b8ee1fee6..a7375581d 100644 --- a/js/src/ui/SelectionList/selectionList.js +++ b/js/src/ui/SelectionList/selectionList.js @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +import { noop } from 'lodash'; import React, { Component, PropTypes } from 'react'; import { StarIcon } from '~/ui/Icons'; @@ -29,8 +30,13 @@ export default class SelectionList extends Component { noStretch: PropTypes.bool, onDefaultClick: PropTypes.func, onSelectClick: PropTypes.func.isRequired, + onSelectDoubleClick: PropTypes.func, renderItem: PropTypes.func.isRequired - } + }; + + static defaultProps = { + onSelectDoubleClick: noop + }; render () { const { items, noStretch } = this.props; @@ -45,23 +51,28 @@ export default class SelectionList extends Component { } renderItem = (item, index) => { - const { isChecked, onDefaultClick, onSelectClick, renderItem } = this.props; + const { isChecked, onDefaultClick, onSelectClick, onSelectDoubleClick, renderItem } = this.props; const isSelected = isChecked ? isChecked(item) : item.checked; - const makeDefault = () => { - onDefaultClick(item); + const handleClick = () => { + onSelectClick(item); return false; }; - const selectItem = () => { - onSelectClick(item); + const handleDoubleClick = () => { + onSelectDoubleClick(item); return false; }; let defaultIcon = null; if (onDefaultClick) { + const makeDefault = () => { + onDefaultClick(item); + return false; + }; + defaultIcon = (
{ @@ -85,7 +96,8 @@ export default class SelectionList extends Component {
{ renderItem(item, index) }
diff --git a/logger/Cargo.toml b/logger/Cargo.toml index e0004cd48..b505355c8 100644 --- a/logger/Cargo.toml +++ b/logger/Cargo.toml @@ -8,11 +8,13 @@ authors = ["Parity Technologies "] [dependencies] log = "0.3" env_logger = "0.3" -ethcore-util = { path = "../util" } isatty = "0.1" lazy_static = "0.2" regex = "0.1" time = "0.1" +parking_lot = "0.3" +arrayvec = "0.3" +ansi_term = "0.9" [profile.release] debug = true diff --git a/logger/src/lib.rs b/logger/src/lib.rs index f9188d928..b492f4f78 100644 --- a/logger/src/lib.rs +++ b/logger/src/lib.rs @@ -16,7 +16,7 @@ //! Logger for parity executables -extern crate ethcore_util as util; +extern crate arrayvec; extern crate log as rlog; extern crate isatty; extern crate regex; @@ -24,6 +24,10 @@ extern crate env_logger; extern crate time; #[macro_use] extern crate lazy_static; +extern crate parking_lot; +extern crate ansi_term; + +mod rotating; use std::{env, thread, fs}; use std::sync::{Weak, Arc}; @@ -31,8 +35,10 @@ use std::io::Write; use isatty::{stderr_isatty, stdout_isatty}; use env_logger::LogBuilder; use regex::Regex; -use util::{Mutex, RotatingLogger} ; -use util::log::Colour; +use ansi_term::Colour; +use parking_lot::Mutex; + +pub use rotating::{RotatingLogger, init_log}; #[derive(Debug, PartialEq, Clone)] pub struct Config { diff --git a/util/src/log.rs b/logger/src/rotating.rs similarity index 98% rename from util/src/log.rs rename to logger/src/rotating.rs index 4e537603d..2d98ebcd0 100644 --- a/util/src/log.rs +++ b/logger/src/rotating.rs @@ -20,7 +20,6 @@ use std::env; use rlog::LogLevelFilter; use env_logger::LogBuilder; use arrayvec::ArrayVec; -pub use ansi_term::{Colour, Style}; use parking_lot::{RwLock, RwLockReadGuard}; diff --git a/parity/configuration.rs b/parity/configuration.rs index 9b491143d..a9a9159e1 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -22,7 +22,7 @@ use std::cmp::max; use cli::{Args, ArgsError}; use util::{Hashable, H256, U256, Uint, Bytes, version_data, Address}; use util::journaldb::Algorithm; -use util::log::Colour; +use util::Colour; use ethsync::{NetworkConfiguration, is_valid_node_url, AllowIP}; use ethcore::ethstore::ethkey::Secret; use ethcore::client::{VMType}; @@ -824,7 +824,7 @@ impl Configuration { } fn directories(&self) -> Directories { - use util::path; + use path; let local_path = default_local_path(); let base_path = self.args.flag_base_path.as_ref().map_or_else(|| default_data_path(), |s| s.clone()); diff --git a/parity/helpers.rs b/parity/helpers.rs index d691aabc6..e98c31ab7 100644 --- a/parity/helpers.rs +++ b/parity/helpers.rs @@ -18,7 +18,7 @@ use std::{io, env}; use std::io::{Write, BufReader, BufRead}; use std::time::Duration; use std::fs::File; -use util::{clean_0x, U256, Uint, Address, path, CompactionProfile}; +use util::{clean_0x, U256, Uint, Address, CompactionProfile}; use util::journaldb::Algorithm; use ethcore::client::{Mode, BlockId, VMType, DatabaseCompactionProfile, ClientConfig, VerifierType}; use ethcore::miner::{PendingSet, GasLimit, PrioritizationStrategy}; @@ -27,6 +27,7 @@ use dir::DatabaseDirectories; use upgrade::{upgrade, upgrade_data_paths}; use migration::migrate; use ethsync::is_valid_node_url; +use path; pub fn to_duration(s: &str) -> Result { to_seconds(s).map(Duration::from_secs) @@ -465,7 +466,7 @@ but the first password is trimmed #[test] #[cfg(not(windows))] fn test_geth_ipc_path() { - use util::path; + use path; assert_eq!(geth_ipc_path(true), path::ethereum::with_testnet("geth.ipc").to_str().unwrap().to_owned()); assert_eq!(geth_ipc_path(false), path::ethereum::with_default("geth.ipc").to_str().unwrap().to_owned()); } diff --git a/parity/main.rs b/parity/main.rs index 7d22be1c3..3e499d483 100644 --- a/parity/main.rs +++ b/parity/main.rs @@ -61,6 +61,7 @@ extern crate parity_reactor; extern crate parity_updater as updater; extern crate parity_local_store as local_store; extern crate rpc_cli; +extern crate path; #[macro_use] extern crate log as rlog; diff --git a/parity/rpc_apis.rs b/parity/rpc_apis.rs index 469245c19..cc45e3f8b 100644 --- a/parity/rpc_apis.rs +++ b/parity/rpc_apis.rs @@ -33,7 +33,7 @@ use ethsync::{ManageNetwork, SyncProvider}; use hash_fetch::fetch::Client as FetchClient; use jsonrpc_core::{MetaIoHandler}; use updater::Updater; -use util::RotatingLogger; +use ethcore_logger::RotatingLogger; #[derive(Debug, PartialEq, Clone, Eq, Hash)] pub enum Api { diff --git a/parity/run.rs b/parity/run.rs index 7fe1ad273..86702edfc 100644 --- a/parity/run.rs +++ b/parity/run.rs @@ -20,9 +20,9 @@ use ctrlc::CtrlC; use fdlimit::raise_fd_limit; use ethcore_rpc::{NetworkSettings, informant, is_major_importing}; use ethsync::NetworkConfiguration; -use util::{Colour, version, RotatingLogger, Mutex, Condvar}; +use util::{Colour, version, Mutex, Condvar}; use io::{MayPanic, ForwardPanic, PanicHandler}; -use ethcore_logger::{Config as LogConfig}; +use ethcore_logger::{Config as LogConfig, RotatingLogger}; use ethcore::miner::{StratumOptions, Stratum}; use ethcore::client::{Client, Mode, DatabaseCompactionProfile, VMType, BlockChainClient}; use ethcore::service::ClientService; diff --git a/parity/signer.rs b/parity/signer.rs index 0d71604d4..664a0e6e4 100644 --- a/parity/signer.rs +++ b/parity/signer.rs @@ -28,7 +28,7 @@ use ethcore_signer as signer; use helpers::replace_home; use parity_reactor::TokioRemote; use rpc_apis; -use util::path::restrict_permissions_owner; +use path::restrict_permissions_owner; use util::H256; const CODES_FILENAME: &'static str = "authcodes"; diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 2451323fd..08f813f68 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -36,6 +36,7 @@ ethsync = { path = "../sync" } ethjson = { path = "../json" } ethcore-devtools = { path = "../devtools" } ethcore-light = { path = "../ethcore/light" } +ethcore-logger = { path = "../logger" } parity-updater = { path = "../updater" } parity-reactor = { path = "../util/reactor" } rlp = { path = "../util/rlp" } diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs index 9dc2f6f29..abc51f2ed 100644 --- a/rpc/src/lib.rs +++ b/rpc/src/lib.rs @@ -41,6 +41,7 @@ extern crate ethcrypto as crypto; extern crate ethkey; extern crate ethstore; extern crate ethsync; +extern crate ethcore_logger; extern crate fetch; extern crate parity_reactor; extern crate parity_updater as updater; diff --git a/rpc/src/v1/impls/light/parity.rs b/rpc/src/v1/impls/light/parity.rs index 49421fd04..545935417 100644 --- a/rpc/src/v1/impls/light/parity.rs +++ b/rpc/src/v1/impls/light/parity.rs @@ -19,7 +19,7 @@ use std::sync::Arc; use std::collections::{BTreeMap, HashSet}; use futures::{future, Future, BoxFuture}; -use util::RotatingLogger; +use ethcore_logger::RotatingLogger; use util::misc::version_data; use crypto::ecies; diff --git a/rpc/src/v1/impls/parity.rs b/rpc/src/v1/impls/parity.rs index aee4dc3fd..2a7f85aa3 100644 --- a/rpc/src/v1/impls/parity.rs +++ b/rpc/src/v1/impls/parity.rs @@ -20,7 +20,8 @@ use std::str::FromStr; use std::collections::{BTreeMap, HashSet}; use futures::{future, Future, BoxFuture}; -use util::{RotatingLogger, Address}; +use ethcore_logger::RotatingLogger; +use util::Address; use util::misc::version_data; use crypto::ecies; diff --git a/rpc/src/v1/tests/mocked/parity.rs b/rpc/src/v1/tests/mocked/parity.rs index ab8e1dc8b..3af627037 100644 --- a/rpc/src/v1/tests/mocked/parity.rs +++ b/rpc/src/v1/tests/mocked/parity.rs @@ -15,7 +15,7 @@ // along with Parity. If not, see . use std::sync::Arc; -use util::log::RotatingLogger; +use ethcore_logger::RotatingLogger; use util::Address; use ethsync::ManageNetwork; use ethcore::account_provider::AccountProvider; diff --git a/rpc/src/v1/types/confirmations.rs b/rpc/src/v1/types/confirmations.rs index dd44e5750..f749df449 100644 --- a/rpc/src/v1/types/confirmations.rs +++ b/rpc/src/v1/types/confirmations.rs @@ -18,7 +18,7 @@ use std::fmt; use serde::{Serialize, Serializer}; -use util::log::Colour; +use util::Colour; use util::bytes::ToPretty; use v1::types::{U256, TransactionRequest, RichRawTransaction, H160, H256, H520, Bytes, TransactionCondition, Origin}; diff --git a/rpc/src/v1/types/transaction_request.rs b/rpc/src/v1/types/transaction_request.rs index 5839a0de8..242c02360 100644 --- a/rpc/src/v1/types/transaction_request.rs +++ b/rpc/src/v1/types/transaction_request.rs @@ -18,7 +18,7 @@ use v1::types::{Bytes, H160, U256, TransactionCondition}; use v1::helpers; -use util::log::Colour; +use util::Colour; use std::fmt; diff --git a/signer/Cargo.toml b/signer/Cargo.toml index 075aac9e8..2ed4df5be 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -16,8 +16,8 @@ jsonrpc-core = { git = "https://github.com/paritytech/jsonrpc.git", branch = "pa jsonrpc-server-utils = { git = "https://github.com/paritytech/jsonrpc.git", branch = "parity-1.7" } log = "0.3" env_logger = "0.3" -parity-dapps-glue = { version = "1.4", optional = true } ws = { git = "https://github.com/paritytech/ws-rs.git", branch = "mio-upstream-stable" } +parity-dapps-glue = { version = "1.7", optional = true } ethcore-util = { path = "../util" } ethcore-io = { path = "../util/io" } ethcore-rpc = { path = "../rpc" } diff --git a/stratum/Cargo.toml b/stratum/Cargo.toml index fa418250b..83d101b76 100644 --- a/stratum/Cargo.toml +++ b/stratum/Cargo.toml @@ -23,6 +23,7 @@ semver = "0.5" ethcore-ipc-nano = { path = "../ipc/nano" } futures = "0.1" tokio-core = "0.1" +ethcore-logger = { path = "../logger" } [profile.release] debug = true diff --git a/stratum/src/lib.rs b/stratum/src/lib.rs index 8aac33655..0042ab1e9 100644 --- a/stratum/src/lib.rs +++ b/stratum/src/lib.rs @@ -24,6 +24,7 @@ extern crate ethcore_util as util; extern crate ethcore_ipc as ipc; extern crate semver; extern crate futures; +extern crate ethcore_logger; #[cfg(test)] extern crate tokio_core; extern crate ethcore_devtools as devtools; @@ -327,6 +328,8 @@ mod tests { use tokio_core::io; use futures::{Future, future}; + use ethcore_logger::init_log; + pub struct VoidManager; impl JobDispatcher for VoidManager { @@ -335,32 +338,6 @@ mod tests { } } - lazy_static! { - static ref LOG_DUMMY: bool = { - use log::LogLevelFilter; - use env_logger::LogBuilder; - use std::env; - - let mut builder = LogBuilder::new(); - builder.filter(None, LogLevelFilter::Info); - - if let Ok(log) = env::var("RUST_LOG") { - builder.parse(&log); - } - - if let Ok(_) = builder.init() { - println!("logger initialized"); - } - true - }; - } - - /// Intialize log with default settings - #[cfg(test)] - fn init_log() { - let _ = *LOG_DUMMY; - } - fn dummy_request(addr: &SocketAddr, data: &str) -> Vec { let mut core = Core::new().expect("Tokio Core should be created with no errors"); let mut buffer = vec![0u8; 2048]; diff --git a/stratum/src/traits.rs b/stratum/src/traits.rs index af5be2cbc..c2c522b3b 100644 --- a/stratum/src/traits.rs +++ b/stratum/src/traits.rs @@ -42,8 +42,8 @@ impl From for Error { } } -#[ipc(client_ident="RemoteJobDispatcher")] /// Interface that can provide pow/blockchain-specific responses for the clients +#[ipc(client_ident="RemoteJobDispatcher")] pub trait JobDispatcher: Send + Sync { // json for initial client handshake fn initial(&self) -> Option { None } @@ -55,8 +55,8 @@ pub trait JobDispatcher: Send + Sync { fn submit(&self, payload: Vec) -> Result<(), Error>; } -#[ipc(client_ident="RemoteWorkHandler")] /// Interface that can handle requests to push job for workers +#[ipc(client_ident="RemoteWorkHandler")] pub trait PushWorkHandler: Send + Sync { /// push the same work package for all workers (`payload`: json of pow-specific set of work specification) fn push_work_all(&self, payload: String) -> Result<(), Error>; diff --git a/updater/Cargo.toml b/updater/Cargo.toml index c0738cc59..53088d030 100644 --- a/updater/Cargo.toml +++ b/updater/Cargo.toml @@ -20,6 +20,7 @@ parity-hash-fetch = { path = "../hash-fetch" } ipc-common-types = { path = "../ipc-common-types" } ethcore-ipc = { path = "../ipc/rpc" } parity-reactor = { path = "../util/reactor" } +path = { path = "../util/path" } [profile.release] debug = true diff --git a/updater/src/lib.rs b/updater/src/lib.rs index 7d7146d7e..730af956d 100644 --- a/updater/src/lib.rs +++ b/updater/src/lib.rs @@ -26,6 +26,7 @@ extern crate ethsync; extern crate ethcore_ipc as ipc; extern crate target_info; extern crate parity_reactor; +extern crate path; mod updater; mod operations; diff --git a/updater/src/updater.rs b/updater/src/updater.rs index c2bc98273..5a4e2e1c9 100644 --- a/updater/src/updater.rs +++ b/updater/src/updater.rs @@ -21,7 +21,7 @@ use std::path::{PathBuf}; use target_info::Target; use util::misc; use ipc_common_types::{VersionInfo, ReleaseTrack}; -use util::path::restrict_permissions_owner; +use path::restrict_permissions_owner; use util::{Address, H160, H256, Mutex, Bytes}; use ethsync::{SyncProvider}; use ethcore::client::{BlockId, BlockChainClient, ChainNotify}; diff --git a/util/Cargo.toml b/util/Cargo.toml index d32d2519a..df34ccbfb 100644 --- a/util/Cargo.toml +++ b/util/Cargo.toml @@ -11,11 +11,9 @@ build = "build.rs" log = "0.3" env_logger = "0.3" rustc-serialize = "0.3" -arrayvec = "0.3" rand = "0.3.12" time = "0.1.34" rocksdb = { git = "https://github.com/ethcore/rust-rocksdb" } -lazy_static = "0.2" eth-secp256k1 = { git = "https://github.com/ethcore/rust-secp256k1" } rust-crypto = "0.2.34" elastic-array = { git = "https://github.com/ethcore/elastic-array" } @@ -32,11 +30,12 @@ ethcore-bigint = { path = "bigint" } parking_lot = "0.3" using_queue = { path = "using_queue" } table = { path = "table" } -ansi_term = "0.7" +ansi_term = "0.9" tiny-keccak= "1.0" ethcore-bloom-journal = { path = "bloom" } regex = "0.1" lru-cache = "0.1.0" +ethcore-logger = { path = "../logger" } [features] default = [] diff --git a/util/network/Cargo.toml b/util/network/Cargo.toml index 7fced467a..2f1ac81d3 100644 --- a/util/network/Cargo.toml +++ b/util/network/Cargo.toml @@ -19,7 +19,7 @@ clippy = { version = "0.0.103", optional = true} igd = "0.5.0" libc = "0.2.7" parking_lot = "0.3" -ansi_term = "0.7" +ansi_term = "0.9" rustc-serialize = "0.3" ethcore-io = { path = "../io" } ethcore-util = { path = ".." } @@ -27,6 +27,8 @@ ethcore-devtools = { path = "../../devtools" } ethkey = { path = "../../ethkey" } ethcrypto = { path = "../../ethcrypto" } rlp = { path = "../rlp" } +path = { path = "../path" } +ethcore-logger = { path ="../../logger" } [features] default = [] diff --git a/util/network/src/host.rs b/util/network/src/host.rs index b64301369..bb4b4fb1e 100644 --- a/util/network/src/host.rs +++ b/util/network/src/host.rs @@ -40,7 +40,7 @@ use node_table::*; use stats::NetworkStats; use discovery::{Discovery, TableUpdates, NodeEntry}; use ip_utils::{map_external_address, select_public_address}; -use util::path::restrict_permissions_owner; +use path::restrict_permissions_owner; use parking_lot::{Mutex, RwLock}; type Slab = ::slab::Slab; diff --git a/util/network/src/lib.rs b/util/network/src/lib.rs index 862200fa3..c4cc524f4 100644 --- a/util/network/src/lib.rs +++ b/util/network/src/lib.rs @@ -71,6 +71,8 @@ extern crate ethkey; extern crate ethcrypto as crypto; extern crate rlp; extern crate bytes; +extern crate path; +extern crate ethcore_logger; #[macro_use] extern crate log; diff --git a/util/network/src/tests.rs b/util/network/src/tests.rs index fba8f6eb4..692dd94a0 100644 --- a/util/network/src/tests.rs +++ b/util/network/src/tests.rs @@ -98,7 +98,7 @@ fn net_service() { #[test] fn net_connect() { - ::util::log::init_log(); + ::ethcore_logger::init_log(); let key1 = Random.generate().unwrap(); let mut config1 = NetworkConfiguration::new_local(); config1.use_secret = Some(key1.secret().clone()); diff --git a/util/path/Cargo.toml b/util/path/Cargo.toml new file mode 100644 index 000000000..7df3917b1 --- /dev/null +++ b/util/path/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "path" +version = "0.1.0" +authors = ["debris "] + +[dependencies] diff --git a/util/src/path.rs b/util/path/src/lib.rs similarity index 100% rename from util/src/path.rs rename to util/path/src/lib.rs diff --git a/util/src/journaldb/earlymergedb.rs b/util/src/journaldb/earlymergedb.rs index f484a623a..bd05d5fc1 100644 --- a/util/src/journaldb/earlymergedb.rs +++ b/util/src/journaldb/earlymergedb.rs @@ -553,7 +553,7 @@ mod tests { use hashdb::{HashDB, DBValue}; use super::*; use super::super::traits::JournalDB; - use log::init_log; + use ethcore_logger::init_log; use kvdb::{DatabaseConfig}; #[test] diff --git a/util/src/journaldb/overlayrecentdb.rs b/util/src/journaldb/overlayrecentdb.rs index 90f7acfcf..e8095e71e 100644 --- a/util/src/journaldb/overlayrecentdb.rs +++ b/util/src/journaldb/overlayrecentdb.rs @@ -456,7 +456,7 @@ mod tests { use common::*; use super::*; use hashdb::{HashDB, DBValue}; - use log::init_log; + use ethcore_logger::init_log; use journaldb::JournalDB; use kvdb::Database; diff --git a/util/src/lib.rs b/util/src/lib.rs index 4e46dbc24..93e03c8b1 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -93,7 +93,6 @@ extern crate rocksdb; extern crate env_logger; extern crate crypto as rcrypto; extern crate secp256k1; -extern crate arrayvec; extern crate elastic_array; extern crate time; extern crate ethcore_devtools as devtools; @@ -108,9 +107,8 @@ extern crate regex; extern crate lru_cache; extern crate heapsize; extern crate itertools; +extern crate ethcore_logger; -#[macro_use] -extern crate lazy_static; #[macro_use] extern crate log as rlog; @@ -137,8 +135,6 @@ pub mod trie; pub mod nibbleslice; pub mod nibblevec; pub mod semantic_version; -pub mod log; -pub mod path; pub mod snappy; pub mod cache; mod timer; @@ -153,9 +149,9 @@ pub use triehash::*; pub use trie::{Trie, TrieMut, TrieDB, TrieDBMut, TrieFactory, TrieError, SecTrieDB, SecTrieDBMut}; pub use nibbleslice::*; pub use semantic_version::*; -pub use log::*; pub use kvdb::*; pub use timer::*; +pub use ansi_term::{Colour, Style}; /// 160-bit integer representing account address pub type Address = H160; diff --git a/util/src/trie/triedbmut.rs b/util/src/trie/triedbmut.rs index 10d7f3aa6..c5f2a739b 100644 --- a/util/src/trie/triedbmut.rs +++ b/util/src/trie/triedbmut.rs @@ -958,7 +958,7 @@ mod tests { #[test] fn playpen() { - ::log::init_log(); + ::ethcore_logger::init_log(); let mut seed = H256::new(); for test_i in 0..10 {