@@ -9,6 +9,7 @@ const { processTopLevelAwait } = require('./await');
9
9
const { Runtime, mainContextIdPromise } = require ( './inspector' ) ;
10
10
const { strEscape, isIdentifier } = require ( './util' ) ;
11
11
const isRecoverableError = require ( './recoverable' ) ;
12
+ const NativeFunctions = require ( '../vendor/NativeFunctions' ) ;
12
13
13
14
// TODO(devsnek): make more robust
14
15
Error . prepareStackTrace = ( err , frames ) => {
@@ -218,7 +219,7 @@ Prototype REPL - https://github.com/nodejs/repl`,
218
219
return c ;
219
220
}
220
221
}
221
- if ( description . length < 10000 ) {
222
+ if ( description . length < 10000 && ! description . includes ( '[native code]' ) ) {
222
223
let parsed = null ;
223
224
try {
224
225
// Try to parse as a function, anonymous function, or arrow function.
@@ -285,6 +286,24 @@ Prototype REPL - https://github.com/nodejs/repl`,
285
286
}
286
287
}
287
288
}
289
+ } else if ( expression . callee . type === 'MemberExpression' ) {
290
+ const receiverSrc = buffer . slice (
291
+ expression . callee . object . start ,
292
+ expression . callee . object . end ,
293
+ ) ;
294
+ const { result, exceptionDetails } = await this . eval ( receiverSrc , false , true ) ;
295
+ if ( ! exceptionDetails ) {
296
+ const receiver = result . className ;
297
+ const { name } = parseDammit ( evaluateResult . result . description ) . body [ 0 ] . id ;
298
+ const entry = NativeFunctions . find ( ( n ) => n . receiver === receiver && n . name === name ) ;
299
+ if ( entry . signatures ) {
300
+ this . functionCompletionCache . set ( result . objectId , entry . signatures [ 0 ] ) ;
301
+ }
302
+ const c = finishParams ( entry . signatures [ 0 ] ) ;
303
+ if ( c !== undefined ) {
304
+ return c ;
305
+ }
306
+ }
288
307
}
289
308
}
290
309
} else if ( expression . type === 'MemberExpression' ) {
0 commit comments