Merge pull request #1250 from ethcore/codegen-unwraps
codegen - avoid unwraps leading to compilation crash
This commit is contained in:
commit
7f9e8d0b48
@ -15,7 +15,7 @@ with-syntex = ["quasi/with-syntex", "quasi_codegen", "quasi_codegen/with-syntex"
|
|||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
quasi_codegen = { version = "0.11", optional = true }
|
quasi_codegen = { version = "0.11", optional = true }
|
||||||
syntex = { version = "*", optional = true }
|
syntex = { version = "0.33", optional = true }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
aster = { version = "0.17", default-features = false }
|
aster = { version = "0.17", default-features = false }
|
||||||
|
@ -89,7 +89,7 @@ fn serialize_item(
|
|||||||
let (size_expr, read_expr, write_expr) =
|
let (size_expr, read_expr, write_expr) =
|
||||||
(binary_expressions.size, binary_expressions.read, binary_expressions.write);
|
(binary_expressions.size, binary_expressions.read, binary_expressions.write);
|
||||||
|
|
||||||
Ok(quote_item!(cx,
|
match quote_item!(cx,
|
||||||
impl $generics ::ipc::BinaryConvertable for $ty $where_clause {
|
impl $generics ::ipc::BinaryConvertable for $ty $where_clause {
|
||||||
fn size(&self) -> usize {
|
fn size(&self) -> usize {
|
||||||
$size_expr
|
$size_expr
|
||||||
@ -106,8 +106,16 @@ fn serialize_item(
|
|||||||
fn len_params() -> usize {
|
fn len_params() -> usize {
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
).unwrap())
|
{
|
||||||
|
Some(item) => Ok(item),
|
||||||
|
None => {
|
||||||
|
cx.span_err(
|
||||||
|
item.span,
|
||||||
|
"syntax error expanding serialization implementation");
|
||||||
|
Err(Error)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unreachable_code)]
|
#[allow(unreachable_code)]
|
||||||
|
@ -19,20 +19,20 @@ extern crate ethcore_ipc_codegen as codegen;
|
|||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
use std::process::exit;
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let out_dir = env::var_os("OUT_DIR").unwrap();
|
let out_dir = env::var_os("OUT_DIR").unwrap();
|
||||||
|
|
||||||
// ipc pass
|
// rpc pass
|
||||||
{
|
if {
|
||||||
let src = Path::new("nested.rs.in");
|
let src = Path::new("nested.rs.in");
|
||||||
let dst = Path::new(&out_dir).join("nested_ipc.rs");
|
let dst = Path::new(&out_dir).join("nested_ipc.rs");
|
||||||
let mut registry = syntex::Registry::new();
|
let mut registry = syntex::Registry::new();
|
||||||
codegen::register(&mut registry);
|
codegen::register(&mut registry);
|
||||||
registry.expand("", &src, &dst).unwrap();
|
registry.expand("", &src, &dst).is_ok()
|
||||||
}
|
}
|
||||||
|
// serialization pass
|
||||||
// serde pass
|
|
||||||
{
|
{
|
||||||
let src = Path::new(&out_dir).join("nested_ipc.rs");
|
let src = Path::new(&out_dir).join("nested_ipc.rs");
|
||||||
let dst = Path::new(&out_dir).join("nested_cg.rs");
|
let dst = Path::new(&out_dir).join("nested_cg.rs");
|
||||||
@ -41,16 +41,15 @@ pub fn main() {
|
|||||||
registry.expand("", &src, &dst).unwrap();
|
registry.expand("", &src, &dst).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ipc pass
|
// rpc pass
|
||||||
{
|
if {
|
||||||
let src = Path::new("service.rs.in");
|
let src = Path::new("service.rs.in");
|
||||||
let dst = Path::new(&out_dir).join("service_ipc.rs");
|
let dst = Path::new(&out_dir).join("service_ipc.rs");
|
||||||
let mut registry = syntex::Registry::new();
|
let mut registry = syntex::Registry::new();
|
||||||
codegen::register(&mut registry);
|
codegen::register(&mut registry);
|
||||||
registry.expand("", &src, &dst).unwrap();
|
registry.expand("", &src, &dst).is_ok()
|
||||||
}
|
}
|
||||||
|
// serialization pass
|
||||||
// serde pass
|
|
||||||
{
|
{
|
||||||
let src = Path::new(&out_dir).join("service_ipc.rs");
|
let src = Path::new(&out_dir).join("service_ipc.rs");
|
||||||
let dst = Path::new(&out_dir).join("service_cg.rs");
|
let dst = Path::new(&out_dir).join("service_cg.rs");
|
||||||
@ -59,13 +58,15 @@ pub fn main() {
|
|||||||
registry.expand("", &src, &dst).unwrap();
|
registry.expand("", &src, &dst).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rpc pass
|
||||||
// ipc pass
|
|
||||||
{
|
{
|
||||||
let src = Path::new("binary.rs.in");
|
let src = Path::new("binary.rs.in");
|
||||||
let dst = Path::new(&out_dir).join("binary.rs");
|
let dst = Path::new(&out_dir).join("binary.rs");
|
||||||
let mut registry = syntex::Registry::new();
|
let mut registry = syntex::Registry::new();
|
||||||
codegen::register(&mut registry);
|
codegen::register(&mut registry);
|
||||||
registry.expand("", &src, &dst).unwrap();
|
if let Err(err_msg) = registry.expand("", &src, &dst) {
|
||||||
|
println!("error: {}", err_msg);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user