@@ -1324,11 +1324,50 @@ describe("Promise.race", () => {
13241324 } ) ;
13251325} ) ;
13261326
1327- // https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1659
1328- test ( "finally returns a different promise instance" , ( ) => {
1329- util . testFunction `
1330- const p1 = new Promise(() => {});
1331- const p2 = p1.finally();
1332- return p1 === p2;
1333- ` . expectToMatchJsResult ( ) ;
1327+ // https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1660
1328+ describe ( "Promise.finally" , ( ) => {
1329+ test ( "returns a different promise instance" , ( ) => {
1330+ util . testFunction `
1331+ const p1 = new Promise(() => {});
1332+ const p2 = p1.finally();
1333+ return p1 === p2;
1334+ ` . expectToMatchJsResult ( ) ;
1335+ } ) ;
1336+
1337+ test ( "preserves fulfillment value" , ( ) => {
1338+ util . testFunction `
1339+ const result = Promise.resolve(42).finally(() => {}) as any;
1340+ return result.value;
1341+ ` . expectToEqual ( 42 ) ;
1342+ } ) ;
1343+
1344+ test ( "preserves rejection reason" , ( ) => {
1345+ util . testFunction `
1346+ const result = Promise.reject("err").finally(() => {}) as any;
1347+ return result.rejectionReason;
1348+ ` . expectToEqual ( "err" ) ;
1349+ } ) ;
1350+
1351+ test ( "callback executes on fulfillment" , ( ) => {
1352+ util . testFunction `
1353+ let called = false;
1354+ Promise.resolve(1).finally(() => { called = true; });
1355+ return called;
1356+ ` . expectToEqual ( true ) ;
1357+ } ) ;
1358+
1359+ test ( "callback executes on rejection" , ( ) => {
1360+ util . testFunction `
1361+ let called = false;
1362+ Promise.reject("err").finally(() => { called = true; });
1363+ return called;
1364+ ` . expectToEqual ( true ) ;
1365+ } ) ;
1366+
1367+ test ( "finally with undefined callback" , ( ) => {
1368+ util . testFunction `
1369+ const result = Promise.resolve(99).finally(undefined) as any;
1370+ return result.value;
1371+ ` . expectToEqual ( 99 ) ;
1372+ } ) ;
13341373} ) ;
0 commit comments