When a bean has two or more fields that are both injected by the same producer, and this producer is exactly created when the bean that is injected is also created, the first field is injected without any issues, but for every other field Weld logs the following bogus warning:
The bean that's injected:
The problem seems to be that when the producer bean is created, an instance is pushed to CreationalContextImpl and ends up there in an incompleteInstances map. The producer bean is then created, the instance returned, and the producer method is called. This all happens correctly.
However, there is never any code anywhere that pops the instance from the incompleteInstances map, and the CreationalContextImpl that contains this map is re-used again and again, causing any bean that's created during injection to remain marked as an incomplete instance. So when the second field is injected, Weld encounters the producer bean in the incompleteInstances map and therefor assumes there must be a circular dependency, which of course isn't there.
A full reproducer can be found at https://github.com/arjantijms/weld-bogus-circular