Skip to content

Commit c87a13a

Browse files
authored
Change gen JSON output from stream to array (#769)
1 parent 1fbeebe commit c87a13a

1 file changed

Lines changed: 118 additions & 114 deletions

File tree

soroban-spec/src/gen/json.rs

Lines changed: 118 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,8 @@ pub fn generate_from_wasm(wasm: &[u8]) -> Result<String, FromWasmError> {
5050
}
5151

5252
pub fn generate(spec: &[ScSpecEntry]) -> String {
53-
spec.iter()
54-
.map(Entry::from)
55-
.map(|e| serde_json::to_string_pretty(&e).expect("serialization of the spec entries should not have any failure cases as all keys are strings and the serialize implementations are derived"))
56-
.collect()
53+
let collected: Vec<_> = spec.iter().map(Entry::from).collect();
54+
serde_json::to_string_pretty(&collected).expect("serialization of the spec entries should not have any failure cases as all keys are strings and the serialize implementations are derived")
5755
}
5856

5957
#[cfg(test)]
@@ -71,126 +69,132 @@ mod test {
7169
let json = generate(&entries);
7270
assert_eq!(
7371
json,
74-
r#"{
75-
"type": "enum",
76-
"name": "UdtEnum2",
77-
"cases": [
78-
{
79-
"name": "A",
80-
"value": 10
81-
},
82-
{
83-
"name": "B",
84-
"value": 15
85-
}
86-
]
87-
}{
88-
"type": "union",
89-
"name": "UdtEnum",
90-
"cases": [
91-
{
92-
"name": "UdtA",
93-
"values": []
94-
},
95-
{
96-
"name": "UdtB",
97-
"values": [
98-
{
99-
"type": "custom",
100-
"name": "UdtStruct"
72+
r#"[
73+
{
74+
"type": "enum",
75+
"name": "UdtEnum2",
76+
"cases": [
77+
{
78+
"name": "A",
79+
"value": 10
80+
},
81+
{
82+
"name": "B",
83+
"value": 15
84+
}
85+
]
86+
},
87+
{
88+
"type": "union",
89+
"name": "UdtEnum",
90+
"cases": [
91+
{
92+
"name": "UdtA",
93+
"values": []
94+
},
95+
{
96+
"name": "UdtB",
97+
"values": [
98+
{
99+
"type": "custom",
100+
"name": "UdtStruct"
101+
}
102+
]
103+
},
104+
{
105+
"name": "UdtC",
106+
"values": [
107+
{
108+
"type": "custom",
109+
"name": "UdtEnum2"
110+
}
111+
]
112+
},
113+
{
114+
"name": "UdtD",
115+
"values": [
116+
{
117+
"type": "custom",
118+
"name": "UdtTuple"
119+
}
120+
]
121+
}
122+
]
123+
},
124+
{
125+
"type": "struct",
126+
"name": "UdtTuple",
127+
"fields": [
128+
{
129+
"name": "0",
130+
"value": {
131+
"type": "i64"
101132
}
102-
]
103-
},
104-
{
105-
"name": "UdtC",
106-
"values": [
107-
{
108-
"type": "custom",
109-
"name": "UdtEnum2"
133+
},
134+
{
135+
"name": "1",
136+
"value": {
137+
"type": "vec",
138+
"element": {
139+
"type": "i64"
140+
}
110141
}
111-
]
112-
},
113-
{
114-
"name": "UdtD",
115-
"values": [
116-
{
117-
"type": "custom",
118-
"name": "UdtTuple"
119-
}
120-
]
121-
}
122-
]
123-
}{
124-
"type": "struct",
125-
"name": "UdtTuple",
126-
"fields": [
127-
{
128-
"name": "0",
129-
"value": {
130-
"type": "i64"
131142
}
132-
},
133-
{
134-
"name": "1",
135-
"value": {
136-
"type": "vec",
137-
"element": {
143+
]
144+
},
145+
{
146+
"type": "struct",
147+
"name": "UdtStruct",
148+
"fields": [
149+
{
150+
"name": "a",
151+
"value": {
138152
"type": "i64"
139153
}
140-
}
141-
}
142-
]
143-
}{
144-
"type": "struct",
145-
"name": "UdtStruct",
146-
"fields": [
147-
{
148-
"name": "a",
149-
"value": {
150-
"type": "i64"
151-
}
152-
},
153-
{
154-
"name": "b",
155-
"value": {
156-
"type": "i64"
157-
}
158-
},
159-
{
160-
"name": "c",
161-
"value": {
162-
"type": "vec",
163-
"element": {
154+
},
155+
{
156+
"name": "b",
157+
"value": {
164158
"type": "i64"
165159
}
160+
},
161+
{
162+
"name": "c",
163+
"value": {
164+
"type": "vec",
165+
"element": {
166+
"type": "i64"
167+
}
168+
}
166169
}
167-
}
168-
]
169-
}{
170-
"type": "function",
171-
"name": "add",
172-
"inputs": [
173-
{
174-
"name": "a",
175-
"value": {
176-
"type": "custom",
177-
"name": "UdtEnum"
170+
]
171+
},
172+
{
173+
"type": "function",
174+
"name": "add",
175+
"inputs": [
176+
{
177+
"name": "a",
178+
"value": {
179+
"type": "custom",
180+
"name": "UdtEnum"
181+
}
182+
},
183+
{
184+
"name": "b",
185+
"value": {
186+
"type": "custom",
187+
"name": "UdtEnum"
188+
}
178189
}
179-
},
180-
{
181-
"name": "b",
182-
"value": {
183-
"type": "custom",
184-
"name": "UdtEnum"
190+
],
191+
"outputs": [
192+
{
193+
"type": "i64"
185194
}
186-
}
187-
],
188-
"outputs": [
189-
{
190-
"type": "i64"
191-
}
192-
]
193-
}"#,
195+
]
196+
}
197+
]"#,
194198
);
195199
}
196200
}

0 commit comments

Comments
 (0)