Skip to content

Commit 1883648

Browse files
committed
Fix wasm?
1 parent 2b92248 commit 1883648

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

objdiff-wasm/src/api.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ use alloc::{
99
};
1010
use core::cell::RefCell;
1111

12-
use objdiff_core::{diff, obj::{self, DiffSide}};
12+
use objdiff_core::{
13+
diff,
14+
obj,
15+
};
1316
use regex::{Regex, RegexBuilder};
1417
use xxhash_rust::xxh3::xxh3_64;
1518

@@ -27,6 +30,7 @@ use exports::objdiff::core::{
2730
DiffConfigBorrow, DiffResult, Guest as GuestDiff, GuestDiffConfig, GuestObject,
2831
GuestObjectDiff, MappingConfig, Object, ObjectBorrow, ObjectDiff, ObjectDiffBorrow,
2932
SymbolFlags, SymbolInfo, SymbolKind, SymbolRef,
33+
DiffSide,
3034
},
3135
display::{
3236
ContextItem, ContextItemCopy, ContextItemNavigate, DiffText, DiffTextColor, DiffTextOpcode,
@@ -470,8 +474,21 @@ unsafe impl Sync for ObjectCache {}
470474

471475
static OBJECT_CACHE: ObjectCache = ObjectCache::new();
472476

477+
impl From<DiffSide> for objdiff_core::obj::DiffSide {
478+
fn from(value: DiffSide) -> Self {
479+
match value {
480+
DiffSide::Target => Self::Target,
481+
DiffSide::Base => Self::Base,
482+
}
483+
}
484+
}
485+
473486
impl GuestObject for ResourceObject {
474-
fn parse(data: Vec<u8>, diff_config: DiffConfigBorrow, diff_side: DiffSide) -> Result<Object, String> {
487+
fn parse(
488+
data: Vec<u8>,
489+
diff_config: DiffConfigBorrow,
490+
diff_side: DiffSide,
491+
) -> Result<Object, String> {
475492
let hash = xxh3_64(&data);
476493
let mut cached = None;
477494
OBJECT_CACHE.borrow_mut().retain(|c| {
@@ -487,7 +504,8 @@ impl GuestObject for ResourceObject {
487504
return Ok(Object::new(ResourceObject(obj, hash)));
488505
}
489506
let diff_config = diff_config.get::<ResourceDiffConfig>().0.borrow();
490-
let obj = Rc::new(obj::read::parse(&data, &diff_config, diff_side).map_err(|e| e.to_string())?);
507+
let obj =
508+
Rc::new(obj::read::parse(&data, &diff_config, diff_side.into()).map_err(|e| e.to_string())?);
491509
OBJECT_CACHE.borrow_mut().push(CachedObject(Rc::downgrade(&obj), hash));
492510
Ok(Object::new(ResourceObject(obj, hash)))
493511
}

objdiff-wasm/wit/objdiff.wit

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ interface diff {
1919
parse: static func(
2020
data: list<u8>,
2121
config: borrow<diff-config>,
22+
side: diff-side,
2223
) -> result<object, string>;
2324

2425
hash: func() -> u64;
@@ -80,6 +81,11 @@ interface diff {
8081
config: borrow<diff-config>,
8182
mapping: mapping-config,
8283
) -> result<diff-result, string>;
84+
85+
enum diff-side {
86+
target,
87+
base,
88+
}
8389
}
8490

8591
interface display {

0 commit comments

Comments
 (0)