diff --git a/packages/dd-trace/src/debugger/devtools_client/condition.js b/packages/dd-trace/src/debugger/devtools_client/condition.js index e6dc9be16e..16a3b2caaf 100644 --- a/packages/dd-trace/src/debugger/devtools_client/condition.js +++ b/packages/dd-trace/src/debugger/devtools_client/condition.js @@ -50,7 +50,7 @@ function compile (node) { } else if (type === 'isDefined') { return `(() => { try { - ${value} + ${compile(value)} return true } catch { return false diff --git a/packages/dd-trace/test/debugger/devtools_client/condition-test-cases.js b/packages/dd-trace/test/debugger/devtools_client/condition-test-cases.js index 745c57767a..cb957f8470 100644 --- a/packages/dd-trace/test/debugger/devtools_client/condition-test-cases.js +++ b/packages/dd-trace/test/debugger/devtools_client/condition-test-cases.js @@ -630,18 +630,19 @@ const typeAndDefinitionChecks = [ true ], - [{ isDefined: 'foo' }, { bar: 42 }, false], - [{ isDefined: 'bar' }, { bar: 42 }, true], - [{ isDefined: 'bar' }, { bar: undefined }, true], - { ast: { isDefined: 'foo' }, suffix: 'const foo = undefined', expected: false }, - { ast: { isDefined: 'foo' }, suffix: 'const foo = 42', expected: false }, - { ast: { isDefined: 'foo' }, suffix: 'let foo', expected: false }, - { ast: { isDefined: 'foo' }, suffix: 'let foo = undefined', expected: false }, - { ast: { isDefined: 'foo' }, suffix: 'let foo = 42', expected: false }, - { ast: { isDefined: 'foo' }, suffix: 'var foo', expected: true }, // var is hoisted - { ast: { isDefined: 'foo' }, suffix: 'var foo = undefined', expected: true }, // var is hoisted - { ast: { isDefined: 'foo' }, suffix: 'var foo = 42', expected: true }, // var is hoisted - { ast: { isDefined: 'foo' }, suffix: '', expected: false } + [{ isDefined: { ref: 'foo' } }, { bar: 42 }, false], + [{ isDefined: { ref: 'bar' } }, { bar: 42 }, true], + [{ isDefined: { ref: 'bar' } }, { bar: undefined }, true], + { ast: { isDefined: { ref: 'foo' } }, suffix: 'const foo = undefined', expected: false }, + { ast: { isDefined: { ref: 'foo' } }, suffix: 'const foo = 42', expected: false }, + { ast: { isDefined: { ref: 'foo' } }, suffix: 'let foo', expected: false }, + { ast: { isDefined: { ref: 'foo' } }, suffix: 'let foo = undefined', expected: false }, + { ast: { isDefined: { ref: 'foo' } }, suffix: 'let foo = 42', expected: false }, + { ast: { isDefined: { ref: 'foo' } }, suffix: 'var foo', expected: true }, // var is hoisted + { ast: { isDefined: { ref: 'foo' } }, suffix: 'var foo = undefined', expected: true }, // var is hoisted + { ast: { isDefined: { ref: 'foo' } }, suffix: 'var foo = 42', expected: true }, // var is hoisted + { ast: { isDefined: { ref: 'foo' } }, suffix: 'function foo () {}', expected: true }, // function is hoisted + { ast: { isDefined: { ref: 'foo' } }, suffix: '', expected: false } ] function overloadPropertyWithGetter (obj, propName) {