From c7271140cb8c970abd387276cfe04541d8c45367 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 14 May 2026 16:57:09 +0200 Subject: [PATCH] Fix decorator application source locations. --- .../src/tests/unittest_tags/test_inspect.txt | 9 ++++----- .../src/tests/unittest_tags/test_traceback.txt | 3 +-- .../python/compiler/bytecode_dsl/RootNodeCompiler.java | 3 +++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_inspect.txt b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_inspect.txt index f3b355b98b..b474dad0ec 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_inspect.txt +++ b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_inspect.txt @@ -62,12 +62,11 @@ test.test_inspect.test_inspect.TestClassesAndFunctions.test_pep_695_generic_meth test.test_inspect.test_inspect.TestClassesAndFunctions.test_pep_695_generic_method_with_future_annotations_name_clash_with_global_and_local_vars @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_inspect.test_inspect.TestClassesAndFunctions.test_pep_695_generic_method_with_future_annotations_name_clash_with_global_vars @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_inspect.test_inspect.TestClassesAndFunctions.test_pep_695_generics_with_future_annotations_nested_in_function @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -# GR-71889 -!test.test_inspect.test_inspect.TestComplexDecorator.test_parens_in_decorator @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 -!test.test_inspect.test_inspect.TestDecorators.test_decorator_with_lambda @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 -!test.test_inspect.test_inspect.TestDecorators.test_getsource_unwrap @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 +test.test_inspect.test_inspect.TestComplexDecorator.test_parens_in_decorator @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github +test.test_inspect.test_inspect.TestDecorators.test_decorator_with_lambda @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github +test.test_inspect.test_inspect.TestDecorators.test_getsource_unwrap @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_inspect.test_inspect.TestDecorators.test_replacing_decorator @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -!test.test_inspect.test_inspect.TestDecorators.test_wrapped_decorator @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 +test.test_inspect.test_inspect.TestDecorators.test_wrapped_decorator @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_inspect.test_inspect.TestFormatAnnotation.test_typing_replacement @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_inspect.test_inspect.TestGetAsyncGenState.test_easy_debugging @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github test.test_inspect.test_inspect.TestGetAsyncGenState.test_getasyncgenlocals @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github diff --git a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_traceback.txt b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_traceback.txt index 9fad1a9eb3..40ba8f3377 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_traceback.txt +++ b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_traceback.txt @@ -40,8 +40,7 @@ test.test_traceback.PurePythonTracebackErrorCaretTests.test_caret_for_subscript_ test.test_traceback.PurePythonTracebackErrorCaretTests.test_caret_in_type_annotation @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_traceback.PurePythonTracebackErrorCaretTests.test_caret_multiline_expression @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_traceback.PurePythonTracebackErrorCaretTests.test_caret_multiline_expression_bin_op @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -# GR-71889 -!test.test_traceback.PurePythonTracebackErrorCaretTests.test_decorator_application_lineno_correct @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 +test.test_traceback.PurePythonTracebackErrorCaretTests.test_decorator_application_lineno_correct @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_traceback.PurePythonTracebackErrorCaretTests.test_secondary_caret_not_elided @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_traceback.PurePythonTracebackErrorCaretTests.test_specialization_variations @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_traceback.PurePythonTracebackErrorCaretTests.test_traceback_specialization_with_syntax_error @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/bytecode_dsl/RootNodeCompiler.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/bytecode_dsl/RootNodeCompiler.java index c052dfa7b4..cc7bf0b7af 100644 --- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/bytecode_dsl/RootNodeCompiler.java +++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/compiler/bytecode_dsl/RootNodeCompiler.java @@ -4282,6 +4282,8 @@ public void beginWrapWithDecorators(ExprTy[] decorators) { return; } for (int i = 0; i < decorators.length; i++) { + // Attribute the eventual decorator call to the decorator expression, not the def/class line. + beginSourceSectionInner(b, decorators[i].getSourceRange()); b.beginCallUnaryMethod(); // evaluation of the decorator expression b.beginTraceLineWithArgument(); @@ -4305,6 +4307,7 @@ public void endWrapWithDecorators(ExprTy[] decorators) { // need to flip them manually b.endTraceLineWithArgument(decorators[decorators.length - 1 - i].getSourceRange().startLine); b.endCallUnaryMethod(); + b.endSourceSection(); } }