@@ -240,6 +240,108 @@ def keep(
240240 )
241241
242242
243+ @pytest .mark .parametrize (
244+ ("source" , "declaration" ),
245+ [
246+ (
247+ """
248+ @decorator
249+ def keep( # codeclone: ignore[dead-code]
250+ arg: int,
251+ ) -> int:
252+ return arg
253+ """ .strip (),
254+ DeclarationTarget (
255+ filepath = "pkg/mod.py" ,
256+ qualname = "pkg.mod:keep" ,
257+ start_line = 2 ,
258+ end_line = 5 ,
259+ kind = "function" ,
260+ declaration_end_line = 4 ,
261+ ),
262+ ),
263+ (
264+ """
265+ async def keep_async( # codeclone: ignore[dead-code]
266+ arg: int,
267+ ) -> int:
268+ return arg
269+ """ .strip (),
270+ DeclarationTarget (
271+ filepath = "pkg/mod.py" ,
272+ qualname = "pkg.mod:keep_async" ,
273+ start_line = 1 ,
274+ end_line = 4 ,
275+ kind = "function" ,
276+ declaration_end_line = 3 ,
277+ ),
278+ ),
279+ (
280+ """
281+ class Demo( # codeclone: ignore[dead-code]
282+ Base,
283+ ):
284+ pass
285+ """ .strip (),
286+ DeclarationTarget (
287+ filepath = "pkg/mod.py" ,
288+ qualname = "pkg.mod:Demo" ,
289+ start_line = 1 ,
290+ end_line = 4 ,
291+ kind = "class" ,
292+ declaration_end_line = 3 ,
293+ ),
294+ ),
295+ ],
296+ )
297+ def test_bind_suppressions_supports_inline_on_multiline_declaration_start_line (
298+ source : str ,
299+ declaration : DeclarationTarget ,
300+ ) -> None :
301+ directives = extract_suppression_directives (source )
302+ bindings = bind_suppressions_to_declarations (
303+ directives = directives ,
304+ declarations = (declaration ,),
305+ )
306+ assert bindings == (
307+ SuppressionBinding (
308+ filepath = declaration .filepath ,
309+ qualname = declaration .qualname ,
310+ start_line = declaration .start_line ,
311+ end_line = declaration .end_line ,
312+ kind = declaration .kind ,
313+ rules = ("dead-code" ,),
314+ ),
315+ )
316+
317+
318+ def test_bind_suppressions_ignores_inline_comment_on_middle_signature_line () -> None :
319+ source = """
320+ def keep(
321+ arg: int, # codeclone: ignore[dead-code]
322+ ) -> int:
323+ return arg
324+ """ .strip ()
325+ directives = extract_suppression_directives (source )
326+ declarations = (
327+ DeclarationTarget (
328+ filepath = "pkg/mod.py" ,
329+ qualname = "pkg.mod:keep" ,
330+ start_line = 1 ,
331+ end_line = 4 ,
332+ kind = "function" ,
333+ declaration_end_line = 3 ,
334+ ),
335+ )
336+ assert (
337+ bind_suppressions_to_declarations (
338+ directives = directives ,
339+ declarations = declarations ,
340+ )
341+ == ()
342+ )
343+
344+
243345@pytest .mark .parametrize (
244346 ("source" , "declaration" ),
245347 [
0 commit comments