schmod / babel-plugin-angularjs-annotate

Add Angular 1.x dependency injection annotations to ES6 code
http://schmod.github.io/babel-plugin-angularjs-annotate
MIT License
240 stars 29 forks source link

Method names can shadow import names #47

Open edsrzf opened 6 years ago

edsrzf commented 6 years ago

I've run into a bug where if a class method has the same name as an import, prefixed with an underscore, it shadows the import with the similar name. Brief example:

import now from 'lodash/now'

const f = function ($log) {
  'ngInject'
  class C {
    _now () {
      // This line ends up referring to the method containing it.
      now()
    }
  }

  return C
}

I've created a full reproduction case with more information here: https://github.com/edsrzf/babel-angularjs-repro

Note that this uses babel 7. I've tried pulling in the changes from #43 but they don't seem to help anything.

I'm happy to try to fix this if I can get some guidance. In particular, I'm not sure if this is actually a bug in this plugin or if it's merely a symptom of some issue within babel itself.

edsrzf commented 6 years ago

I've forked this repo here, with a fix on its master branch: https://github.com/vend/babel-plugin-angularjs-annotate/

The commit is here: https://github.com/vend/babel-plugin-angularjs-annotate/commit/82cdc58f7f89905af5265f89a9e9c6149b8229f2

I'd make a pull request, but this repo seems to be unmaintained at the moment.