Skip to content

Commit 03e7236

Browse files
committed
Avoid repetition in the primary diagnostic message
1 parent cb520d5 commit 03e7236

8 files changed

+389
-360
lines changed

crates/ty_python_semantic/resources/mdtest/final.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,31 @@ class Parent:
7676
def decorated_2(self): ...
7777

7878
class Child(Parent):
79-
def foo(self): ... # error: [override-of-final-method]
79+
# explicitly test the concise diagnostic message,
80+
# which is different to the verbose diagnostic summary message:
81+
#
82+
# error: [override-of-final-method] "Cannot override final member `foo` from superclass `Parent`"
83+
def foo(self): ...
8084
@property
8185
def my_property1(self) -> int: ... # error: [override-of-final-method]
86+
8287
@property
8388
def my_property2(self) -> int: ... # error: [override-of-final-method]
89+
8490
@classmethod
8591
def class_method1(cls) -> int: ... # error: [override-of-final-method]
92+
8693
@staticmethod
8794
def static_method1() -> int: ... # error: [override-of-final-method]
95+
8896
@classmethod
8997
def class_method2(cls) -> int: ... # error: [override-of-final-method]
98+
9099
@staticmethod
91100
def static_method2() -> int: ... # error: [override-of-final-method]
101+
92102
def decorated_1(self): ... # TODO: should emit [override-of-final-method]
103+
93104
@lossy_decorator
94105
def decorated_2(self): ... # TODO: should emit [override-of-final-method]
95106

@@ -181,6 +192,7 @@ class Good:
181192
def bar(self, x: str) -> str: ...
182193
@overload
183194
def bar(self, x: int) -> int: ...
195+
184196
@final
185197
@overload
186198
def baz(self, x: str) -> str: ...
@@ -192,6 +204,7 @@ class ChildOfGood(Good):
192204
def bar(self, x: str) -> str: ...
193205
@overload
194206
def bar(self, x: int) -> int: ... # error: [override-of-final-method]
207+
195208
@overload
196209
def baz(self, x: str) -> str: ...
197210
@overload
@@ -204,6 +217,7 @@ class Bad:
204217
@final
205218
# error: [invalid-overload]
206219
def bar(self, x: int) -> int: ...
220+
207221
@overload
208222
def baz(self, x: str) -> str: ...
209223
@final
@@ -216,6 +230,7 @@ class ChildOfBad(Bad):
216230
def bar(self, x: str) -> str: ...
217231
@overload
218232
def bar(self, x: int) -> int: ... # error: [override-of-final-method]
233+
219234
@overload
220235
def baz(self, x: str) -> str: ...
221236
@overload

crates/ty_python_semantic/resources/mdtest/snapshots/final.md_-_Tests_for_the_`@typi…_-_A_possibly-undefined…_(fc7b496fd1986deb).snap

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ error[override-of-final-method]: Cannot override `A.method1`
7575
|
7676
34 | class B(A):
7777
35 | def method1(self) -> None: ... # error: [override-of-final-method]
78-
| ^^^^^^^ Override of `method1` from superclass `A`
78+
| ^^^^^^^ Overrides a definition from superclass `A`
7979
36 | def method2(self) -> None: ... # error: [override-of-final-method]
8080
37 | def method3(self) -> None: ... # error: [override-of-final-method]
8181
|
@@ -112,7 +112,7 @@ error[override-of-final-method]: Cannot override `A.method2`
112112
34 | class B(A):
113113
35 | def method1(self) -> None: ... # error: [override-of-final-method]
114114
36 | def method2(self) -> None: ... # error: [override-of-final-method]
115-
| ^^^^^^^ Override of `method2` from superclass `A`
115+
| ^^^^^^^ Overrides a definition from superclass `A`
116116
37 | def method3(self) -> None: ... # error: [override-of-final-method]
117117
38 | def method4(self) -> None: ... # error: [override-of-final-method]
118118
|
@@ -149,7 +149,7 @@ error[override-of-final-method]: Cannot override `A.method3`
149149
35 | def method1(self) -> None: ... # error: [override-of-final-method]
150150
36 | def method2(self) -> None: ... # error: [override-of-final-method]
151151
37 | def method3(self) -> None: ... # error: [override-of-final-method]
152-
| ^^^^^^^ Override of `method3` from superclass `A`
152+
| ^^^^^^^ Overrides a definition from superclass `A`
153153
38 | def method4(self) -> None: ... # error: [override-of-final-method]
154154
|
155155
info: `A.method3` is decorated with `@final`, forbidding overrides
@@ -184,7 +184,7 @@ error[override-of-final-method]: Cannot override `A.method4`
184184
36 | def method2(self) -> None: ... # error: [override-of-final-method]
185185
37 | def method3(self) -> None: ... # error: [override-of-final-method]
186186
38 | def method4(self) -> None: ... # error: [override-of-final-method]
187-
| ^^^^^^^ Override of `method4` from superclass `A`
187+
| ^^^^^^^ Overrides a definition from superclass `A`
188188
39 |
189189
40 | # Possible overrides of possibly `@final` methods...
190190
|
@@ -221,7 +221,7 @@ error[override-of-final-method]: Cannot override `A.method1`
221221
44 | # statements inside the `if:` branch
222222
45 | # (but it might still be a useful autofix in an IDE context?)
223223
46 | def method1(self) -> None: ... # error: [override-of-final-method]
224-
| ^^^^^^^ Override of `method1` from superclass `A`
224+
| ^^^^^^^ Overrides a definition from superclass `A`
225225
47 | else:
226226
48 | pass
227227
|
@@ -257,7 +257,7 @@ error[override-of-final-method]: Cannot override `A.method2`
257257
|
258258
50 | if coinflip():
259259
51 | def method2(self) -> None: ... # error: [override-of-final-method]
260-
| ^^^^^^^ Override of `method2` from superclass `A`
260+
| ^^^^^^^ Overrides a definition from superclass `A`
261261
52 | def method3(self) -> None: ... # error: [override-of-final-method]
262262
53 | def method4(self) -> None: ... # error: [override-of-final-method]
263263
|
@@ -293,7 +293,7 @@ error[override-of-final-method]: Cannot override `A.method3`
293293
50 | if coinflip():
294294
51 | def method2(self) -> None: ... # error: [override-of-final-method]
295295
52 | def method3(self) -> None: ... # error: [override-of-final-method]
296-
| ^^^^^^^ Override of `method3` from superclass `A`
296+
| ^^^^^^^ Overrides a definition from superclass `A`
297297
53 | def method4(self) -> None: ... # error: [override-of-final-method]
298298
|
299299
info: `A.method3` is decorated with `@final`, forbidding overrides
@@ -326,7 +326,7 @@ error[override-of-final-method]: Cannot override `A.method4`
326326
51 | def method2(self) -> None: ... # error: [override-of-final-method]
327327
52 | def method3(self) -> None: ... # error: [override-of-final-method]
328328
53 | def method4(self) -> None: ... # error: [override-of-final-method]
329-
| ^^^^^^^ Override of `method4` from superclass `A`
329+
| ^^^^^^^ Overrides a definition from superclass `A`
330330
|
331331
info: `A.method4` is decorated with `@final`, forbidding overrides
332332
--> src/mdtest_snippet.py:29:9

0 commit comments

Comments
 (0)