diff --git a/compiler/src/ets_checker.ts b/compiler/src/ets_checker.ts index d6dc1dabe8f5861327a15642290ec318d8f7d9ce..607f2ff7558a72a21975b0047206325dc08dc3e6 100644 --- a/compiler/src/ets_checker.ts +++ b/compiler/src/ets_checker.ts @@ -51,6 +51,7 @@ export function createLanguageService(rootFileNames: string[]): ts.LanguageServi const compilerOptions: ts.CompilerOptions = ts.readConfigFile( path.resolve(__dirname, '../tsconfig.json'), ts.sys.readFile).config.compilerOptions; Object.assign(compilerOptions, { + 'allowJs': false, 'moduleResolution': ts.ModuleResolutionKind.NodeJs, 'target': ts.ScriptTarget.ES2017, 'baseUrl': path.resolve(projectConfig.projectPath), diff --git a/compiler/src/process_ui_syntax.ts b/compiler/src/process_ui_syntax.ts index 6269820fb016e975c17eb187366c8b5260a56819..6a207493216fb349d07b8479df64b23c26d99636 100644 --- a/compiler/src/process_ui_syntax.ts +++ b/compiler/src/process_ui_syntax.ts @@ -395,8 +395,8 @@ export function collectExtend(collectionSet: Map>, component } } -function isExtendFunction(node: ts.FunctionDeclaration): string { - if (node.decorators && node.decorators[0].expression && +export function isExtendFunction(node: ts.FunctionDeclaration): string { + if (node.decorators && node.decorators[0].expression && node.decorators[0].expression.expression && node.decorators[0].expression.expression.escapedText.toString() === CHECK_COMPONENT_EXTEND_DECORATOR && node.decorators[0].expression.arguments) { return node.decorators[0].expression.arguments[0].escapedText.toString(); diff --git a/compiler/src/validate_ui_syntax.ts b/compiler/src/validate_ui_syntax.ts index 6a326f3e7c7ed66a6048b8784e45e487d1acecd1..eb8b8ca164b7f8ffb144d98cf60434baaf8c0e3b 100644 --- a/compiler/src/validate_ui_syntax.ts +++ b/compiler/src/validate_ui_syntax.ts @@ -62,6 +62,7 @@ import { import { projectConfig } from '../main'; import { collectExtend } from './process_ui_syntax'; import { importModuleCollection } from "./ets_checker"; +import { isExtendFunction } from "./process_ui_syntax"; export interface ComponentCollection { entryComponent: string; @@ -300,6 +301,10 @@ function visitAllNode(node: ts.Node, sourceFileNode: ts.SourceFile, allComponent if (ts.isMethodDeclaration(node) && hasDecorator(node, COMPONENT_BUILDER_DECORATOR)) { CUSTOM_BUILDER_METHOD.add(node.name.getText()); } + if (ts.isFunctionDeclaration(node) && isExtendFunction(node)) { + let componentName: string = isExtendFunction(node); + collectExtend(EXTEND_ATTRIBUTE, componentName, node.name.getText()); + } node.getChildren().forEach((item: ts.Node) => visitAllNode(item, sourceFileNode, allComponentNames, log)); }