Skip to content

Commit e31c5bd

Browse files
committed
Linear Locator
1 parent a9586f7 commit e31c5bd

File tree

5 files changed

+1078
-18
lines changed

5 files changed

+1078
-18
lines changed

ast/asdl_rs.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,17 +1090,28 @@ def visitSum(self, sum, name, depth):
10901090
self.emit_located_impl(variant_info)
10911091

10921092
if not info.no_cfg(self.type_info):
1093-
self.emit('#[cfg(feature = "all-nodes-with-ranges")]', 0)
1093+
cfg = '#[cfg(feature = "all-nodes-with-ranges")]'
1094+
else:
1095+
cfg = ''
10941096

10951097
self.emit(
10961098
f"""
1099+
{cfg}
10971100
impl Located for {info.full_type_name} {{
10981101
fn range(&self) -> SourceRange {{
10991102
match self {{
11001103
{sum_match_arms}
11011104
}}
11021105
}}
11031106
}}
1107+
{cfg}
1108+
impl LocatedMut for {info.full_type_name} {{
1109+
fn range_mut(&mut self) -> &mut SourceRange {{
1110+
match self {{
1111+
{sum_match_arms.replace('range()', 'range_mut()')}
1112+
}}
1113+
}}
1114+
}}
11041115
""".lstrip(),
11051116
0,
11061117
)
@@ -1122,15 +1133,24 @@ def emit_type_alias(self, info):
11221133

11231134
def emit_located_impl(self, info):
11241135
if not info.no_cfg(self.type_info):
1125-
self.emit('#[cfg(feature = "all-nodes-with-ranges")]', 0)
1136+
cfg = '#[cfg(feature = "all-nodes-with-ranges")]'
1137+
else:
1138+
cfg = ''
11261139

11271140
self.emit(
11281141
f"""
1142+
{cfg}
11291143
impl Located for {info.full_type_name} {{
11301144
fn range(&self) -> SourceRange {{
11311145
self.range
11321146
}}
11331147
}}
1148+
{cfg}
1149+
impl LocatedMut for {info.full_type_name} {{
1150+
fn range_mut(&mut self) -> &mut SourceRange {{
1151+
&mut self.range
1152+
}}
1153+
}}
11341154
""",
11351155
0,
11361156
)

0 commit comments

Comments
 (0)