diff --git a/ts2panda/src/compilerDriver.ts b/ts2panda/src/compilerDriver.ts index 99d7568ac9b03301e99104e62e26370ce2cacfea..3b4dcb54e843d01667e3e5015dddd07120433db4 100644 --- a/ts2panda/src/compilerDriver.ts +++ b/ts2panda/src/compilerDriver.ts @@ -147,7 +147,7 @@ export class CompilerDriver { } compileForSyntaxCheck(node: ts.SourceFile): void { - let recorder = this.compilePrologue(node, false); + let recorder = this.compilePrologue(node, false, true); checkDuplicateDeclaration(recorder); checkExportEntries(recorder); } @@ -165,7 +165,7 @@ export class CompilerDriver { }); } - let recorder = this.compilePrologue(node, true); + let recorder = this.compilePrologue(node, true, false); // initiate ts2abc if (!CmdOptions.isAssemblyMode()) { @@ -247,7 +247,7 @@ export class CompilerDriver { } compileUnitTest(node: ts.SourceFile, literalBufferArray?: Array): void { - let recorder = this.compilePrologue(node, true); + let recorder = this.compilePrologue(node, true, true); for (let i = 0; i < this.pendingCompilationUnits.length; i++) { let unit: PendingCompilationUnit = this.pendingCompilationUnits[i]; @@ -287,7 +287,7 @@ export class CompilerDriver { } } - private compilePrologue(node: ts.SourceFile, recordType: boolean) { + private compilePrologue(node: ts.SourceFile, recordType: boolean, syntaxCheckStatus: boolean) { let topLevelScope: GlobalScope | ModuleScope; if (CmdOptions.isModules()) { topLevelScope = new ModuleScope(node); @@ -299,7 +299,7 @@ export class CompilerDriver { if (enableTypeRecord) { TypeRecorder.createInstance(); } - let recorder = new Recorder(node, topLevelScope, this, enableTypeRecord, CompilerDriver.isTsFile); + let recorder = new Recorder(node, topLevelScope, this, enableTypeRecord, CompilerDriver.isTsFile, syntaxCheckStatus); recorder.record(); addVariableToScope(recorder, enableTypeRecord); diff --git a/ts2panda/src/recorder.ts b/ts2panda/src/recorder.ts index 61f5689708d8b3af9391ed165d823cddaa506cd7..75bca228e8cd0177abc0b740518eb5e56b73cdb8 100644 --- a/ts2panda/src/recorder.ts +++ b/ts2panda/src/recorder.ts @@ -66,8 +66,9 @@ export class Recorder { private exportStmts: Array = []; private defaultUsed: boolean = false; private isTsFile: boolean; + private syntaxCheckStatus: boolean; - constructor(node: ts.Node, scope: Scope, compilerDriver: CompilerDriver, recordType: boolean, isTsFile: boolean) { + constructor(node: ts.Node, scope: Scope, compilerDriver: CompilerDriver, recordType: boolean, isTsFile: boolean, syntaxCheckStatus: boolean) { this.node = node; this.scope = scope; this.compilerDriver = compilerDriver; @@ -75,6 +76,7 @@ export class Recorder { this.funcNameMap = new Map(); this.funcNameMap.set("main", 1); this.isTsFile = isTsFile; + this.syntaxCheckStatus = syntaxCheckStatus; } record() { @@ -115,7 +117,7 @@ export class Recorder { private recordInfo(node: ts.Node, scope: Scope) { node.forEachChild(childNode => { - if (!this.recordType) { + if (this.syntaxCheckStatus) { checkSyntaxError(childNode); } switch (childNode.kind) { diff --git a/ts2panda/tests/lexenv.test.ts b/ts2panda/tests/lexenv.test.ts index c63e6435a39f64441262ad569fcba5a972513e4d..9bdff800f31a86bf20c364f37ed1d5236b53abeb 100644 --- a/ts2panda/tests/lexenv.test.ts +++ b/ts2panda/tests/lexenv.test.ts @@ -118,7 +118,7 @@ describe("lexenv-compile-testcase in lexenv.test.ts", function () { let sourceFile = creatAstFromSnippet(source); let compilerDriver = new CompilerDriver('UnitTest'); let globalScope = new GlobalScope(sourceFile); - let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false); + let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false, true); recorder.record(); expect(globalScope, "root is null!").to.not.equal(null); @@ -146,7 +146,7 @@ describe("lexenv-compile-testcase in lexenv.test.ts", function () { let sourceFile = creatAstFromSnippet(source); let compilerDriver = new CompilerDriver('UnitTest'); let globalScope = new GlobalScope(sourceFile); - let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false); + let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false, true); recorder.record(); let children = globalScope.getChildVariableScope(); @@ -194,7 +194,7 @@ describe("lexenv-compile-testcase in lexenv.test.ts", function () { let compilerDriver = new CompilerDriver('UnitTest'); let globalScope = new GlobalScope(sourceFile); - let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false); + let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false, true); recorder.record(); let postOrderVariableScopes = compilerDriver.postOrderAnalysis(globalScope); @@ -218,7 +218,7 @@ describe("lexenv-compile-testcase in lexenv.test.ts", function () { let compilerDriver = new CompilerDriver('UnitTest'); let globalScope = new GlobalScope(sourceFile); - let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false); + let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false, true); recorder.record(); let postOrderVariableScopes = compilerDriver.postOrderAnalysis(globalScope); @@ -272,7 +272,7 @@ describe("lexenv-compile-testcase in lexenv.test.ts", function () { let compilerDriver = new CompilerDriver('UnitTest'); let globalScope = new GlobalScope(sourceFile); - let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false); + let recorder = new Recorder(sourceFile, globalScope, compilerDriver, false, false, true); recorder.record(); let postOrderVariableScopes = compilerDriver.postOrderAnalysis(globalScope);