tree b946e32a74615c9385cb3a7f687f19b69449b7b7
parent a5db71d8fdeead1bea5985d055e178775da76220
author Christoffer Quist Adamsen <christofferqa@google.com> 1530102413 +0200
committer Christoffer Quist Adamsen <christofferqa@google.com> 1530102536 +0000

Allow merging supertype into pinned subtype

If developers wish to do reflection on the super class or interfaces of a given class, it is still possible to prevent the vertical class merging of these super types by pinning the super types themselves.

Note that Proguard eliminates the interface A in the following example although MainActivity is kept.

    public class MainActivity extends Activity implements A {
        @Override
        protected void onCreate(android.os.Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            f();
        }

        @Override
        public void f() {}
    }

    public interface A {
        void f();
    }

Change-Id: I82b4700044a5c1ba07218250a544a6453ff4d140
