Skip to content

Commit 4aa361d

Browse files
Layer the compiler so that every layer only depends on hte layers below it.
The layering is now: types core scanner parser binder checker emitter program
1 parent 5c4c08a commit 4aa361d

12 files changed

Lines changed: 390 additions & 402 deletions

File tree

src/compiler/binder.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
/// <reference path="types.ts"/>
2-
/// <reference path="core.ts"/>
3-
/// <reference path="scanner.ts"/>
41
/// <reference path="parser.ts"/>
52

63
module ts {
7-
84
export const enum ModuleInstanceState {
95
NonInstantiated = 0,
106
Instantiated = 1,

src/compiler/checker.ts

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
/// <reference path="types.ts"/>
2-
/// <reference path="core.ts"/>
3-
/// <reference path="scanner.ts"/>
4-
/// <reference path="parser.ts"/>
51
/// <reference path="binder.ts"/>
6-
/// <reference path="emitter.ts"/>
7-
/// <reference path="utilities.ts"/>
82

93
module ts {
104
var nextSymbolId = 1;
@@ -16,7 +10,6 @@ module ts {
1610
/// If fullTypeCheck === false, the typechecker can take shortcuts and skip checks that only produce errors.
1711
/// NOTE: checks that somehow affect decisions being made during typechecking should be executed in both cases.
1812
export function createTypeChecker(program: Program, fullTypeCheck: boolean): TypeChecker {
19-
2013
var Symbol = objectAllocator.getSymbolConstructor();
2114
var Type = objectAllocator.getTypeConstructor();
2215
var Signature = objectAllocator.getSignatureConstructor();
@@ -27,6 +20,7 @@ module ts {
2720
var emptySymbols: SymbolTable = {};
2821

2922
var compilerOptions = program.getCompilerOptions();
23+
var emitResolver = createResolver();
3024

3125
var checker: TypeChecker = {
3226
getProgram: () => program,
@@ -36,9 +30,7 @@ module ts {
3630
getTypeCount: () => typeCount,
3731
isUndefinedSymbol: symbol => symbol === undefinedSymbol,
3832
isArgumentsSymbol: symbol => symbol === argumentsSymbol,
39-
emitFiles: invokeEmitter,
4033
getDiagnostics,
41-
getDeclarationDiagnostics,
4234
getGlobalDiagnostics,
4335
getTypeOfSymbolAtLocation,
4436
getDeclaredTypeOfSymbol,
@@ -66,6 +58,7 @@ module ts {
6658
getAliasedSymbol: resolveImport,
6759
hasEarlyErrors,
6860
isEmitBlocked,
61+
getEmitResolver: () => emitResolver,
6962
};
7063

7164
var undefinedSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "undefined");
@@ -8945,12 +8938,6 @@ module ts {
89458938
return getSortedDiagnostics();
89468939
}
89478940

8948-
function getDeclarationDiagnostics(targetSourceFile: SourceFile): Diagnostic[] {
8949-
var resolver = createResolver();
8950-
checkSourceFile(targetSourceFile);
8951-
return ts.getDeclarationDiagnostics(program, resolver, targetSourceFile);
8952-
}
8953-
89548941
function getGlobalDiagnostics(): Diagnostic[] {
89558942
return filter(getSortedDiagnostics(), d => !d.file);
89568943
}
@@ -9575,11 +9562,6 @@ module ts {
95759562
};
95769563
}
95779564

9578-
function invokeEmitter(targetSourceFile?: SourceFile) {
9579-
var resolver = createResolver();
9580-
return emitFiles(resolver, targetSourceFile);
9581-
}
9582-
95839565
function initializeTypeChecker() {
95849566
// Bind all source files and propagate errors
95859567
forEach(program.getSourceFiles(), file => {

src/compiler/emitter.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
/// <reference path="types.ts"/>
2-
/// <reference path="core.ts"/>
3-
/// <reference path="scanner.ts"/>
4-
/// <reference path="parser.ts"/>
5-
/// <reference path="binder.ts"/>
1+
/// <reference path="checker.ts"/>
62

73
module ts {
84
interface EmitTextWriter {

src/compiler/parser.ts

Lines changed: 0 additions & 346 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)