mirror of
https://github.com/github/codeql-action.git
synced 2025-12-31 11:40:24 +08:00
30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
const objectPatternHasDefaults = node =>
|
|
node.type === 'ObjectPattern' && node.properties.some(prop => prop.value.type === 'AssignmentPattern')
|
|
|
|
module.exports = function(context) {
|
|
return {
|
|
ArrowFunctionExpression(node) {
|
|
// Unary functions don't trip on this bug
|
|
if (node.params.length < 2) return
|
|
|
|
// This bug only occurs when some arguments use Object destructuring
|
|
if (!node.params.some(param => param.type === 'ObjectPattern')) return
|
|
|
|
const objectPatternArgs = node.params.filter(node => node.type === 'ObjectPattern')
|
|
|
|
// This bug is only occurs when an argument uses Object Destructuring with Default assignment
|
|
if (!objectPatternArgs.some(objectPatternHasDefaults)) return
|
|
|
|
// This bug gets fixed if the first argument uses Object destructuring with default assignments!
|
|
if (node.params[0].type === 'ObjectPattern' && objectPatternHasDefaults(node.params[0])) return
|
|
|
|
context.report(
|
|
node,
|
|
'There is an Edge 15-17 bug which causes second argument destructuring to fail. See https://git.io/fhd7N for more'
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports.schema = []
|