Remove wiring from `def` or add `@NotForWiring`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Partite dal punto di ingresso wire[A] e seguite come vengono individuati i vals e defs idonei, inclusi i metodi parametrizzati. Esaminate le alternative proposte nell’issue e determinate come il comportamento selezionato dovrebbe gestire newFrozenClock e la dipendenza ambigua da clock. Il lavoro è completato quando i metodi parametrizzati non vengono invocati erroneamente e il caso di wiring mostrato è privo di ambiguità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Currently we have this problem:
case class A()
case class B(a: A)
object Test {
lazy val a: A = wire[A]
def buildSomeA(i: Int): A = A()
lazy val b: B = wire[B] // without `val a`, macwire would produce this: `A(buildSomeA)`...
}
Fails with: Found multiple values of type [A]: [List(buildSomeA, a)]
So 2 things:
- first methods with args are found eligible and they are used without any args (thus producing a compilation error),
- second we quickly end-up with ambiguities
I have the following use case:
class Stuff(clock: Clock)
trait TestBase {
lazy val clock: Clock = Time
def newFrozenClock: Clock
}
class StuffTest extends TestBase {
@Test def doStuff() { wire[Stuff] } // clock is ambiguous
}
So either we ditch def "support" (I know you've been using it as a "prototype" scope) or we keep it (modulo a little bugfix for parameterized methods) and we introduce another annotation: @NotForWiring. That way things can be disambiguated once for all:
trait TestBase {
lazy val clock: Clock = Time
@NotForWiring def newFrozenClock: Clock
}
- Lingua principale
- Scala
- Stelle
- 1.3k
- Fork
- 77
- Merge medio
- 9m
- PR unite (30g)
- 4
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di softwaremill/macwire
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
softwaremill/macwire#412 · 3 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
softwaremill/macwire#391 · 1 commento ·
-
macrosakka Pekko alternative Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
softwaremill/macwire#301 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
softwaremill/macwire#281 · 5 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
softwaremill/macwire#278 · 3 commenti ·
Tutte le issue di softwaremill/macwire
Issue simili
-
Area: Excel support
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
orbeon/orbeon-forms#7893 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
chipsalliance/rocket-chip#3833 ·
-
ShuffleManagerRegistry.register recursion guard is inverted, permits GlutenShuffleManager subclasses Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100