Skip to content

Commit d0a943f

Browse files
Merge pull request #209 from ryan-surname-p/alias-non_primitive
allow type aliasing of DefinedType
2 parents 30c8a73 + 783a30d commit d0a943f

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

crates/wac-graph/src/graph.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1668,7 +1668,14 @@ impl<'a> CompositionGraphEncoder<'a> {
16681668
if let DefinedType::Alias(aliased @ ValueType::Defined(_)) =
16691669
&self.0.types()[id]
16701670
{
1671-
(ty, state.current.type_indexes[&Type::Value(*aliased)])
1671+
if let Some(&index) =
1672+
// check if aliased had previously been exported
1673+
state.current.type_indexes.get(&Type::Value(*aliased))
1674+
{
1675+
(ty, index)
1676+
} else {
1677+
(ty, encoder.ty(state, ty, None))
1678+
}
16721679
} else {
16731680
(ty, encoder.ty(state, ty, None))
16741681
}

crates/wac-parser/tests/encoding/types.wac

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,10 @@ type m2 = m;
118118
type o2 = o;
119119
type p2 = p;
120120
type q2 = q;
121+
122+
// Test encoding of aliases to inline-created defined types
123+
type list-alias = list<u8>;
124+
type option-alias = option<string>;
125+
type result-alias = result<u32, string>;
126+
type tuple-alias = tuple<u8, u16>;
127+
type nested-list-alias = list<list<u8>>;

crates/wac-parser/tests/encoding/types.wac.result

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,17 @@
170170
(export $o2 (;58;) "o2" (type $o))
171171
(export $p2 (;59;) "p2" (type $p))
172172
(export $q2 (;60;) "q2" (type $q))
173+
(type (;61;) (list u8))
174+
(export $list-alias (;62;) "list-alias" (type 61))
175+
(type (;63;) (option string))
176+
(export $option-alias (;64;) "option-alias" (type 63))
177+
(type (;65;) (result u32 (error string)))
178+
(export $result-alias (;66;) "result-alias" (type 65))
179+
(type (;67;) (tuple u8 u16))
180+
(export $tuple-alias (;68;) "tuple-alias" (type 67))
181+
(type (;69;) (list u8))
182+
(type (;70;) (list 69))
183+
(export $nested-list-alias (;71;) "nested-list-alias" (type 70))
173184
(@producers
174185
(processed-by "wac-parser" "0.10.1")
175186
)

0 commit comments

Comments
 (0)