Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 9f51ee4

Browse files
committed
replace IThenable (closure extern) with PromiseLike (lib.d.ts)
1 parent 3bc7de5 commit 9f51ee4

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

src/main/java/com/google/javascript/cl2dts/DeclarationGenerator.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -633,19 +633,24 @@ public Void caseTemplatizedType(TemplatizedType type) {
633633
emit("[]");
634634
return null;
635635
}
636-
// Arguments<?> and NodeList<?> in es3 externs are correspondinly
637-
// IArguments and NodeList interfaces (not-parametrized) in lib.d.ts.
638-
// New* are temporary work-arounds for upstream externs.
639-
// TODO(rado): upgrade closure compiler and remove them.
640-
if (type.getDisplayName().equals("Arguments") ||
641-
type.getDisplayName().equals("NewArguments")) {
642-
emit("IArguments");
643-
return null;
644-
}
645-
if (type.getDisplayName().equals("NodeList") ||
646-
type.getDisplayName().equals("NewNodeList")) {
647-
emit("NodeList");
648-
return null;
636+
switch(type.getDisplayName()) {
637+
// Arguments<?> and NodeList<?> in es3 externs are correspondinly
638+
// IArguments and NodeList interfaces (not-parametrized) in lib.d.ts.
639+
// New* are temporary work-arounds for upstream externs.
640+
// TODO(rado): upgrade closure compiler and remove them.
641+
case "Arguments":
642+
case "NewArguments":{
643+
emit("IArguments");
644+
return null;
645+
}
646+
case "NodeList":
647+
case "NewNodeList": {
648+
emit("NodeList");
649+
return null;
650+
}
651+
case "IThenable": {
652+
templateTypeName = "PromiseLike";
653+
}
649654
}
650655
Iterator<JSType> it = type.getTemplateTypes().iterator();
651656
if (typeRegistry.getNativeType(OBJECT_TYPE).equals(referencedType)) {

src/test/java/com/google/javascript/cl2dts/types_with_externs.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ declare namespace ಠ_ಠ.cl2dts_internal.typesWithExterns {
1616
var c : NodeList | IArguments | { length : number } ;
1717
function id (x : NodeList | IArguments | { length : number } ) : NodeList | IArguments | { length : number } ;
1818
function topLevelFunction ( ...a : any [] ) : any ;
19+
interface ExtendsIThenable extends PromiseLike < any > {
20+
}
1921
}
2022
declare module 'goog:typesWithExterns' {
2123
import alias = ಠ_ಠ.cl2dts_internal.typesWithExterns;

src/test/java/com/google/javascript/cl2dts/types_with_externs.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,10 @@ typesWithExterns.id = function(x) { return x; }
9292
/**
9393
* @type {!Function}
9494
*/
95-
typesWithExterns.topLevelFunction = function() {};
95+
typesWithExterns.topLevelFunction = function() {};
96+
97+
/**
98+
* @interface
99+
* @extends {IThenable}
100+
*/
101+
typesWithExterns.ExtendsIThenable = function() {};

0 commit comments

Comments
 (0)