support named tuples where not all tuple elements are named

This commit is contained in:
Erik Krogh Kristensen
2020-08-17 16:20:26 +02:00
parent 83ed41b247
commit 73d1fac88e
3 changed files with 21 additions and 7 deletions

View File

@@ -2183,14 +2183,15 @@ public class TypeScriptASTConverter {
}
private Node convertTupleType(JsonObject node, SourceLocation loc) throws ParseError {
List<JsonElement> elements = new ArrayList<>();
((JsonArray)node.get("elements")).iterator().forEachRemaining(elements::add);
List<Identifier> names = new ArrayList<>();
List<Identifier> names = convertNodes(elements.stream()
.filter(n -> getKind(n).equals("NamedTupleMember"))
.map(n -> n.getAsJsonObject().get("name"))
.collect(Collectors.toList())
);
for (JsonElement element : node.get("elements").getAsJsonArray()) {
Identifier id = null;
if (getKind(element).equals("NamedTupleMember")) {
id = (Identifier)convertNode(element.getAsJsonObject().get("name").getAsJsonObject());
}
names.add(id);
}
return new TupleTypeExpr(loc, convertChildrenAsTypes(node, "elements"), names);
}