From 13bb0cadc0eea1c54bd4b59903be85fc5ae8eafa Mon Sep 17 00:00:00 2001 From: Harshita Yadav Date: Thu, 29 Jan 2026 19:21:46 +0530 Subject: [PATCH 1/2] Fix Promise to generate non-generic JSPromise --- web_generator/lib/src/translator.dart | 11 ++++++++--- web_generator/test/integration/idl/methods_input.idl | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/web_generator/lib/src/translator.dart b/web_generator/lib/src/translator.dart index 712571b0..e539c86c 100644 --- a/web_generator/lib/src/translator.dart +++ b/web_generator/lib/src/translator.dart @@ -992,10 +992,15 @@ class Translator { final typeArguments = []; if (typeParameter != null && (dartType == 'JSArray' || dartType == 'JSPromise')) { - typeArguments.add( - _typeReference(typeParameter, onlyEmitInteropTypes: true), - ); + // Issue #397: JSVoid does not extend JSAny, so it must not be used + // as a type argument (e.g. Promise → JSPromise). + if (typeParameter.type != 'JSVoid') { + typeArguments.add( + _typeReference(typeParameter, onlyEmitInteropTypes: true), + ); + } } + final url = _urlForType(dartType); return code.TypeReference( (b) => b diff --git a/web_generator/test/integration/idl/methods_input.idl b/web_generator/test/integration/idl/methods_input.idl index 6e97649e..39325535 100644 --- a/web_generator/test/integration/idl/methods_input.idl +++ b/web_generator/test/integration/idl/methods_input.idl @@ -32,3 +32,6 @@ interface Button { undefined setDimensions(Dimensions size); undefined setDimensions(unsigned long width, unsigned long height); }; +interface VoidPromiseTest { + Promise doSomething(); +}; From 7925a7c0dfda5111ad155c1c44fcd152c9314b79 Mon Sep 17 00:00:00 2001 From: Harshita Yadav Date: Sat, 31 Jan 2026 13:58:10 +0530 Subject: [PATCH 2/2] Update expected output for Promise integration test --- web_generator/test/integration/idl/methods_expected.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web_generator/test/integration/idl/methods_expected.dart b/web_generator/test/integration/idl/methods_expected.dart index 1420712d..585571e8 100644 --- a/web_generator/test/integration/idl/methods_expected.dart +++ b/web_generator/test/integration/idl/methods_expected.dart @@ -32,3 +32,7 @@ extension type Button._(JSObject _) implements JSObject { external bool isMouseOver(); external void setDimensions(JSAny sizeOrWidth, [int height]); } +@JS() +extension type VoidPromiseTest._(JSObject _) implements JSObject { + external JSPromise doSomething(); +}