uber/motif

ScopeFactory with single unused dependency ignores the given creatable instance

Aberta

#200 aberto em 2 de abr. de 2020

 (1 comentário) (0 reação) (0 responsável)Kotlin (46 forks)github user discovery
good first issue

Métricas do repositório

Stars
 (538 estrelas)
Métricas de merge de PR
 (Mesclagem média 3d 21h) (2 fundiu PRs em 30d)

Description

Generated code seems to ignore given instance for the dependency source while using ScopeFactory with a single unused dependency and tries to create the instance directly.

Library version: 0.3.3-SNAPSHOT

Repro steps or stacktrace:

Scope

@Scope
public interface TestScope extends Creatable<TestScope.Dependencies> {

    interface Dependencies {
        String blah();
    }
}

Creating instance of scope

TestScope.Dependencies dependencySource = 
    new TestScope.Dependencies() {
        @Override
        public String blah() {
            return "something";
         }
   };
ScopeFactory.create(TestScope.class, dependencySource);

Generated code

@ScopeImpl(
    children = {},
    scope = TestScope.class,
    dependencies = TestScope.Dependencies.class
)
public class TestScopeImpl implements TestScope {
  private final TestScope.Dependencies dependencies;

  public TestScopeImpl(TestScope.Dependencies dependencies) {
    this.dependencies = dependencies;
  }

  public TestScopeImpl() {
    this(new TestScope.Dependencies() {});
  }

  TestScope testScope() {
    return this;
  }
}

Notice this(new TestScope.Dependencies() {}); in constructor.

Guia do colaborador