lib/utils/ember.js
function parseDependentKeys(callExp) {
  // Check whether we have a MemberExpression, eg. computed(...).volatile()
  const isMemberExpCallExp = !callExp.arguments.length &&
    utils.isMemberExpression(callExp.callee) &&
    utils.isCallExpression(callExp.callee.object);

  const args = isMemberExpCallExp ? callExp.callee.object.arguments : callExp.arguments;

  const dependentKeys = args
    .filter(arg => utils.isLiteral(arg))
    .map(literal => literal.value);

  return unwrapBraceExpressions(dependentKeys);
}
function parseDependentKeys(callExp) {
  // Check whether we have a MemberExpression, eg. computed(...).volatile()
  const isMemberExpCallExp = !callExp.arguments.length &&
    utils.isMemberExpression(callExp.callee) &&
    utils.isCallExpression(callExp.callee.object);

  const args = isMemberExpCallExp ? callExp.callee.object.arguments : callExp.arguments;

  const dependentKeys = args
    .filter(arg => utils.isLiteral(arg))
    .map(literal => literal.value);

  return unwrapBraceExpressions(dependentKeys);
}
function parseDependentKeys ( callExp ) { // Check whether we have a MemberExpression, eg. computed(...).volatile() const isMemberExpCallExp = ! callExp . arguments . length && utils . isMemberExpression ( callExp . callee ) && utils . isCallExpression ( callExp . callee . object ) ; const args = isMemberExpCallExp ? callExp . callee . object . arguments : callExp . arguments ; const dependentKeys = args . filter ( arg => utils . isLiteral ( arg ) ) . map ( literal => literal . value ) ; return unwrapBraceExpressions ( dependentKeys ) ; }
Parses dependent keys from call expression and returns them in an array.

It also unwraps the expressions, so that `model.{foo,bar}` becomes `model.foo, model.bar`.

@param  {CallExpression} callExp CallExpression to examine
@return {String[]}       Array of unwrapped dependent keys
Parses dependent keys from call expression and returns them in an array .