Simplify code for getting diagnostics in the Program.

This commit is contained in:
Cyrus Najmabadi 2015-02-05 02:15:38 -08:00
parent 493327af34
commit c1dfdaa436

View File

@ -211,19 +211,27 @@ module ts {
return hasProperty(filesByName, fileName) ? filesByName[fileName] : undefined;
}
function getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[] {
function getDiagnosticsHelper(sourceFile: SourceFile, getDiagnostics: (sourceFile: SourceFile) => Diagnostic[]): Diagnostic[] {
if (sourceFile) {
return ts.getSyntacticDiagnostics(sourceFile);
return getDiagnostics(sourceFile);
}
var allDiagnostics: Diagnostic[] = [];
forEach(program.getSourceFiles(), sourceFile => {
addRange(allDiagnostics, ts.getSyntacticDiagnostics(sourceFile));
addRange(allDiagnostics, getDiagnostics(sourceFile));
});
return sortAndDeduplicateDiagnostics(allDiagnostics);
}
function getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[]{
return getDiagnosticsHelper(sourceFile, ts.getSyntacticDiagnostics);
}
function getSemanticDiagnostics(sourceFile?: SourceFile): Diagnostic[]{
return getDiagnosticsHelper(sourceFile, getSemanticDiagnosticsForFile);
}
function getSemanticDiagnosticsForFile(sourceFile: SourceFile): Diagnostic[] {
var typeChecker = getDiagnosticsProducingTypeChecker();
@ -235,19 +243,6 @@ module ts {
return bindDiagnostics.concat(checkDiagnostics).concat(programDiagnostics);
}
function getSemanticDiagnostics(sourceFile?: SourceFile): Diagnostic[] {
if (sourceFile) {
return sortAndDeduplicateDiagnostics(getSemanticDiagnosticsForFile(sourceFile));
}
var allDiagnostics: Diagnostic[] = [];
forEach(program.getSourceFiles(), sourceFile => {
addRange(allDiagnostics, getSemanticDiagnosticsForFile(sourceFile));
});
return sortAndDeduplicateDiagnostics(allDiagnostics);
}
function getGlobalDiagnostics(): Diagnostic[]{
var typeChecker = getDiagnosticsProducingTypeChecker();