Skip to content

Commit 5426f01

Browse files
committed
fix: lint detecting unconditionally_sealed -> unsealed traits
1 parent 0c7b550 commit 5426f01

File tree

4 files changed

+72
-98
lines changed

4 files changed

+72
-98
lines changed

src/lints/pub_api_sealed_trait_became_unsealed.ron

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ SemverQuery(
1515
... on Trait {
1616
visibility_limit @filter(op: "=", value: ["$public"]) @output
1717
public_api_sealed @filter(op: "=", value: ["$true"])
18+
unconditionally_sealed @filter(op: "!=", value: ["$true"])
1819
1920
importable_path {
2021
path @output @tag
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,39 @@
1-
pub mod public_api_hidden_module_to_be_exposed {
2-
pub trait Sealed {}
3-
pub struct Token;
4-
}
5-
6-
mod public_api_hidden_module_to_be_unconditionally_hidden {
7-
pub trait Sealed {}
8-
pub struct Token;
9-
}
10-
11-
// ─────────────────────────────────────────────────────
121
// Traits transitioning from Public API Sealed → Unsealed (Lint should detect these)
13-
// ─────────────────────────────────────────────────────
2+
pub mod public_api_sealed_to_unsealed {
3+
pub mod hidden {
4+
pub trait Sealed {}
5+
pub struct Token;
6+
}
147

15-
// Start: Public API Sealed → Unsealed (Lint should detect these)
16-
pub trait PublicAPIToBeUnsealed {
17-
type Hidden;
18-
}
8+
pub trait PublicAPIToBeUnsealed {
9+
type Hidden;
10+
}
1911

20-
pub trait TraitExtendsPublicAPIHiddenTrait: public_api_hidden_module_to_be_exposed::Sealed {}
12+
pub trait TraitExtendsHiddenPublicAPITrait: hidden::Sealed {}
2113

22-
pub trait MethodReturnPublicAPIHiddenToken {
23-
fn method(&self) -> public_api_hidden_module_to_be_exposed::Token;
24-
}
14+
pub trait MethodReturnPublicAPIHiddenToken {
15+
fn method(&self) -> hidden::Token;
16+
}
2517

26-
pub trait MethodTakingPublicAPIHiddenToken {
27-
fn method(&self, token: public_api_hidden_module_to_be_exposed::Token);
18+
pub trait MethodTakingPublicAPIHiddenToken {
19+
fn method(&self, token: hidden::Token);
20+
}
2821
}
29-
// End: Public API Sealed → Unsealed
3022

31-
// ─────────────────────────────────────────────────────
3223
// Traits transitioning from Public API Sealed → Unconditionally Sealed (Lint should ignore these)
33-
// ─────────────────────────────────────────────────────
24+
pub mod public_api_sealed_to_unconditionally_sealed {
25+
mod hidden {
26+
pub trait Sealed {}
27+
pub struct Token;
28+
}
3429

35-
// Start: Public API Sealed → Unconditionally Sealed (Lint should ignore these)
36-
pub trait TraitExtendsUnconditionallyHiddenTrait:
37-
public_api_hidden_module_to_be_unconditionally_hidden::Sealed
38-
{
39-
}
30+
pub trait TraitExtendsUnconditionallyHiddenTrait: hidden::Sealed {}
4031

41-
pub trait MethodReturningUnconditionallyHiddenToken {
42-
fn method(&self) -> public_api_hidden_module_to_be_unconditionally_hidden::Token;
43-
}
32+
pub trait MethodReturningUnconditionallyHiddenToken {
33+
fn method(&self) -> hidden::Token;
34+
}
4435

45-
pub trait MethodTakingUnconditionallyHiddenToken {
46-
fn method(&self, token: public_api_hidden_module_to_be_unconditionally_hidden::Token);
36+
pub trait MethodTakingUnconditionallyHiddenToken {
37+
fn method(&self, token: hidden::Token);
38+
}
4739
}
48-
// End: Public API Sealed → Unconditionally Sealed
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,42 @@
1-
#[doc(hidden)]
2-
pub mod public_api_hidden_module_to_be_exposed {
3-
pub trait Sealed {}
4-
pub struct Token;
5-
}
6-
7-
#[doc(hidden)]
8-
pub mod public_api_hidden_module_to_be_unconditionally_hidden {
9-
pub trait Sealed {}
10-
pub struct Token;
11-
}
12-
13-
// ─────────────────────────────────────────────────────
141
// Traits transitioning from Public API Sealed → Unsealed (Lint should detect these)
15-
// ─────────────────────────────────────────────────────
16-
17-
// Start: Public API Sealed → Unsealed (Lint should detect these)
18-
pub trait PublicAPIToBeUnsealed {
2+
pub mod public_api_sealed_to_unsealed {
193
#[doc(hidden)]
20-
type Hidden;
21-
}
4+
pub mod hidden {
5+
pub trait Sealed {}
6+
pub struct Token;
7+
}
228

23-
pub trait TraitExtendsPublicAPIHiddenTrait: public_api_hidden_module_to_be_exposed::Sealed {}
9+
pub trait PublicAPIToBeUnsealed {
10+
#[doc(hidden)]
11+
type Hidden;
12+
}
2413

25-
pub trait MethodReturnPublicAPIHiddenToken {
26-
fn method(&self) -> public_api_hidden_module_to_be_exposed::Token;
27-
}
14+
pub trait TraitExtendsHiddenPublicAPITrait: hidden::Sealed {}
15+
16+
pub trait MethodReturnPublicAPIHiddenToken {
17+
fn method(&self) -> hidden::Token;
18+
}
2819

29-
pub trait MethodTakingPublicAPIHiddenToken {
30-
fn method(&self, token: public_api_hidden_module_to_be_exposed::Token);
20+
pub trait MethodTakingPublicAPIHiddenToken {
21+
fn method(&self, token: hidden::Token);
22+
}
3123
}
32-
// End: Public API Sealed → Unsealed
3324

34-
// ─────────────────────────────────────────────────────
3525
// Traits transitioning from Public API Sealed → Unconditionally Sealed (Lint should ignore these)
36-
// ─────────────────────────────────────────────────────
26+
pub mod public_api_sealed_to_unconditionally_sealed {
27+
#[doc(hidden)]
28+
pub mod hidden {
29+
pub trait Sealed {}
30+
pub struct Token;
31+
}
3732

38-
// Start: Public API Sealed → Unconditionally Sealed (Lint should ignore these)
39-
pub trait TraitExtendsUnconditionallyHiddenTrait:
40-
public_api_hidden_module_to_be_unconditionally_hidden::Sealed
41-
{
42-
}
33+
pub trait TraitExtendsUnconditionallyHiddenTrait: hidden::Sealed {}
4334

44-
pub trait MethodReturningUnconditionallyHiddenToken {
45-
fn method(&self) -> public_api_hidden_module_to_be_unconditionally_hidden::Token;
46-
}
35+
pub trait MethodReturningUnconditionallyHiddenToken {
36+
fn method(&self) -> hidden::Token;
37+
}
4738

48-
pub trait MethodTakingUnconditionallyHiddenToken {
49-
fn method(&self, token: public_api_hidden_module_to_be_unconditionally_hidden::Token);
39+
pub trait MethodTakingUnconditionallyHiddenToken {
40+
fn method(&self, token: hidden::Token);
41+
}
5042
}
51-
// End: Public API Sealed → Unconditionally Sealed

test_outputs/query_execution/pub_api_sealed_trait_became_unsealed.snap

+14-23
Original file line numberDiff line numberDiff line change
@@ -8,43 +8,47 @@ expression: "&query_execution_results"
88
"name": String("PublicAPIToBeUnsealed"),
99
"path": List([
1010
String("pub_api_sealed_trait_became_unsealed"),
11+
String("public_api_sealed_to_unsealed"),
1112
String("PublicAPIToBeUnsealed"),
1213
]),
13-
"span_begin_line": Uint64(16),
14-
"span_end_line": Uint64(18),
14+
"span_begin_line": Uint64(8),
15+
"span_end_line": Uint64(10),
1516
"span_filename": String("src/lib.rs"),
1617
"visibility_limit": String("public"),
1718
},
1819
{
19-
"name": String("TraitExtendsPublicAPIHiddenTrait"),
20+
"name": String("TraitExtendsHiddenPublicAPITrait"),
2021
"path": List([
2122
String("pub_api_sealed_trait_became_unsealed"),
22-
String("TraitExtendsPublicAPIHiddenTrait"),
23+
String("public_api_sealed_to_unsealed"),
24+
String("TraitExtendsHiddenPublicAPITrait"),
2325
]),
24-
"span_begin_line": Uint64(20),
25-
"span_end_line": Uint64(20),
26+
"span_begin_line": Uint64(12),
27+
"span_end_line": Uint64(12),
2628
"span_filename": String("src/lib.rs"),
2729
"visibility_limit": String("public"),
2830
},
2931
{
3032
"name": String("MethodReturnPublicAPIHiddenToken"),
3133
"path": List([
3234
String("pub_api_sealed_trait_became_unsealed"),
35+
String("public_api_sealed_to_unsealed"),
3336
String("MethodReturnPublicAPIHiddenToken"),
3437
]),
35-
"span_begin_line": Uint64(22),
36-
"span_end_line": Uint64(24),
38+
"span_begin_line": Uint64(14),
39+
"span_end_line": Uint64(16),
3740
"span_filename": String("src/lib.rs"),
3841
"visibility_limit": String("public"),
3942
},
4043
{
4144
"name": String("MethodTakingPublicAPIHiddenToken"),
4245
"path": List([
4346
String("pub_api_sealed_trait_became_unsealed"),
47+
String("public_api_sealed_to_unsealed"),
4448
String("MethodTakingPublicAPIHiddenToken"),
4549
]),
46-
"span_begin_line": Uint64(26),
47-
"span_end_line": Uint64(28),
50+
"span_begin_line": Uint64(18),
51+
"span_end_line": Uint64(20),
4852
"span_filename": String("src/lib.rs"),
4953
"visibility_limit": String("public"),
5054
},
@@ -62,19 +66,6 @@ expression: "&query_execution_results"
6266
"visibility_limit": String("public"),
6367
},
6468
],
65-
"./test_crates/trait_method_added/": [
66-
{
67-
"name": String("WillGainMethodWithoutDefaultAndLoseSeal"),
68-
"path": List([
69-
String("trait_method_added"),
70-
String("WillGainMethodWithoutDefaultAndLoseSeal"),
71-
]),
72-
"span_begin_line": Uint64(43),
73-
"span_end_line": Uint64(45),
74-
"span_filename": String("src/lib.rs"),
75-
"visibility_limit": String("public"),
76-
},
77-
],
7869
"./test_crates/trait_method_marked_deprecated/": [
7970
{
8071
"name": String("PublicTraitWithHiddenMethod"),

0 commit comments

Comments
 (0)