Skip to content

Commit 9585434

Browse files
committed
a single diagnostic with multiple annotations
1 parent 00f1107 commit 9585434

File tree

4 files changed

+74
-145
lines changed

4 files changed

+74
-145
lines changed

crates/ty_python_semantic/resources/mdtest/directives/assert_never.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def if_else_isinstance_error(obj: A | B):
6060
elif isinstance(obj, C):
6161
pass
6262
else:
63-
# error: [type-assertion-failure] "Argument does not have expected type `Never`"
63+
# error: [type-assertion-failure] "Argument does not have asserted type `Never`"
6464
assert_never(obj)
6565

6666
def if_else_singletons_success(obj: Literal[1, "a"] | None):
@@ -81,7 +81,7 @@ def if_else_singletons_error(obj: Literal[1, "a"] | None):
8181
elif obj is None:
8282
pass
8383
else:
84-
# error: [type-assertion-failure] "Argument does not have expected type `Never`"
84+
# error: [type-assertion-failure] "Argument does not have asserted type `Never`"
8585
assert_never(obj)
8686

8787
def match_singletons_success(obj: Literal[1, "a"] | None):
@@ -94,7 +94,7 @@ def match_singletons_success(obj: Literal[1, "a"] | None):
9494
pass
9595
case _ as obj:
9696
# TODO: Ideally, we would not emit an error here
97-
# error: [type-assertion-failure] "Argument does not have expected type `Never`"
97+
# error: [type-assertion-failure] "Argument does not have asserted type `Never`"
9898
assert_never(obj)
9999

100100
def match_singletons_error(obj: Literal[1, "a"] | None):
@@ -108,6 +108,6 @@ def match_singletons_error(obj: Literal[1, "a"] | None):
108108
case _ as obj:
109109
# TODO: We should emit an error here, but the message should
110110
# show the type `Literal["a"]` instead of `@Todo(…)`.
111-
# error: [type-assertion-failure] "Argument does not have expected type `Never`"
111+
# error: [type-assertion-failure] "Argument does not have asserted type `Never`"
112112
assert_never(obj)
113113
```

crates/ty_python_semantic/resources/mdtest/snapshots/assert_never.md_-_`assert_never`_-_Basic_functionality.snap

Lines changed: 45 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -33,214 +33,157 @@ mdtest path: crates/ty_python_semantic/resources/mdtest/directives/assert_never.
3333
# Diagnostics
3434

3535
```
36-
error[type-assertion-failure]: Argument does not have expected type `Never`
36+
error[type-assertion-failure]: Argument does not have asserted type `Never`
3737
--> src/mdtest_snippet.py:7:5
3838
|
3939
5 | assert_never(never) # fine
4040
6 |
4141
7 | assert_never(0) # error: [type-assertion-failure]
42-
| ^^^^^^^^^^^^^^^ Expected object of type `Never`
43-
8 | assert_never("") # error: [type-assertion-failure]
44-
9 | assert_never(None) # error: [type-assertion-failure]
45-
|
46-
info: Inferred type is not equivalent to `Never`
47-
--> src/mdtest_snippet.py:7:18
48-
|
49-
5 | assert_never(never) # fine
50-
6 |
51-
7 | assert_never(0) # error: [type-assertion-failure]
52-
| ^ Inferred type of argument is `Literal[0]`
42+
| ^^^^^^^^^^^^^-^
43+
| |
44+
| Inferred type of argument is `Literal[0]`
5345
8 | assert_never("") # error: [type-assertion-failure]
5446
9 | assert_never(None) # error: [type-assertion-failure]
5547
|
48+
info: `Never` and `Literal[0]` are not equivalent types
5649
info: rule `type-assertion-failure` is enabled by default
5750
5851
```
5952

6053
```
61-
error[type-assertion-failure]: Argument does not have expected type `Never`
54+
error[type-assertion-failure]: Argument does not have asserted type `Never`
6255
--> src/mdtest_snippet.py:8:5
6356
|
6457
7 | assert_never(0) # error: [type-assertion-failure]
6558
8 | assert_never("") # error: [type-assertion-failure]
66-
| ^^^^^^^^^^^^^^^^ Expected object of type `Never`
67-
9 | assert_never(None) # error: [type-assertion-failure]
68-
10 | assert_never([]) # error: [type-assertion-failure]
69-
|
70-
info: Inferred type is not equivalent to `Never`
71-
--> src/mdtest_snippet.py:8:18
72-
|
73-
7 | assert_never(0) # error: [type-assertion-failure]
74-
8 | assert_never("") # error: [type-assertion-failure]
75-
| ^^ Inferred type of argument is `Literal[""]`
59+
| ^^^^^^^^^^^^^--^
60+
| |
61+
| Inferred type of argument is `Literal[""]`
7662
9 | assert_never(None) # error: [type-assertion-failure]
7763
10 | assert_never([]) # error: [type-assertion-failure]
7864
|
65+
info: `Never` and `Literal[""]` are not equivalent types
7966
info: rule `type-assertion-failure` is enabled by default
8067
8168
```
8269

8370
```
84-
error[type-assertion-failure]: Argument does not have expected type `Never`
71+
error[type-assertion-failure]: Argument does not have asserted type `Never`
8572
--> src/mdtest_snippet.py:9:5
8673
|
8774
7 | assert_never(0) # error: [type-assertion-failure]
8875
8 | assert_never("") # error: [type-assertion-failure]
8976
9 | assert_never(None) # error: [type-assertion-failure]
90-
| ^^^^^^^^^^^^^^^^^^ Expected object of type `Never`
91-
10 | assert_never([]) # error: [type-assertion-failure]
92-
11 | assert_never({}) # error: [type-assertion-failure]
93-
|
94-
info: Inferred type is not equivalent to `Never`
95-
--> src/mdtest_snippet.py:9:18
96-
|
97-
7 | assert_never(0) # error: [type-assertion-failure]
98-
8 | assert_never("") # error: [type-assertion-failure]
99-
9 | assert_never(None) # error: [type-assertion-failure]
100-
| ^^^^ Inferred type of argument is `None`
77+
| ^^^^^^^^^^^^^----^
78+
| |
79+
| Inferred type of argument is `None`
10180
10 | assert_never([]) # error: [type-assertion-failure]
10281
11 | assert_never({}) # error: [type-assertion-failure]
10382
|
83+
info: `Never` and `None` are not equivalent types
10484
info: rule `type-assertion-failure` is enabled by default
10585
10686
```
10787

10888
```
109-
error[type-assertion-failure]: Argument does not have expected type `Never`
89+
error[type-assertion-failure]: Argument does not have asserted type `Never`
11090
--> src/mdtest_snippet.py:10:5
11191
|
11292
8 | assert_never("") # error: [type-assertion-failure]
11393
9 | assert_never(None) # error: [type-assertion-failure]
11494
10 | assert_never([]) # error: [type-assertion-failure]
115-
| ^^^^^^^^^^^^^^^^ Expected object of type `Never`
116-
11 | assert_never({}) # error: [type-assertion-failure]
117-
12 | assert_never(()) # error: [type-assertion-failure]
118-
|
119-
info: Inferred type is not equivalent to `Never`
120-
--> src/mdtest_snippet.py:10:18
121-
|
122-
8 | assert_never("") # error: [type-assertion-failure]
123-
9 | assert_never(None) # error: [type-assertion-failure]
124-
10 | assert_never([]) # error: [type-assertion-failure]
125-
| ^^ Inferred type of argument is `list[Unknown]`
95+
| ^^^^^^^^^^^^^--^
96+
| |
97+
| Inferred type of argument is `list[Unknown]`
12698
11 | assert_never({}) # error: [type-assertion-failure]
12799
12 | assert_never(()) # error: [type-assertion-failure]
128100
|
101+
info: `Never` and `list[Unknown]` are not equivalent types
129102
info: rule `type-assertion-failure` is enabled by default
130103
131104
```
132105

133106
```
134-
error[type-assertion-failure]: Argument does not have expected type `Never`
107+
error[type-assertion-failure]: Argument does not have asserted type `Never`
135108
--> src/mdtest_snippet.py:11:5
136109
|
137110
9 | assert_never(None) # error: [type-assertion-failure]
138111
10 | assert_never([]) # error: [type-assertion-failure]
139112
11 | assert_never({}) # error: [type-assertion-failure]
140-
| ^^^^^^^^^^^^^^^^ Expected object of type `Never`
141-
12 | assert_never(()) # error: [type-assertion-failure]
142-
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
143-
|
144-
info: Inferred type is not equivalent to `Never`
145-
--> src/mdtest_snippet.py:11:18
146-
|
147-
9 | assert_never(None) # error: [type-assertion-failure]
148-
10 | assert_never([]) # error: [type-assertion-failure]
149-
11 | assert_never({}) # error: [type-assertion-failure]
150-
| ^^ Inferred type of argument is `dict[Unknown, Unknown]`
113+
| ^^^^^^^^^^^^^--^
114+
| |
115+
| Inferred type of argument is `dict[Unknown, Unknown]`
151116
12 | assert_never(()) # error: [type-assertion-failure]
152117
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
153118
|
119+
info: `Never` and `dict[Unknown, Unknown]` are not equivalent types
154120
info: rule `type-assertion-failure` is enabled by default
155121
156122
```
157123

158124
```
159-
error[type-assertion-failure]: Argument does not have expected type `Never`
125+
error[type-assertion-failure]: Argument does not have asserted type `Never`
160126
--> src/mdtest_snippet.py:12:5
161127
|
162128
10 | assert_never([]) # error: [type-assertion-failure]
163129
11 | assert_never({}) # error: [type-assertion-failure]
164130
12 | assert_never(()) # error: [type-assertion-failure]
165-
| ^^^^^^^^^^^^^^^^ Expected object of type `Never`
166-
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
167-
|
168-
info: Inferred type is not equivalent to `Never`
169-
--> src/mdtest_snippet.py:12:18
170-
|
171-
10 | assert_never([]) # error: [type-assertion-failure]
172-
11 | assert_never({}) # error: [type-assertion-failure]
173-
12 | assert_never(()) # error: [type-assertion-failure]
174-
| ^^ Inferred type of argument is `tuple[()]`
131+
| ^^^^^^^^^^^^^--^
132+
| |
133+
| Inferred type of argument is `tuple[()]`
175134
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
176135
|
136+
info: `Never` and `tuple[()]` are not equivalent types
177137
info: rule `type-assertion-failure` is enabled by default
178138
179139
```
180140

181141
```
182-
error[type-assertion-failure]: Argument does not have expected type `Never`
142+
error[type-assertion-failure]: Argument does not have asserted type `Never`
183143
--> src/mdtest_snippet.py:13:5
184144
|
185145
11 | assert_never({}) # error: [type-assertion-failure]
186146
12 | assert_never(()) # error: [type-assertion-failure]
187147
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
188-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Expected object of type `Never`
189-
14 |
190-
15 | assert_never(any_) # error: [type-assertion-failure]
191-
|
192-
info: Inferred type is not equivalent to `Never`
193-
--> src/mdtest_snippet.py:13:18
194-
|
195-
11 | assert_never({}) # error: [type-assertion-failure]
196-
12 | assert_never(()) # error: [type-assertion-failure]
197-
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
198-
| ^^^^^^^^^^^^^^^^^^^^ Inferred type of argument is `Literal[1]`
148+
| ^^^^^^^^^^^^^--------------------^
149+
| |
150+
| Inferred type of argument is `Literal[1]`
199151
14 |
200152
15 | assert_never(any_) # error: [type-assertion-failure]
201153
|
154+
info: `Never` and `Literal[1]` are not equivalent types
202155
info: rule `type-assertion-failure` is enabled by default
203156
204157
```
205158

206159
```
207-
error[type-assertion-failure]: Argument does not have expected type `Never`
160+
error[type-assertion-failure]: Argument does not have asserted type `Never`
208161
--> src/mdtest_snippet.py:15:5
209162
|
210163
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
211164
14 |
212165
15 | assert_never(any_) # error: [type-assertion-failure]
213-
| ^^^^^^^^^^^^^^^^^^ Expected object of type `Never`
214-
16 | assert_never(unknown) # error: [type-assertion-failure]
215-
|
216-
info: Inferred type is not equivalent to `Never`
217-
--> src/mdtest_snippet.py:15:18
218-
|
219-
13 | assert_never(1 if flag else never) # error: [type-assertion-failure]
220-
14 |
221-
15 | assert_never(any_) # error: [type-assertion-failure]
222-
| ^^^^ Inferred type of argument is `Any`
166+
| ^^^^^^^^^^^^^----^
167+
| |
168+
| Inferred type of argument is `Any`
223169
16 | assert_never(unknown) # error: [type-assertion-failure]
224170
|
171+
info: `Never` and `Any` are not equivalent types
225172
info: rule `type-assertion-failure` is enabled by default
226173
227174
```
228175

229176
```
230-
error[type-assertion-failure]: Argument does not have expected type `Never`
177+
error[type-assertion-failure]: Argument does not have asserted type `Never`
231178
--> src/mdtest_snippet.py:16:5
232179
|
233180
15 | assert_never(any_) # error: [type-assertion-failure]
234181
16 | assert_never(unknown) # error: [type-assertion-failure]
235-
| ^^^^^^^^^^^^^^^^^^^^^ Expected object of type `Never`
236-
|
237-
info: Inferred type is not equivalent to `Never`
238-
--> src/mdtest_snippet.py:16:18
239-
|
240-
15 | assert_never(any_) # error: [type-assertion-failure]
241-
16 | assert_never(unknown) # error: [type-assertion-failure]
242-
| ^^^^^^^ Inferred type of argument is `Unknown`
182+
| ^^^^^^^^^^^^^-------^
183+
| |
184+
| Inferred type of argument is `Unknown`
243185
|
186+
info: `Never` and `Unknown` are not equivalent types
244187
info: rule `type-assertion-failure` is enabled by default
245188
246189
```

crates/ty_python_semantic/resources/mdtest/snapshots/assert_type.md_-_`assert_type`_-_Basic.snap

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,11 @@ error[type-assertion-failure]: Argument does not have asserted type `str`
2828
3 | def _(x: int):
2929
4 | assert_type(x, int) # fine
3030
5 | assert_type(x, str) # error: [type-assertion-failure]
31-
| ^^^^^^^^^^^^^^^^^^^ Expected object of type `str`
32-
|
33-
info: Asserted type is not equivalent to the inferred type
34-
--> src/mdtest_snippet.py:5:17
35-
|
36-
3 | def _(x: int):
37-
4 | assert_type(x, int) # fine
38-
5 | assert_type(x, str) # error: [type-assertion-failure]
39-
| ^ Inferred type of argument is `int`
31+
| ^^^^^^^^^^^^-^^^^^^
32+
| |
33+
| Inferred type of argument is `int`
4034
|
35+
info: `str` and `int` are not equivalent types
4136
info: rule `type-assertion-failure` is enabled by default
4237
4338
```

0 commit comments

Comments
 (0)