JavaScript LS scaffolding + JS module inference by RyanCavanaugh · Pull Request #5266 · microsoft/TypeScript

@RyanCavanaugh

This is a subset of the prior PR that carves out only the code we need to get a) JavaScript intellisense in general and b) CommonJS module inference in JavaScript files.

Includes work by @vladima in 'services' to get the correct compilation context to Roslyn

@RyanCavanaugh

DanielRosenwasser

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider extracting this out into a function.

function shouldRecordAmdDefineName(index: number, moduleName: string) {
    // record first item in the list only if its name is not "require"
    // record second item in the list only if its name is not "exports"
    // record third item in the list only if its name is not "module"
    // record all other items in the list unconditionally
    switch (index) {
        case 0:
            return moduleName !== "require";
        case 1:
            return moduleName !== "exports";
    }
    return index !== 2 || moduleName !== "module";
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove the AMD logic entirely

@RyanCavanaugh

@RyanCavanaugh

ahejlsberg

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think you need the declaration.parent.kind test. There should never be a case where that isn't true.

ahejlsberg

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually put a blank on both sides of the | operator.

@RyanCavanaugh

@vladima can you address the comments in program.ts?

@vladima

@RyanCavanaugh

@RyanCavanaugh

@RyanCavanaugh

# Conflicts:
#	tests/webTestServer.ts
# Conflicts:
#	lib/lib.es6.d.ts
#	lib/tsc.js
#	lib/tsserver.js
#	lib/typescript.d.ts
#	lib/typescript.js
#	lib/typescriptServices.d.ts
#	lib/typescriptServices.js
#	src/compiler/binder.ts
#	src/compiler/checker.ts
#	src/compiler/parser.ts
#	src/compiler/program.ts
#	src/harness/fourslash.ts

@RyanCavanaugh

# Conflicts:
#	src/compiler/parser.ts