Index: lib/src/codegen/js_interop.dart |
diff --git a/lib/src/codegen/js_interop.dart b/lib/src/codegen/js_interop.dart |
index 777a0097bde7e47720d2dd05638683a0c11c2baf..470efed9574a6fa42777929b2a6a8355c44589f1 100644 |
--- a/lib/src/codegen/js_interop.dart |
+++ b/lib/src/codegen/js_interop.dart |
@@ -48,3 +48,13 @@ bool isJSExportNameAnnotation(DartObjectImpl value) { |
bool isJsPeerInterface(DartObjectImpl value) => |
value.type.name == 'JsPeerInterface'; |
+ |
+/// Whether this invocation represents a `genericTypeConstructor` intrinsic |
+/// call, meant to be used only inside `JS` templates. |
+/// |
+/// That intrinsic function is only to be used in JS expressions inside the SDK. |
+/// For instance `JS('', '#(type)', genericTypeConstructor(List))` will |
+/// generate `core.List$(type)`. |
+bool isGenericTypeConstructorIntrinsic(MethodInvocation i) => |
+ _isJsLibType('genericTypeConstructor', i.methodName?.bestElement) && |
+ i.argumentList.arguments.length == 1; |