Fix sync build.

This commit is contained in:
Stephen Chung 2021-03-06 22:07:20 +08:00
parent 4da5af8aae
commit e87f981674
3 changed files with 23 additions and 14 deletions

View File

@ -1195,18 +1195,24 @@ impl Dynamic {
match self.0 {
Union::Shared(_, _) => match crate::stdlib::mem::take(self).0 {
Union::Shared(cell, _) => {
let value = crate::fn_native::shared_take_or_clone(cell);
*self = crate::fn_native::shared_try_take(cell).map_or_else(
|cell| {
#[cfg(not(feature = "sync"))]
let value = cell.borrow();
#[cfg(feature = "sync")]
let value = cell.read().unwrap();
#[cfg(not(feature = "sync"))]
{
*self = value.into_inner();
}
#[cfg(feature = "sync")]
{
*self = value.into_inner().unwrap();
}
value.clone()
},
|value| {
#[cfg(not(feature = "sync"))]
return value.into_inner();
#[cfg(feature = "sync")]
return value.into_inner().unwrap();
},
)
}
_ => unreachable!(),
_ => unreachable!("self should be Shared"),
},
_ => (),
}

View File

@ -405,8 +405,8 @@ impl<'a> Target<'a> {
Self::LockGuard((r, _)) => **r = new_val,
Self::Value(_) => panic!("cannot update a value"),
#[cfg(not(feature = "no_index"))]
Self::StringChar(string, index, _) if string.is::<ImmutableString>() => {
let mut s = string.write_lock::<ImmutableString>().unwrap();
Self::StringChar(s, index, _) if s.is::<ImmutableString>() => {
let mut s = s.write_lock::<ImmutableString>().unwrap();
// Replace the character at the specified index position
let new_ch = new_val.as_char().map_err(|err| {
@ -426,7 +426,10 @@ impl<'a> Target<'a> {
}
}
#[cfg(not(feature = "no_index"))]
Self::StringChar(_, _, _) => unreachable!(),
Self::StringChar(s, _, _) => unreachable!(
"Target::StringChar should contain only a string, not {}",
s.type_name()
),
}
Ok(())

View File

@ -147,7 +147,7 @@ impl From<&crate::module::FuncInfo> for FnMetadata {
doc_comments: if info.func.is_script() {
#[cfg(feature = "no_function")]
{
unreachable!()
unreachable!("scripted functions should not exist under no_function")
}
#[cfg(not(feature = "no_function"))]
{