diff --git a/actions-languageservice/src/complete.ts b/actions-languageservice/src/complete.ts index c12bacd..8050570 100644 --- a/actions-languageservice/src/complete.ts +++ b/actions-languageservice/src/complete.ts @@ -77,15 +77,10 @@ export async function complete( } const {token, keyToken, parent, path} = findToken(newPos, result.value); - const template = await convertWorkflowTemplate( - result.context, - result.value, - ErrorPolicy.TryConversion, - config?.fileProvider, - { - fetchReusableWorkflowDepth: config?.fileProvider ? 1 : 0 - } - ); + const template = await convertWorkflowTemplate(result.context, result.value, config?.fileProvider, { + fetchReusableWorkflowDepth: config?.fileProvider ? 1 : 0, + errorPolicy: ErrorPolicy.TryConversion + }); const workflowContext = getWorkflowContext(textDocument.uri, template, path); // If we are inside an expression, take a different code-path. The workflow parser does not correctly create diff --git a/actions-languageservice/src/document-links.ts b/actions-languageservice/src/document-links.ts index a22d358..42ec015 100644 --- a/actions-languageservice/src/document-links.ts +++ b/actions-languageservice/src/document-links.ts @@ -19,7 +19,9 @@ export async function documentLinks(document: TextDocument): Promise = { maxReusableWorkflowDepth: 4, - fetchReusableWorkflowDepth: 0 + fetchReusableWorkflowDepth: 0, + errorPolicy: ErrorPolicy.ReturnErrorsOnly }; export async function convertWorkflowTemplate( context: TemplateContext, root: TemplateToken, - errorPolicy: ErrorPolicy = ErrorPolicy.ReturnErrorsOnly, fileProvider?: FileProvider, options: WorkflowTemplateConverterOptions = defaultOptions ): Promise { const result = {} as WorkflowTemplate; + const opts = getOptionsWithDefaults(options); - if (context.errors.getErrors().length > 0 && errorPolicy === ErrorPolicy.ReturnErrorsOnly) { + if (context.errors.getErrors().length > 0 && opts.errorPolicy === ErrorPolicy.ReturnErrorsOnly) { result.errors = context.errors.getErrors().map(x => ({ Message: x.message })); return result; } - const opts = getOptionsWithDefaults(options); - if (fileProvider === undefined && opts.fetchReusableWorkflowDepth > 0) { context.error(root, new Error("A file provider is required to fetch reusable workflows")); } @@ -136,6 +141,7 @@ function getOptionsWithDefaults(options: WorkflowTemplateConverterOptions): Requ fetchReusableWorkflowDepth: options.fetchReusableWorkflowDepth !== undefined ? options.fetchReusableWorkflowDepth - : defaultOptions.fetchReusableWorkflowDepth + : defaultOptions.fetchReusableWorkflowDepth, + errorPolicy: options.errorPolicy !== undefined ? options.errorPolicy : defaultOptions.errorPolicy }; } diff --git a/actions-workflow-parser/src/xlang.test.ts b/actions-workflow-parser/src/xlang.test.ts index e9e2ab1..42a2b77 100644 --- a/actions-workflow-parser/src/xlang.test.ts +++ b/actions-workflow-parser/src/xlang.test.ts @@ -85,7 +85,6 @@ describe("x-lang tests", () => { const workflowTemplate = await convertWorkflowTemplate( parseResult.context, parseResult.value!, - undefined, testFileProvider, { fetchReusableWorkflowDepth: 1