mapstruct-kotlin icon indicating copy to clipboard operation
mapstruct-kotlin copied to clipboard

Generates second setter when secondary constructor is defined at data class

Open arkadiuszpalka opened this issue 4 years ago • 0 comments

When I add secondary constructor to data class, at builder class are two setter of the property. My class

@KotlinBuilder
data class ProjectGroupModel(
    val parent: ProjectModel,
    val children: List<ProjectModel>
) : BaseAggregateRoot() {

    constructor(parent: ProjectModel) : this(parent, emptyList())

The result code

public final class ProjectGroupModelBuilder {
  private ProjectModel parent;

  private List<ProjectModel> children;

  private ProjectModel parent;

  public ProjectGroupModelBuilder setParent(ProjectModel parent) {
    this.parent = parent;
    return this;
  }

  public ProjectGroupModelBuilder setChildren(List<ProjectModel> children) {
    this.children = children;
    return this;
  }

  public ProjectGroupModelBuilder setParent(ProjectModel parent) {
    this.parent = parent;
    return this;
  }

  public ProjectGroupModel create() {
    return new ProjectGroupModel(parent, children, parent);
  }

  public static ProjectGroupModelBuilder builder() {
    return new ProjectGroupModelBuilder();
  }
}

As result I've got compilation error ProjectGroupModelBuilder.java:10: error: variable parent is already defined in class ProjectGroupModelBuilder

arkadiuszpalka avatar Aug 07 '20 20:08 arkadiuszpalka