Skip to content

Commit 6f054cb

Browse files
committed
style(marshal): Consistently check in order: remotable, promise, error
1 parent e295b77 commit 6f054cb

File tree

1 file changed

+22
-27
lines changed

1 file changed

+22
-27
lines changed

packages/marshal/src/encodeToCapData.js

+22-27
Original file line numberDiff line numberDiff line change
@@ -227,25 +227,25 @@ export const makeEncodeToCapData = ({
227227
)} ${q('slot')}: ${encoded}`,
228228
);
229229
}
230-
case 'error': {
231-
const encoded = encodeErrorToCapData(passable, encodeToCapDataRecur);
232-
if (qclassMatches(encoded, 'error')) {
230+
case 'promise': {
231+
const encoded = encodePromiseToCapData(passable, encodeToCapDataRecur);
232+
if (qclassMatches(encoded, 'slot')) {
233233
return encoded;
234234
}
235235
assert.fail(
236-
X`internal: Error encoding must be an object with ${q(QCLASS)} ${q(
237-
'error',
236+
X`internal: Promise encoding must be an object with ${q(QCLASS)} ${q(
237+
'slot',
238238
)}: ${encoded}`,
239239
);
240240
}
241-
case 'promise': {
242-
const encoded = encodePromiseToCapData(passable, encodeToCapDataRecur);
243-
if (qclassMatches(encoded, 'slot')) {
241+
case 'error': {
242+
const encoded = encodeErrorToCapData(passable, encodeToCapDataRecur);
243+
if (qclassMatches(encoded, 'error')) {
244244
return encoded;
245245
}
246246
assert.fail(
247-
X`internal: Promise encoding must be an object with ${q(QCLASS)} ${q(
248-
'slot',
247+
X`internal: Error encoding must be an object with ${q(QCLASS)} ${q(
248+
'error',
249249
)}: ${encoded}`,
250250
);
251251
}
@@ -396,7 +396,6 @@ export const makeDecodeFromCapData = ({
396396
const { name } = jsonEncoded;
397397
return passableSymbolForName(name);
398398
}
399-
400399
case 'tagged': {
401400
// Using @ts-ignore rather than @ts-expect-error below because
402401
// with @ts-expect-error I get a red underline in vscode, but
@@ -406,20 +405,6 @@ export const makeDecodeFromCapData = ({
406405
const { tag, payload } = jsonEncoded;
407406
return makeTagged(tag, decodeFromCapData(payload));
408407
}
409-
410-
case 'error': {
411-
const decoded = decodeErrorFromCapData(
412-
jsonEncoded,
413-
decodeFromCapData,
414-
);
415-
if (passStyleOf(decoded) === 'error') {
416-
return decoded;
417-
}
418-
assert.fail(
419-
X`internal: decodeErrorFromCapData option must return an error: ${decoded}`,
420-
);
421-
}
422-
423408
case 'slot': {
424409
// See note above about how the current encoding cannot reliably
425410
// distinguish which we should call, so in the non-default case
@@ -436,7 +421,18 @@ export const makeDecodeFromCapData = ({
436421
X`internal: decodeRemotableFromCapData option must return a remotable or promise: ${decoded}`,
437422
);
438423
}
439-
424+
case 'error': {
425+
const decoded = decodeErrorFromCapData(
426+
jsonEncoded,
427+
decodeFromCapData,
428+
);
429+
if (passStyleOf(decoded) === 'error') {
430+
return decoded;
431+
}
432+
assert.fail(
433+
X`internal: decodeErrorFromCapData option must return an error: ${decoded}`,
434+
);
435+
}
440436
case 'hilbert': {
441437
// Using @ts-ignore rather than @ts-expect-error below because
442438
// with @ts-expect-error I get a red underline in vscode, but
@@ -467,7 +463,6 @@ export const makeDecodeFromCapData = ({
467463
}
468464
return result;
469465
}
470-
471466
// @ts-expect-error This is the error case we're testing for
472467
case 'ibid': {
473468
assert.fail(

0 commit comments

Comments
 (0)