From 3abfefe960c3f775b9dc86f5868d67857851db9c Mon Sep 17 00:00:00 2001 From: Лач Date: Fri, 17 Jul 2020 15:01:12 +0000 Subject: [PATCH] style: fix all clippy warnings --- --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ .vscode cache + +jsonnet-cpp --- a/bindings/jsonnet/src/lib.rs +++ b/bindings/jsonnet/src/lib.rs @@ -65,11 +65,18 @@ } #[no_mangle] -pub extern "C" fn jsonnet_make() -> Box { +pub extern "C" fn jsonnet_make() -> *mut EvaluationState { let state = EvaluationState::default(); state.with_stdlib(); state.settings_mut().import_resolver = Box::new(NativeImportResolver::default()); - Box::new(state) + Box::into_raw(Box::new(state)) +} + +/// # Safety +#[no_mangle] +#[allow(clippy::boxed_local)] +pub unsafe extern "C" fn jsonnet_destroy(vm: *mut EvaluationState) { + Box::from_raw(vm); } #[no_mangle] @@ -133,31 +140,31 @@ pub unsafe extern "C" fn jsonnet_json_make_string( _vm: &EvaluationState, v: *const c_char, -) -> Box { +) -> *mut Val { let cstr = CStr::from_ptr(v); let str = cstr.to_str().unwrap(); - Box::new(Val::Str(str.into())) + Box::into_raw(Box::new(Val::Str(str.into()))) } #[no_mangle] -pub extern "C" fn jsonnet_json_make_number(_vm: &EvaluationState, v: c_double) -> Box { - Box::new(Val::Num(v)) +pub extern "C" fn jsonnet_json_make_number(_vm: &EvaluationState, v: c_double) -> *mut Val { + Box::into_raw(Box::new(Val::Num(v))) } #[no_mangle] -pub extern "C" fn jsonnet_json_make_bool(_vm: &EvaluationState, v: c_int) -> Box { +pub extern "C" fn jsonnet_json_make_bool(_vm: &EvaluationState, v: c_int) -> *mut Val { assert!(v == 0 || v == 1); - Box::new(Val::Bool(v == 1)) + Box::into_raw(Box::new(Val::Bool(v == 1))) } #[no_mangle] -pub extern "C" fn jsonnet_json_make_null(_vm: &EvaluationState) -> Box { - Box::new(Val::Null) +pub extern "C" fn jsonnet_json_make_null(_vm: &EvaluationState) -> *mut Val { + Box::into_raw(Box::new(Val::Null)) } #[no_mangle] -pub extern "C" fn jsonnet_json_make_array(_vm: &EvaluationState) -> Box { - Box::new(Val::Arr(Rc::new(Vec::new()))) +pub extern "C" fn jsonnet_json_make_array(_vm: &EvaluationState) -> *mut Val { + Box::into_raw(Box::new(Val::Arr(Rc::new(Vec::new())))) } #[no_mangle] @@ -175,8 +182,8 @@ } #[no_mangle] -pub extern "C" fn jsonnet_json_make_object(_vm: &EvaluationState) -> Box { - Box::new(Val::Obj(ObjValue::new_empty())) +pub extern "C" fn jsonnet_json_make_object(_vm: &EvaluationState) -> *mut Val { + Box::into_raw(Box::new(Val::Obj(ObjValue::new_empty()))) } /// # Safety @@ -233,9 +240,12 @@ std::alloc::realloc(buf, old_layout, sz) } +/// # Safety #[no_mangle] #[allow(clippy::boxed_local)] -pub extern "C" fn jsonnet_json_destroy(_vm: &EvaluationState, _v: Box) {} +pub unsafe extern "C" fn jsonnet_json_destroy(_vm: &EvaluationState, v: *mut Val) { + Box::from_raw(v); +} #[no_mangle] pub extern "C" fn jsonnet_import_callback() { @@ -362,7 +372,3 @@ pub extern "C" fn jsonnet_evaluate_snippet_stream() { todo!() } - -#[no_mangle] -#[allow(clippy::boxed_local)] -pub extern "C" fn jsonnet_destroy(_vm: Box) {} --- a/crates/jrsonnet-trace/src/lib.rs +++ b/crates/jrsonnet-trace/src/lib.rs @@ -1,7 +1,4 @@ -use jrsonnet_evaluator::{ - trace::{offset_to_location, CodeLocation}, - EvaluationState, LocError, -}; +use jrsonnet_evaluator::{trace::CodeLocation, EvaluationState, LocError}; use std::path::PathBuf; /// How paths should be displayed -- gitstuff