From 49e7ddff633bd2cb632fa2d03982d632098fc1e7 Mon Sep 17 00:00:00 2001 From: Grant Lemons Date: Sat, 8 Mar 2025 11:14:04 -0700 Subject: [PATCH] fix(#854): mark inside of rgb calls as unlintable --- harper-typst/src/typst_translator.rs | 18 ++++++++++++++---- harper-typst/tests/tests.rs | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/harper-typst/src/typst_translator.rs b/harper-typst/src/typst_translator.rs index 44fc124e..81c7c4f8 100644 --- a/harper-typst/src/typst_translator.rs +++ b/harper-typst/src/typst_translator.rs @@ -326,10 +326,20 @@ impl<'a> TypstTranslator<'a> { parse_params(&mut closure.params().children()), recurse!(closure.body()) ], - Expr::FuncCall(func) => merge![ - token!(func.callee(), TokenKind::Unlintable), - parse_args(&mut func.args().items()) - ], + Expr::FuncCall(func) => { + let func_ident = self + .doc + .get(self.doc.range(func.callee().span()).unwrap()) + .unwrap(); + merge![ + token!(func.callee(), TokenKind::Unlintable), + match func_ident { + "rgb" => token!(func.args(), TokenKind::Unlintable), + "color.rgb" => token!(func.args(), TokenKind::Unlintable), + _ => parse_args(&mut func.args().items()), + } + ] + } a => token!(a, TokenKind::Unlintable), } } diff --git a/harper-typst/tests/tests.rs b/harper-typst/tests/tests.rs index 9b6df7e4..d6044d00 100644 --- a/harper-typst/tests/tests.rs +++ b/harper-typst/tests/tests.rs @@ -334,3 +334,17 @@ fn parbreaks_in_list() { ] )) } + +#[test] +fn do_not_lint_rgb() { + let source = r#"#color.rgb("ffffff")"#; + + let document = Document::new_curated(source, &Typst); + let token_kinds = document.tokens().map(|t| t.kind).collect_vec(); + dbg!(&token_kinds); + + assert!(matches!( + &token_kinds.as_slice(), + &[TokenKind::Unlintable, TokenKind::Unlintable] + )) +}