mirror of
https://github.com/Myriad-Dreamin/tinymist.git
synced 2025-08-03 17:58:17 +00:00
feat: lint ignored statements before break/continue/return
(#1637)
* feat: impl it * g * g2 * feat: add tests * fix: snapshot
This commit is contained in:
parent
6cf7739fb6
commit
23f10a2648
73 changed files with 1170 additions and 171 deletions
|
@ -671,7 +671,7 @@ mod lint_tests {
|
|||
let source = ctx.source_by_path(&path).unwrap();
|
||||
let expr = ctx.expr_stage(&source);
|
||||
|
||||
let result = tinymist_lint::lint_source(&expr);
|
||||
let result = tinymist_lint::lint_file(&expr);
|
||||
let result = crate::diagnostics::DiagWorker::new(ctx).convert_all(result.iter());
|
||||
let result = result
|
||||
.into_iter()
|
||||
|
|
|
@ -247,5 +247,5 @@ impl DiagnosticRefiner for OutOfRootHintRefiner {
|
|||
|
||||
#[comemo::memoize]
|
||||
fn lint_file(source: &ExprInfo) -> EcoVec<SourceDiagnostic> {
|
||||
tinymist_lint::lint_source(source)
|
||||
tinymist_lint::lint_file(source)
|
||||
}
|
||||
|
|
3
crates/tinymist-query/src/fixtures/lint/break_for.typ
Normal file
3
crates/tinymist-query/src/fixtures/lint/break_for.typ
Normal file
|
@ -0,0 +1,3 @@
|
|||
#for value in (1, 2, 3) {
|
||||
break
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
#for value in (1, 2, 3) {
|
||||
let _ = () => break
|
||||
}
|
1
crates/tinymist-query/src/fixtures/lint/break_top.typ
Normal file
1
crates/tinymist-query/src/fixtures/lint/break_top.typ
Normal file
|
@ -0,0 +1 @@
|
|||
#break
|
3
crates/tinymist-query/src/fixtures/lint/break_while.typ
Normal file
3
crates/tinymist-query/src/fixtures/lint/break_while.typ
Normal file
|
@ -0,0 +1,3 @@
|
|||
#while true {
|
||||
break
|
||||
}
|
1
crates/tinymist-query/src/fixtures/lint/continue_top.typ
Normal file
1
crates/tinymist-query/src/fixtures/lint/continue_top.typ
Normal file
|
@ -0,0 +1 @@
|
|||
#continue
|
|
@ -0,0 +1,4 @@
|
|||
#let f() = [
|
||||
#(1, 2)
|
||||
#return 1;
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
#let f() = {
|
||||
[0]
|
||||
if true {
|
||||
[1]
|
||||
} else {
|
||||
[2]
|
||||
}
|
||||
return [];
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
#let f() = {
|
||||
while true {
|
||||
[0]
|
||||
break
|
||||
}
|
||||
return [];
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
#let f() = {
|
||||
while true {
|
||||
[0]
|
||||
break
|
||||
return [];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
#let f() = [
|
||||
$ 1 2 3 $
|
||||
#return 1;
|
||||
]
|
4
crates/tinymist-query/src/fixtures/lint/discard_for.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_for.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = for i in range(10) {
|
||||
show: it => it
|
||||
return [];
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/discard_for2.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_for2.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = for i in range(10) {
|
||||
show: it => it
|
||||
return ;
|
||||
}
|
3
crates/tinymist-query/src/fixtures/lint/discard_for3.typ
Normal file
3
crates/tinymist-query/src/fixtures/lint/discard_for3.typ
Normal file
|
@ -0,0 +1,3 @@
|
|||
#let f() = for i in range(10) {
|
||||
show: it => it
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/discard_for4.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_for4.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = for i in range(10) {
|
||||
show: it => it
|
||||
break
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/discard_for5.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_for5.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = for i in range(10) {
|
||||
show: it => it
|
||||
continue
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
#let f() = [
|
||||
Hello -- Test -- World
|
||||
#return 1;
|
||||
]
|
6
crates/tinymist-query/src/fixtures/lint/discard_if.typ
Normal file
6
crates/tinymist-query/src/fixtures/lint/discard_if.typ
Normal file
|
@ -0,0 +1,6 @@
|
|||
#let f() = if true {
|
||||
set text(red)
|
||||
return;
|
||||
} else {
|
||||
return [];
|
||||
}
|
7
crates/tinymist-query/src/fixtures/lint/discard_if2.typ
Normal file
7
crates/tinymist-query/src/fixtures/lint/discard_if2.typ
Normal file
|
@ -0,0 +1,7 @@
|
|||
#let f() = if true {
|
||||
set text(red)
|
||||
return;
|
||||
} else {
|
||||
set text(blue)
|
||||
return [];
|
||||
}
|
8
crates/tinymist-query/src/fixtures/lint/discard_join.typ
Normal file
8
crates/tinymist-query/src/fixtures/lint/discard_join.typ
Normal file
|
@ -0,0 +1,8 @@
|
|||
#let f() = {
|
||||
if true {
|
||||
[1]
|
||||
} else {
|
||||
[2]
|
||||
}
|
||||
return [];
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#let f() = {
|
||||
if true {
|
||||
[1]
|
||||
} else {
|
||||
[2]
|
||||
return;
|
||||
}
|
||||
return [];
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#let f() = {
|
||||
if true {
|
||||
[1]
|
||||
return;
|
||||
} else {
|
||||
[2]
|
||||
}
|
||||
return [];
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/discard_set.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_set.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = {
|
||||
set text(red)
|
||||
return 1;
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/discard_show.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/discard_show.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = {
|
||||
show: it => it
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
#let f() = [
|
||||
#show: it => it
|
||||
#return 1;
|
||||
]
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#if false {
|
||||
set text(red)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#if false {
|
||||
show: text(red)
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
#context return
|
3
crates/tinymist-query/src/fixtures/lint/return_loop.typ
Normal file
3
crates/tinymist-query/src/fixtures/lint/return_loop.typ
Normal file
|
@ -0,0 +1,3 @@
|
|||
#while true {
|
||||
return
|
||||
}
|
3
crates/tinymist-query/src/fixtures/lint/return_loop2.typ
Normal file
3
crates/tinymist-query/src/fixtures/lint/return_loop2.typ
Normal file
|
@ -0,0 +1,3 @@
|
|||
#let f() = while true {
|
||||
return
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
#let f() = return
|
1
crates/tinymist-query/src/fixtures/lint/return_top.typ
Normal file
1
crates/tinymist-query/src/fixtures/lint/return_top.typ
Normal file
|
@ -0,0 +1 @@
|
|||
#return
|
4
crates/tinymist-query/src/fixtures/lint/show_good.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/show_good.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = {
|
||||
show: it => it
|
||||
[Test]
|
||||
}
|
4
crates/tinymist-query/src/fixtures/lint/show_good2.typ
Normal file
4
crates/tinymist-query/src/fixtures/lint/show_good2.typ
Normal file
|
@ -0,0 +1,4 @@
|
|||
#let f() = [
|
||||
#show: it => it
|
||||
Test
|
||||
]
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#show: {
|
||||
set text(red)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#show raw: {
|
||||
set text(red)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/break_for.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/break_func_for.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "`break` statement in a non-loop context",
|
||||
"range": "1:16:1:21",
|
||||
"relatedInformation": [
|
||||
{
|
||||
"message": "error occurred while applying show rule to this loop"
|
||||
},
|
||||
{
|
||||
"message": "error occurred in this function call"
|
||||
}
|
||||
],
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/break_top.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "`break` statement in a non-loop context",
|
||||
"range": "0:1:0:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/break_while.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/continue_top.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "`continue` statement in a non-loop context",
|
||||
"range": "0:1:0:9",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_array.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This array is implicitly discarded by function return\nHint: consider ignoring the value explicitly using underscore: `let _ = (1, 2)`",
|
||||
"range": "1:3:1:9",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_common.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "3:5:3:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
},
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "5:5:5:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_common_break.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_common_break2.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_equation.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This equation is implicitly discarded by function return",
|
||||
"range": "1:2:1:11",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_for.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `show` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_for2.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `show` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_for3.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This show statement doesn't take effect.\nHint: consider changing parent to `show: range(10).fold(it => it, (style-it, i) => it => { show: it => it; style-it(it) })`",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_for4.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This show statement doesn't take effect.\nHint: consider changing parent to `show: range(10).fold(it => it, (style-it, i) => it => { show: it => it; style-it(it) })`",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_for5.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This show statement doesn't take effect.\nHint: consider changing parent to `show: range(10).fold(it => it, (style-it, i) => it => { show: it => it; style-it(it) })`",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_hello.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "1:19:1:24",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_if.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `set` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:15",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_if2.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `set` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:15",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
},
|
||||
{
|
||||
"message": "This `set` expression is implicitly discarded by function return",
|
||||
"range": "4:2:4:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_join.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "2:5:2:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
},
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "4:5:4:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_join_partial.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "2:5:2:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_join_partial2.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This text is implicitly discarded by function return",
|
||||
"range": "5:5:5:6",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_set.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `set` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:15",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_show.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `show` expression is implicitly discarded by function return",
|
||||
"range": "1:2:1:16",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/discard_show_content.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "This `show` expression is implicitly discarded by function return",
|
||||
"range": "1:3:1:17",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/return_contextual.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/return_loop.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "`return` statement in a non-function context",
|
||||
"range": "1:2:1:8",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/return_loop2.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/return_regular.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/return_top.typ
|
||||
---
|
||||
{
|
||||
"s0.typ": [
|
||||
{
|
||||
"message": "`return` statement in a non-function context",
|
||||
"range": "0:1:0:7",
|
||||
"severity": 2,
|
||||
"source": "typst"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/show_good.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/show_good2.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/while_good.typ
|
||||
---
|
||||
{}
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
source: crates/tinymist-query/src/analysis.rs
|
||||
expression: "JsonRepr::new_redacted(result, &REDACT_LOC)"
|
||||
input_file: crates/tinymist-query/src/fixtures/lint/while_good2.typ
|
||||
---
|
||||
{}
|
6
crates/tinymist-query/src/fixtures/lint/while_good.typ
Normal file
6
crates/tinymist-query/src/fixtures/lint/while_good.typ
Normal file
|
@ -0,0 +1,6 @@
|
|||
#let f() = {
|
||||
while true {
|
||||
[0]
|
||||
break
|
||||
}
|
||||
}
|
5
crates/tinymist-query/src/fixtures/lint/while_good2.typ
Normal file
5
crates/tinymist-query/src/fixtures/lint/while_good2.typ
Normal file
|
@ -0,0 +1,5 @@
|
|||
#let f() = {
|
||||
while false {
|
||||
[0]
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue