From: Evan You Date: Wed, 5 May 2021 18:24:46 +0000 (-0400) Subject: wip: relay compiler-core warnings in compiler-sfc with codeframe X-Git-Tag: v3.1.0-beta.1~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c32760147c645a0b4461db4719cef15b3d1c2535;p=thirdparty%2Fvuejs%2Fcore.git wip: relay compiler-core warnings in compiler-sfc with codeframe --- diff --git a/packages/compiler-sfc/src/compileTemplate.ts b/packages/compiler-sfc/src/compileTemplate.ts index 45fb36b7fb..9fa099a307 100644 --- a/packages/compiler-sfc/src/compileTemplate.ts +++ b/packages/compiler-sfc/src/compileTemplate.ts @@ -18,7 +18,7 @@ import { transformSrcset, createSrcsetTransformWithOptions } from './templateTransformSrcset' -import { isObject } from '@vue/shared' +import { generateCodeFrame, isObject } from '@vue/shared' import * as CompilerDOM from '@vue/compiler-dom' import * as CompilerSSR from '@vue/compiler-ssr' import consolidate from 'consolidate' @@ -170,6 +170,7 @@ function doCompileTemplate({ transformAssetUrls }: SFCTemplateCompileOptions): SFCTemplateCompileResults { const errors: CompilerError[] = [] + const warnings: CompilerError[] = [] let nodeTransforms: NodeTransform[] = [] if (isObject(transformAssetUrls)) { @@ -211,7 +212,8 @@ function doCompileTemplate({ nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []), filename, sourceMap: true, - onError: e => errors.push(e) + onError: e => errors.push(e), + onWarn: w => warnings.push(w) }) // inMap should be the map produced by ./parse.ts which is a simple line-only @@ -226,7 +228,19 @@ function doCompileTemplate({ } } - return { code, ast, preamble, source, errors, tips: [], map } + const tips = warnings.map(w => { + let msg = w.message + if (w.loc) { + msg += `\n${generateCodeFrame( + source, + w.loc.start.offset, + w.loc.end.offset + )}` + } + return msg + }) + + return { code, ast, preamble, source, errors, tips, map } } function mapLines(oldMap: RawSourceMap, newMap: RawSourceMap): RawSourceMap {