$inject with ES6 classes can inject the wrong dependencies #15536
Description
Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
When angular annotates a base class, it uses the inherited annotations when resolving the dependencies of derived classes.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
http://plnkr.co/edit/55dt9Xx8z5qvHZQ9eDdQ?p=preview
What is the expected behavior?
Derived classes should not inherit their parent's $inject property, as they do not necessarily share dependencies.
What is the motivation / use case for changing the behavior?
This behavior introduces a potentially hard to debug issue, and is probably not what the user expects to happen.
Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
This is still an issue when running against the snapshot as of 2016-12-21
Other information (e.g. stacktraces, related issues, suggestions how to fix)