Fixing more strict null errors in build

This commit is contained in:
Matt Bierner
2018-10-02 16:54:39 -07:00
parent 6b9ec57923
commit ddc5eeee01
11 changed files with 75 additions and 51 deletions

View File

@@ -172,6 +172,9 @@ function nodeOrChildIsBlack(node) {
}
function markNodes(languageService, options) {
var program = languageService.getProgram();
if (!program) {
throw new Error('Could not get program from language service');
}
if (options.shakeLevel === 0 /* Files */) {
// Mark all source files Black
program.getSourceFiles().forEach(function (sourceFile) {
@@ -192,7 +195,7 @@ function markNodes(languageService, options) {
return;
}
if (ts.isExportDeclaration(node)) {
if (ts.isStringLiteral(node.moduleSpecifier)) {
if (node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
setColor(node, 2 /* Black */);
enqueueImport(node, node.moduleSpecifier.text);
}
@@ -259,6 +262,9 @@ function markNodes(languageService, options) {
for (var i = 0, len = references.length; i < len; i++) {
var reference = references[i];
var referenceSourceFile = program.getSourceFile(reference.fileName);
if (!referenceSourceFile) {
continue;
}
var referenceNode = getTokenAtPosition(referenceSourceFile, reference.textSpan.start, false, false);
if (ts.isMethodDeclaration(referenceNode.parent)
|| ts.isPropertyDeclaration(referenceNode.parent)
@@ -389,6 +395,9 @@ function nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol) {
}
function generateResult(languageService, shakeLevel) {
var program = languageService.getProgram();
if (!program) {
throw new Error('Could not get program from language service');
}
var result = {};
var writeFile = function (filePath, contents) {
result[filePath] = contents;
@@ -445,13 +454,13 @@ function generateResult(languageService, shakeLevel) {
var leadingTriviaWidth = node.getLeadingTriviaWidth();
var leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
if (survivingImports.length > 0) {
if (node.importClause && getColor(node.importClause) === 2 /* Black */) {
if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
return write(leadingTrivia + "import " + node.importClause.name.text + ", {" + survivingImports.join(',') + " } from" + node.moduleSpecifier.getFullText(sourceFile) + ";");
}
return write(leadingTrivia + "import {" + survivingImports.join(',') + " } from" + node.moduleSpecifier.getFullText(sourceFile) + ";");
}
else {
if (node.importClause && getColor(node.importClause) === 2 /* Black */) {
if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
return write(leadingTrivia + "import " + node.importClause.name.text + " from" + node.moduleSpecifier.getFullText(sourceFile) + ";");
}
}
@@ -467,7 +476,7 @@ function generateResult(languageService, shakeLevel) {
var toWrite = node.getFullText();
for (var i = node.members.length - 1; i >= 0; i--) {
var member = node.members[i];
if (getColor(member) === 2 /* Black */) {
if (getColor(member) === 2 /* Black */ || !member.name) {
// keep method
continue;
}