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

The order of the ancestor elements are random #1591

@shiraji

Description

@shiraji

While I was working with #1156, I found a strange behavior of AA with ancestors elements.
Here is a test case for ancestors elements.

@EActivity
@OptionsMenu(R.menu.menu_1)
public abstract class TopActivity extends AppCompatActivity {
}

@EActivity
@OptionsMenu(R.menu.menu_2)
public abstract class SubActivity extends TopActivity {
}

@EActivity
@OptionsMenu(R.menu.menu_main)
public class MainActivity extends SubActivity {
}

In this case, the generated code expected to be

public final class MainActivity_
    extends MainActivity
    implements HasViews
    ...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_1, menu);
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_2, menu);
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    ...

However, it "sometimes" generate this code.

public final class MainActivity_
    extends MainActivity
    implements HasViews
    ...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_2, menu);
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_1, menu);
        menuInflater.inflate(com.github.shiraji.myapplication.R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    ...

If there is grand-parents class, the order of the ancestor elements are random. This is because how AA traverses and stores ancestors. Now, I am ready for pull request for this issue. Could you confirm this is a problem?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions