From 015b50d4d01f1a54b61708718e0b0d96122f0ec2 Mon Sep 17 00:00:00 2001 From: Nicolas Berthier Date: Mon, 8 Apr 2024 08:59:53 +0200 Subject: [PATCH] Ignore `>>DEFINE/>>SET` directives in pre-processor contexts with a false guard --- src/lsp/cobol_preproc/preproc_engine.ml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lsp/cobol_preproc/preproc_engine.ml b/src/lsp/cobol_preproc/preproc_engine.ml index 9c64da789..b206f40bf 100644 --- a/src/lsp/cobol_preproc/preproc_engine.ml +++ b/src/lsp/cobol_preproc/preproc_engine.ml @@ -238,10 +238,13 @@ and apply_preproc_directive ({ env; context; _ } as lp) else lp in match ppdir with - | Define_off var -> - new_env lp @@ Preproc_logic.on_define_off ~loc var ~env + | Define _ | Define_off _ | Set _ + when not (Preproc_logic.emitting lp.context) -> + lp (* ignore *) | Define def -> new_env lp @@ Preproc_logic.on_define ~loc def ~env + | Define_off var -> + new_env lp @@ Preproc_logic.on_define_off ~loc var ~env | If condition -> new_context lp @@ Preproc_logic.on_if ~loc ~condition ~env context | Elif condition -> @@ -250,13 +253,10 @@ and apply_preproc_directive ({ env; context; _ } as lp) new_context lp @@ Preproc_logic.on_else ~loc context | End_if -> let lp = new_context lp @@ Preproc_logic.on_endif ~loc context in - if Preproc_logic.emitting lp.context - then match lp.rev_ignored with - | [] -> - lp - | text -> - with_pplog { lp with rev_ignored = [] } - (Preproc_trace.ignored (List.rev text) lp.pplog) + if Preproc_logic.emitting lp.context && lp.rev_ignored <> [] + then { lp with + rev_ignored = []; + pplog = Preproc_trace.ignored (List.rev lp.rev_ignored) lp.pplog } else lp | Set _ -> add_warn lp @@ Ignored { loc; item = Compiler_directive }