From 3e316dd246c01870f8bf3833d0691af8f95a01d7 Mon Sep 17 00:00:00 2001 From: houhaoyu Date: Wed, 16 Mar 2022 22:45:45 +0800 Subject: [PATCH] houhaoyu@huawei.com fix enum transfer error Signed-off-by: houhaoyu Change-Id: Icc9d56bc91a72b7da56d709597091fefd8a8eb51 --- compiler/main.js | 5 ++++- compiler/src/compile_info.ts | 9 +++++++-- compiler/src/process_component_member.ts | 5 ++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/compiler/main.js b/compiler/main.js index 8501af9..efd5169 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -311,9 +311,12 @@ function processResourceArr(resourceArr, resourceMap, filePath) { } } +const globalProgram = { program: null }; + +exports.globalProgram = globalProgram; exports.projectConfig = projectConfig; exports.loadEntryObj = loadEntryObj; exports.readAppResource = readAppResource; exports.resources = resources; exports.loadWorker = loadWorker; -exports.abilityConfig = abilityConfig; \ No newline at end of file +exports.abilityConfig = abilityConfig; diff --git a/compiler/src/compile_info.ts b/compiler/src/compile_info.ts index 1044577..ec1a721 100644 --- a/compiler/src/compile_info.ts +++ b/compiler/src/compile_info.ts @@ -41,6 +41,7 @@ import { extendCollection, importModuleCollection } from './ets_checker'; +import { globalProgram } from '../main'; configure({ appenders: { 'ETS': {type: 'stderr', layout: {type: 'messagePassThrough'}}}, @@ -137,13 +138,17 @@ export class ResultStates { }); }); - compiler.hooks.run.tapPromise('CheckSyntax', async(compiler) => { + compiler.hooks.beforeRun.tap('beforeRun', () => { const rootFileNames: string[] = []; Object.values(projectConfig.entryObj).forEach((fileName: string) => { rootFileNames.push(fileName.replace('?entry', '')); }); const languageService: ts.LanguageService = createLanguageService(rootFileNames); - const rootProgram: ts.Program = languageService.getProgram(); + globalProgram.program = languageService.getProgram(); + }); + + compiler.hooks.run.tapPromise('CheckSyntax', async(compiler) => { + const rootProgram: ts.Program = globalProgram.program; props.push(...dollarCollection, ...decoratorParamsCollection, ...extendCollection); let allDiagnostics: ts.Diagnostic[] = rootProgram .getSyntacticDiagnostics() diff --git a/compiler/src/process_component_member.ts b/compiler/src/process_component_member.ts index 9de0445..2b69384 100644 --- a/compiler/src/process_component_member.ts +++ b/compiler/src/process_component_member.ts @@ -73,6 +73,7 @@ import { createReference, isProperty } from './process_component_class'; +import { globalProgram } from '../main'; export type ControllerType = { hasController: boolean @@ -686,7 +687,9 @@ function isForbiddenUseStateType(typeNode: ts.TypeNode): boolean { export function isSimpleType(typeNode: ts.TypeNode, program: ts.Program): boolean { let checker: ts.TypeChecker; - if (program) { + if (globalProgram.program) { + checker = globalProgram.program.getTypeChecker(); + } else if (program) { checker = program.getTypeChecker(); } const enumType: ts.SyntaxKind = getEnumType(typeNode, checker);