OK, fixed in my weld-912 branch:
https://github.com/alesj/core/commit/02fc21b9d5aba3bb80fd11fb2b47ce701f0cb95f

"Bar extends Foo"

The problem is that both Bar and Foo are added as AnnotatedType against ClassTransformer,
and eventually deployed as such.

But WeldClassImpl::superclass is looked-up against ClassTransformer::classes --> diff WC_Foo instances

ClassTransformer

    private final ConcurrentMap<TypeHolder<?>, WeldClass<?>> classes;
    private final ConcurrentMap<AnnotatedType<?>, WeldClass<?>> annotatedTypes;

... and no equals/hash impl on WeldClassImpl ...


WELD-802 is due to WeldClassImpl not being the same for same class:

  • clazz = {java.lang.Class@5703}"class org.jboss.weld.tests.specialization.weld802.Foo"
  • weldClass = {org.jboss.weld.introspector.jlr.WeldClassImpl@5687}"public@RequestScoped class org.jboss.weld.tests.specialization.weld802.Foo" 

--

  • key: org.jboss.weld.introspector.jlr.WeldClassImpl = {org.jboss.weld.introspector.jlr.WeldClassImpl@5709}"public@RequestScoped class org.jboss.weld.tests.specialization.weld802.Foo"
  • value: org.jboss.weld.bean.ManagedBean = {org.jboss.weld.bean.ManagedBean@5961}"Managed Bean [class org.jboss.weld.tests.specialization.weld802.Foo] with qualifiers [@Any @Default]" 

... investigating further ...