Comments (2)
Thanks for the (extremely quick) report!
For reference, the generator that creates the @MergeSubcomponent
interfaces is called ContributesSubcomponentHandlerGenerator
.
The problem is one of sequencing. The ContributesSubcomponentHandlerGenerator
is invoked after your custom generators have already finished. That change is new.
Prior to beta05, the ContributesSubcomponentHandlerGenerator
was invoked in a batch with most of the other generators - including any custom ones. It was invoked last, but that entire batch of generators is invoked in a loop, so anything it generates is seen by the other generators in the subsequent loop. The problem with this approach was that the custom generators can also be generating @ContributesSubcomponent
interfaces, where those new interfaces replace existing ones.
In your use-case, you're depending upon what is effectively an internal API. Are you able to get the information you need (the scope?) from something else upstream?
from anvil.
@RBusarow Good evening, sorry for the wait.
Thanks for the clarification, I understand why this is happening now.
But, unfortunately, I donβt know what to do now, because this change breaks many of my code generators: in my main project the structure of subcomponents is described in the DI module (as light as possible with a minimum of dependencies), and the root component (skeleton component) in the application module, in which integrations for everything are already generated.
This happens thanks to the annotation @ContributesSubcomponent
for subcomponents and the use of generated components with annotation @MergeSubcomponent
in custom generators
And so it turns out that the benefits of the annotation@ContributesSubcomponent
are lost after these changes.
Maybe you can suggest something if this is not a bug but a feature?
from anvil.
Related Issues (20)
- Migrate interface merging in IR
- Explore merging `ModuleMergerIr` and `InterfaceMergerIr`
- Enable K2 support in AnvilCompilerRegistrar
- Generated anvil code `OPT_IN_USAGE_ERROR` suppression causes warnings in K2 HOT 2
- K2: hints aren't discoverable in K2 IR HOT 1
- Compilation fails with multibindings across separate modules HOT 3
- KSP mode leaks kotlin-compiler-embeddable into javac classpath somehow HOT 1
- @ContributesMultibinding codegen missing imports for synthesized annotation constants HOT 3
- Adopt new KSP moduleName API or better handle in KSP2
- `ContributesBinding` or `ContributesMultibinding` on an `object` declaration requires some sort of Dagger factory generation
- `RealAnvilModuleDescriptor.allFiles` only returns files with type declarations
- Kotlin 2.0.0-RC1 Gradle plugin incompatibility HOT 1
- The following Android dependencies are set to compileOnly which is not supported HOT 1
- Unresolved Reference in IDE For Bindings Added Via @ContributesTo HOT 3
- Experiencing IC issues with `com.squareup.anvil.trackSourceFiles=true` in embedded mode HOT 2
- Duplicate `ContributesMultibinding` check does not consider `ignoreQualifier` HOT 1
- `ContributesSubcomponent.Factory` doesn't support inherited functions
- Anvil 2.5.0-beta09 gradle plugin does not add `build/anvil/main/generated` folder to main sourceSet. HOT 2
- What is the correct way to introduce custom code generator for anvil running in KSP mode? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from anvil.