uber/motif

ScopeFactory with single unused dependency ignores the given creatable instance

Offen

#200 geöffnet am 02.04.2020

 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Kotlin (46 Forks)github user discovery
good first issue

Repository-Metriken

Stars
 (538 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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.

Contributor Guide