Data for emitting an EnclosingMethod attribute.
Data for emitting an EnclosingMethod attribute. None if classSym
is a member class (not
an anonymous or local class). See doc in BTypes.
The class is parametrized by two functions to obtain a bytecode class descriptor for a class symbol, and to obtain a method signature descriptor fro a method symbol. These function depend on the implementation of GenASM / GenBCode, so they need to be passed in.
True if classSym
is an anonymous class or a local class.
True if classSym
is an anonymous class or a local class. I.e., false if classSym
is a
member class. This method is used to decide if we should emit an EnclosingMethod attribute.
It is also used to decide whether the "owner" field in the InnerClass attribute should be
null.
This is basically a re-implementation of sym.isStaticOwner, but using the originalOwner chain.
This is basically a re-implementation of sym.isStaticOwner, but using the originalOwner chain.
The problem is that we are interested in a source-level property. Various phases changed the
symbol's properties in the meantime, mostly lambdalift modified (destructively) the owner.
Therefore, sym.isStatic
is not what we want. For example, in
object T { def f { object U } }
the owner of U is T, so UModuleClass.isStatic is true. Phase travel does not help here.
The member classes of a class symbol.
The member classes of a class symbol. Note that the result of this method depends on the current phase, for example, after lambdalift, all local classes become member of the enclosing class.
Whether an annotation should be emitted as a Java annotation .initialize: if 'annot' is read from pickle, atp might be un-initialized
This trait contains code shared between GenBCode and GenASM that depends on types defined in the compiler cake (Global).