Skip to content

Commit cd796de

Browse files
authored
fix: correct formatting for databus visibility types (#4423)
# Description ## Problem\* Resolves <!-- Link to GitHub Issue --> ## Summary\* This PR fixes an issue uncovered by #4422 where we're not properly formatting databus visibility modifiers. I've fixed this and added a new test case for regressions. ## Additional Context ## Documentation\* Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[Exceptional Case]** Documentation to be submitted in a separate PR. # PR Checklist\* - [x] I have tested the changes locally. - [x] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
1 parent ab25b5e commit cd796de

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

tooling/nargo_fmt/src/utils.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::borrow::Cow;
2+
13
use crate::items::HasItem;
24
use crate::rewrite;
35
use crate::visitor::{FmtVisitor, Shape};
@@ -143,7 +145,7 @@ impl HasItem for Param {
143145
fn format(self, visitor: &FmtVisitor, shape: Shape) -> String {
144146
let pattern = visitor.slice(self.pattern.span());
145147
let visibility = match self.visibility {
146-
Visibility::Public => "pub ",
148+
Visibility::Public => "pub",
147149
Visibility::Private => "",
148150
Visibility::DataBus => "call_data",
149151
};
@@ -152,6 +154,7 @@ impl HasItem for Param {
152154
pattern.to_string()
153155
} else {
154156
let ty = rewrite::typ(visitor, shape, self.typ);
157+
let visibility = append_space_if_nonempty(visibility.into());
155158
format!("{pattern}: {visibility}{ty}")
156159
}
157160
}
@@ -183,6 +186,15 @@ pub(crate) fn last_line_contains_single_line_comment(s: &str) -> bool {
183186
s.lines().last().map_or(false, |line| line.contains("//"))
184187
}
185188

189+
pub(crate) fn append_space_if_nonempty(mut string: Cow<str>) -> Cow<str> {
190+
if !string.is_empty() {
191+
let inner = string.to_mut();
192+
inner.push(' ');
193+
}
194+
195+
string
196+
}
197+
186198
pub(crate) fn last_line_used_width(s: &str, offset: usize) -> usize {
187199
if s.contains('\n') {
188200
last_line_width(s)

tooling/nargo_fmt/src/visitor/item.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ use noirc_frontend::{
77

88
use crate::{
99
rewrite::{self, UseTree},
10-
utils::{last_line_contains_single_line_comment, last_line_used_width, FindToken},
10+
utils::{
11+
append_space_if_nonempty, last_line_contains_single_line_comment, last_line_used_width,
12+
FindToken,
13+
},
1114
visitor::expr::{format_seq, NewlineMode},
1215
};
1316

@@ -119,9 +122,12 @@ impl super::FmtVisitor<'_> {
119122
result.push_str("distinct ");
120123
}
121124

122-
if let Visibility::Public = func.def.return_visibility {
123-
result.push_str("pub ");
124-
}
125+
let visibility = match func.def.return_visibility {
126+
Visibility::Public => "pub",
127+
Visibility::DataBus => "return_data",
128+
Visibility::Private => "",
129+
};
130+
result.push_str(&append_space_if_nonempty(visibility.into()));
125131

126132
let typ = rewrite::typ(self, self.shape(), func.return_type());
127133
result.push_str(&typ);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
fn main(x: pub u8, y: call_data u8) -> return_data u32 {}
2+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
fn main(x: pub u8, y: call_data u8) -> return_data u32 {}
2+

0 commit comments

Comments
 (0)