Skip to content
This repository was archived by the owner on May 26, 2018. It is now read-only.
This repository was archived by the owner on May 26, 2018. It is now read-only.

AccessTransformer does not transform subclasses #538

Open

Description

@zlainsama

currently, AT will only transform the specific class, its subclasses will stay same.
this became a problem when you need to change access of a method, you have to add every single subclasses and ones that other mods add.

Activity

  1. diesieben07 commented on Oct 9, 2014

    @diesieben07
    Contributor

    This is not possible to fix without major trouble. ClassTransformers don't know about the classpath, they only get one class at a time.

  2. LexManos commented on Oct 9, 2014

    @LexManos
    Member

    Unless you come up with a good reliable idea on how to generate the inheritance map at runtime this might be feasible.
    But for now it simply isn't so this is classified as wont-fix/not-bug.

  3. jeffreykog commented on Oct 9, 2014

    @jeffreykog
    Contributor

    As superclasses are loaded before the classes that extend them, this might actually be easy to do. I'll try something when i get home

  4. Cazzar commented on Oct 9, 2014

    @Cazzar

    Though it doesn't mean other inherited versions will load at the same time.

  5. jeffreykog commented on Oct 9, 2014

    @jeffreykog
    Contributor

    They can load later. Thats no problem. By that time the inherition info is already built

  6. LexManos commented on Oct 9, 2014

    @LexManos
    Member

    MM yes, but what about interfaces or the like that are declared in the sub-c;ass but implemented by the parent? How do you deal with those?

  7. zlainsama commented on Oct 9, 2014

    @zlainsama
    Author

    you don't need to deal with those, i think.
    you just want access to the method through the end instance, the instance itself can access superclasses if it is coded like that. (i really think its so, but i'm not sure. if not, you can simply change 'root' class)
    interfaces don't need to change, unless you are changing method to lower visibility, that way, bad things will happen.

  8. zlainsama commented on Oct 9, 2014

    @zlainsama
    Author

    by change root class, i mean define AT rules for root class.

  9. jeffreykog commented on Oct 10, 2014

    @jeffreykog
    Contributor

    That is indeed a problem, lex. What we can do is use the asm class adapter that searches for annotations to also collect inheritance data and use that in the AT.

  10. LexManos commented on Oct 10, 2014

    @LexManos
    Member

    jk if you find a solution let me know. Don't forget about the issues of mods adding things to the classpath without us knowing about it.

  11. zlainsama commented on Oct 16, 2014

    @zlainsama
    Author

    It needs a proper system for ClassTransformers.
    like:
    having different layers for different transformers, one for monitoring changes to gather inheritance data, one for performing minor changes like changing access, and one for normal uses or uncategorized uses
    having different levels of privileges to ignoring certain things like IFMLLoadingPlugin.TransformerExclusions

  12. zlainsama commented on Oct 16, 2014

    @zlainsama
    Author

    and for minecraft code you can have pre-generated inheritance data, and runtime monitoring changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions