uber/motif

ScopeFactory with single unused dependency ignores the given creatable instance

Aperta

#200 aperta il 2 apr 2020

 (1 commento) (0 reazioni) (0 assegnatari)Kotlin (46 fork)github user discovery
good first issue

Metriche repository

Star
 (538 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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.

Guida contributor