smithy-lang / smithy

Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.
https://smithy.io
Apache License 2.0
1.7k stars 201 forks source link

Trait codegen doesn't like Document in collections #2312

Closed kubukoz closed 3 weeks ago

kubukoz commented 3 weeks ago

Tested against 1.49.0.

Example 1:

@trait()
list documents {
    member: Document
}
public static DocumentsTrait fromNode(Node node) {
    Builder builder = builder();
    node.expectArrayNode()
        .getElements().stream()
        .map(n -> ) //error here
        .forEach(builder::addValues);
    return builder.build();
}

Example 2:

@trait()
map documents {
    key: String
    value: Document
}
public static DocumentsTrait fromNode(Node node) {
    Builder builder = builder();
    node.expectObjectNode().getMembers().forEach((k, v) -> {
        builder.putValues(k.expectStringNode().getValue(), ); //error here
    });
    return builder.build();
}