Skip to content

REPLServer.createContext() has unexpected side effects #14226

Closed
@lance

Description

@lance
  • Version: 8.1.4
  • Platform: Darwin Callisto 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64
  • Subsystem: repl

Calling the undocumented REPLServer.createContext() has unexpected side effects. When the method is called, the value for the server instance's underscoreAssigned and lines properties reset. Here is a reproducible test case.

const repl = require('repl');
const util = require('util');
const assert = require('assert');

const server = repl.start({ prompt: '> ' });
assert.ok(!server.underscoreAssigned);
assert.strictEqual(server.lines.length, 0);

server.write('_ = 500;\n');
assert.ok(server.underscoreAssigned);
assert.strictEqual(server.lines.length, 1);

const context = server.createContext();

assert.ok(server.underscoreAssigned);
assert.strictEqual(server.lines.length, 1);

The overwriting of underscoreAssigned was introduced in ad8257f, while the overwriting of lines is 6 years old at least.

I discovered this when looking for usages of createContext() in the interest of deprecating it and REPLServer.resetContext() for #7619.

Metadata

Metadata

Assignees

No one assigned

    Labels

    replIssues and PRs related to the REPL subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions