From 5bb2445b82b57200d60d9aa73e780dabddd9ef5e Mon Sep 17 00:00:00 2001 From: Mariusz Woloszyn Date: Mon, 1 Aug 2022 16:28:23 +0200 Subject: [PATCH 1/5] Implement end_position for MethodDeclaration() --- javalang/parser.py | 8 ++++++-- javalang/tree.py | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/javalang/parser.py b/javalang/parser.py index fb8623e..b8ce2fc 100644 --- a/javalang/parser.py +++ b/javalang/parser.py @@ -890,6 +890,7 @@ def parse_method_declarator_rest(self): return tree.MethodDeclaration(parameters=formal_parameters, throws=throws, body=body, + end_position=self.tokens.last().position, return_type=tree.Type(dimensions=additional_dimensions)) @parse_debug @@ -908,7 +909,8 @@ def parse_void_method_declarator_rest(self): return tree.MethodDeclaration(parameters=formal_parameters, throws=throws, - body=body) + body=body, + end_position=self.tokens.last().position) @parse_debug def parse_constructor_declarator_rest(self): @@ -1086,6 +1088,7 @@ def parse_interface_method_declarator_rest(self): return tree.MethodDeclaration(parameters=parameters, throws=throws, body=body, + end_position=self.tokens.last().position, return_type=tree.Type(dimensions=array_dimension)) @parse_debug @@ -1104,7 +1107,8 @@ def parse_void_interface_method_declarator_rest(self): return tree.MethodDeclaration(parameters=parameters, throws=throws, - body=body) + body=body, + end_position=self.tokens.last().position) @parse_debug def parse_interface_generic_method_declarator(self): diff --git a/javalang/tree.py b/javalang/tree.py index 77e7a37..8678b98 100644 --- a/javalang/tree.py +++ b/javalang/tree.py @@ -89,7 +89,8 @@ class Member(Documented): attrs = () class MethodDeclaration(Member, Declaration): - attrs = ("type_parameters", "return_type", "name", "parameters", "throws", "body") + attrs = ("type_parameters", "return_type", "name", "parameters", "throws", "body", + "end_position") class FieldDeclaration(Member, Declaration): attrs = ("type", "declarators") From d8beef9a15b1bff04e2ed117040bea5c0f01e2f8 Mon Sep 17 00:00:00 2001 From: Mariusz Woloszyn Date: Sat, 8 Apr 2023 21:35:48 +0200 Subject: [PATCH 2/5] implement _end_postition for TryStatement --- javalang/parser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/javalang/parser.py b/javalang/parser.py index b8ce2fc..e3d5980 100644 --- a/javalang/parser.py +++ b/javalang/parser.py @@ -1539,6 +1539,7 @@ def parse_statement(self): catches=catches, finally_block=finally_block) statement._position = token.position + statement._end_position = self.tokens.last().position return statement else: From 5f798095252356c697fb326f6c4c477c612e8ea3 Mon Sep 17 00:00:00 2001 From: Mariusz Woloszyn Date: Sat, 8 Apr 2023 22:05:36 +0200 Subject: [PATCH 3/5] implement end_postition for TryStatement and CatchClause --- javalang/parser.py | 8 ++++++-- javalang/tree.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/javalang/parser.py b/javalang/parser.py index e3d5980..b501bc6 100644 --- a/javalang/parser.py +++ b/javalang/parser.py @@ -1537,9 +1537,9 @@ def parse_statement(self): statement = tree.TryStatement(resources=resource_specification, block=block, catches=catches, + end_position=self.tokens.last().position, finally_block=finally_block) statement._position = token.position - statement._end_position = self.tokens.last().position return statement else: @@ -1584,7 +1584,11 @@ def parse_catch_clause(self): self.accept(')') block = self.parse_block() - return tree.CatchClause(parameter=catch_parameter, block=block) + return tree.CatchClause( + parameter=catch_parameter, + block=block, + end_position=self.tokens.last().position, + ) @parse_debug def parse_resource_specification(self): diff --git a/javalang/tree.py b/javalang/tree.py index 8678b98..f83167d 100644 --- a/javalang/tree.py +++ b/javalang/tree.py @@ -157,7 +157,7 @@ class SynchronizedStatement(Statement): attrs = ("lock", "block") class TryStatement(Statement): - attrs = ("resources", "block", "catches", "finally_block") + attrs = ("resources", "block", "catches", "finally_block", "end_position") class SwitchStatement(Statement): attrs = ("expression", "cases") @@ -174,7 +174,7 @@ class TryResource(Declaration): attrs = ("type", "name", "value") class CatchClause(Statement): - attrs = ("parameter", "block") + attrs = ("parameter", "block", "end_position") class CatchClauseParameter(Declaration): attrs = ("types", "name") From 6e7719795cf1d2c3c8f36c4a714eb660579c422a Mon Sep 17 00:00:00 2001 From: Ani Hovhannisyan Date: Thu, 8 Jun 2023 20:48:58 +0900 Subject: [PATCH 4/5] Added class declaration end_position --- javalang/parser.py | 1 + javalang/tree.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/javalang/parser.py b/javalang/parser.py index b501bc6..07cfa7a 100644 --- a/javalang/parser.py +++ b/javalang/parser.py @@ -397,6 +397,7 @@ def parse_normal_class_declaration(self): type_parameters=type_params, extends=extends, implements=implements, + end_position=self.tokens.last().position, body=body) @parse_debug diff --git a/javalang/tree.py b/javalang/tree.py index f83167d..0de0987 100644 --- a/javalang/tree.py +++ b/javalang/tree.py @@ -34,7 +34,8 @@ class PackageDeclaration(Declaration, Documented): attrs = ("name",) class ClassDeclaration(TypeDeclaration): - attrs = ("type_parameters", "extends", "implements") + attrs = ("type_parameters", "extends", "implements", "end_position") + class EnumDeclaration(TypeDeclaration): attrs = ("implements",) From 304cf6379d9634e4ada5ea920d060a4ac2f21526 Mon Sep 17 00:00:00 2001 From: Ani Hovhannisyan Date: Sat, 10 Jun 2023 11:33:44 +0900 Subject: [PATCH 5/5] Added end position for Constructor too. --- javalang/parser.py | 1 + javalang/tree.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/javalang/parser.py b/javalang/parser.py index 07cfa7a..9fe8931 100644 --- a/javalang/parser.py +++ b/javalang/parser.py @@ -926,6 +926,7 @@ def parse_constructor_declarator_rest(self): return tree.ConstructorDeclaration(parameters=formal_parameters, throws=throws, + end_position=self.tokens.last().position, body=body) @parse_debug diff --git a/javalang/tree.py b/javalang/tree.py index 0de0987..5ca8adb 100644 --- a/javalang/tree.py +++ b/javalang/tree.py @@ -97,7 +97,8 @@ class FieldDeclaration(Member, Declaration): attrs = ("type", "declarators") class ConstructorDeclaration(Declaration, Documented): - attrs = ("type_parameters", "name", "parameters", "throws", "body") + attrs = ("type_parameters", "name", "parameters", "throws", "body", + "end_position") # ------------------------------------------------------------------------------