1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
//! Lint findings emitted while transforming HTML.
//!
//! The transformer's stated contract is: render the HTML subset that
//! maps cleanly onto Damascene's widget vocabulary, and **surface
//! everything else as a lint finding** so authors and downstream tools
//! know what was dropped. A doc that emits twenty findings tells the
//! author the renderer can't do their layout — without claiming
//! success.
//!
//! Findings carry no severity; the embedder decides whether each kind
//! is fatal, a warning, or informational. The transformer never
//! produces duplicates for the same node + kind, but does emit one
//! finding per occurrence across the document.
//!
//! Access via [`crate::html_with_lints`] or [`crate::html_blocks_with_lints`].
//! The lint-free entry points ([`crate::html`], [`crate::html_with_options`])
//! collect internally and discard, preserving the v1 signature.
use RefCell;
/// What was dropped or coerced, in a single dimension. The transformer
/// emits at most one finding per (node, kind) tuple, so a single
/// element with three unsupported properties produces three findings.
/// One lint occurrence. `detail` is a human-readable hint: the dropped
/// property name + value, the collided margin pair, the unsupported
/// selector text, and so on.
/// Walker-internal collector. Threaded through `WalkCx` via shared
/// borrow + interior mutability so the dispatch functions can `push`
/// without a `&mut` plumb-through.
pub