Skip to content

Commit cf3f4c8

Browse files
committed
StructSignatureBuilder
commit-id:f73980e3
1 parent 2dd0620 commit cf3f4c8

21 files changed

+510
-147
lines changed

Cargo.lock

Lines changed: 74 additions & 77 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -183,38 +183,38 @@ strip = "debuginfo"
183183
opt-level = 3
184184

185185
[patch.crates-io]
186-
cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
187-
cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
188-
cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
189-
cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
190-
cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
191-
cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
192-
cairo-lang-eq-solver = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
193-
cairo-lang-executable = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
194-
cairo-lang-executable-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
195-
cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
196-
cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
197-
cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
198-
cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
199-
cairo-lang-plugins = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
200-
cairo-lang-proc-macros = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
201-
cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
202-
cairo-lang-runnable-utils = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
203-
cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
204-
cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
205-
cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
206-
cairo-lang-sierra-ap-change = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
207-
cairo-lang-sierra-gas = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
208-
cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
209-
cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
210-
cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
211-
cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
212-
cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
213-
cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
214-
cairo-lang-syntax-codegen = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
215-
cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
216-
cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
217-
cairo-lang-test-utils = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
218-
cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "9af4f9f5dfee9e3ceb8e21b375926677dae7df53" }
186+
cairo-lang-casm = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
187+
cairo-lang-compiler = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
188+
cairo-lang-debug = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
189+
cairo-lang-defs = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
190+
cairo-lang-diagnostics = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
191+
cairo-lang-doc = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
192+
cairo-lang-eq-solver = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
193+
cairo-lang-executable = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
194+
cairo-lang-executable-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
195+
cairo-lang-filesystem = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
196+
cairo-lang-formatter = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
197+
cairo-lang-lowering = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
198+
cairo-lang-parser = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
199+
cairo-lang-plugins = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
200+
cairo-lang-proc-macros = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
201+
cairo-lang-project = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
202+
cairo-lang-runnable-utils = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
203+
cairo-lang-runner = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
204+
cairo-lang-semantic = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
205+
cairo-lang-sierra = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
206+
cairo-lang-sierra-ap-change = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
207+
cairo-lang-sierra-gas = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
208+
cairo-lang-sierra-generator = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
209+
cairo-lang-sierra-to-casm = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
210+
cairo-lang-sierra-type-size = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
211+
cairo-lang-starknet = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
212+
cairo-lang-starknet-classes = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
213+
cairo-lang-syntax = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
214+
cairo-lang-syntax-codegen = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
215+
cairo-lang-test-plugin = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
216+
cairo-lang-test-runner = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
217+
cairo-lang-test-utils = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
218+
cairo-lang-utils = { git = "https://github.com/starkware-libs/cairo", rev = "81eb71aa23ce91d8d2f770a4415b0648346a398e" }
219219
cairo-language-server = { git = "https://github.com/software-mansion/cairols", rev = "c7039c331c74ef9c2f9fd537434157ad2870fd3f" }
220220
cairo-lint = { git = "https://github.com/software-mansion/cairo-lint.git", rev = "73ef36f59dc81848abfffbeb028695d29409023c"}

extensions/scarb-doc/src/types/module_type.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use crate::types::groups::{
88
};
99
use crate::types::item_data::ItemData;
1010
use crate::types::other_types::{
11-
Constant, Enum, ExternFunction, ExternType, FreeFunction, Impl, ImplAlias,
12-
MacroDeclaration, Trait, TypeAlias,
11+
Constant, Enum, ExternFunction, ExternType, FreeFunction, Impl, ImplAlias, MacroDeclaration,
12+
Trait, TypeAlias,
1313
};
1414
use crate::types::struct_types::Struct;
1515
use cairo_lang_defs::db::DefsGroup;

extensions/scarb-doc/src/types/other_types.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
use cairo_lang_defs::ids::NamedLanguageElementId;
21
use crate::db::ScarbDocDatabase;
32
use crate::docs_generation::markdown::context::IncludedItems;
43
use crate::docs_generation::markdown::traits::WithPath;
54
use crate::types::item_data::{ItemData, SubItemData};
6-
use cairo_lang_defs::ids::{ConstantId, EnumId, ExternFunctionId, ExternTypeId, FreeFunctionId, ImplAliasId, ModuleId, ImplConstantDefId, ImplDefId, ImplFunctionId, ImplItemId, ImplTypeDefId, LanguageElementId, LookupItemId, ModuleItemId, VariantId, ModuleTypeAliasId, TraitId, TraitConstantId, TraitTypeId, TraitItemId, TraitFunctionId, MacroDeclarationId};
5+
use cairo_lang_defs::ids::NamedLanguageElementId;
6+
use cairo_lang_defs::ids::{
7+
ConstantId, EnumId, ExternFunctionId, ExternTypeId, FreeFunctionId, ImplAliasId,
8+
ImplConstantDefId, ImplDefId, ImplFunctionId, ImplItemId, ImplTypeDefId, LanguageElementId,
9+
LookupItemId, MacroDeclarationId, ModuleId, ModuleItemId, ModuleTypeAliasId, TraitConstantId,
10+
TraitFunctionId, TraitId, TraitItemId, TraitTypeId, VariantId,
11+
};
712
use cairo_lang_diagnostics::Maybe;
813
use cairo_lang_doc::documentable_item::DocumentableItemId;
914
use cairo_lang_semantic::items::enm::EnumSemantic;

extensions/scarb-doc/src/types/struct_types.rs

Lines changed: 169 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
use crate::db::ScarbDocDatabase;
2+
use crate::docs_generation::markdown::context::IncludedItems;
3+
use crate::docs_generation::markdown::traits::WithPath;
4+
use crate::location_links::DocLocationLink;
5+
use crate::types::item_data::ItemData;
26
use crate::types::module_type::is_doc_hidden_attr;
37
use crate::types::other_types::doc_full_path;
4-
use crate::types::item_data::ItemData;
58
use cairo_lang_defs::ids::{
69
LanguageElementId, LookupItemId, MemberId, ModuleItemId, NamedLanguageElementId, StructId,
10+
TopLevelLanguageElementId,
711
};
812
use cairo_lang_diagnostics::Maybe;
13+
use cairo_lang_doc::db::DocGroup;
914
use cairo_lang_doc::documentable_item::DocumentableItemId;
15+
use cairo_lang_doc::helpers::{
16+
get_generic_params, get_struct_attributes_syntax, get_syntactic_visibility,
17+
};
18+
use cairo_lang_doc::location_links::{LocationLink, format_signature};
19+
use cairo_lang_doc::signature_data::SignatureDataRetriever;
1020
use cairo_lang_semantic::items::structure::StructSemantic;
1121
use cairo_lang_semantic::items::visibility::Visibility;
1222
use cairo_lang_syntax::node::ast;
1323
use serde::Serialize;
14-
use crate::docs_generation::markdown::context::IncludedItems;
15-
use crate::docs_generation::markdown::traits::WithPath;
1624

1725
#[derive(Serialize, Clone)]
1826
pub struct Struct<'db> {
@@ -30,31 +38,19 @@ impl<'db> Struct<'db> {
3038
id: StructId<'db>,
3139
include_private_items: bool,
3240
) -> Maybe<Self> {
33-
let members = db.struct_members(id)?;
34-
35-
let item_data = ItemData::new(
41+
let mut item_data = ItemData::new_without_signature(
3642
db,
3743
id,
3844
LookupItemId::ModuleItem(ModuleItemId::Struct(id)).into(),
39-
doc_full_path(&id.parent_module(db), db),
4045
);
41-
let members = members
42-
.iter()
43-
.filter_map(|(_, semantic_member)| {
44-
let visible = matches!(semantic_member.visibility, Visibility::Public);
45-
let syntax_node = &semantic_member.id.stable_location(db).syntax_node(db);
46-
if (include_private_items || visible) && !is_doc_hidden_attr(db, syntax_node) {
47-
Some(Ok(Member::new(db, semantic_member.id)))
48-
} else {
49-
None
50-
}
51-
})
52-
.collect::<Maybe<Vec<_>>>()?;
46+
let mut signature_builder = StructSignatureBuilder::new(db, id, include_private_items);
47+
let (signature, location_links, members) = signature_builder.build_signature(db);
48+
item_data.signature = Some(signature);
49+
item_data.doc_location_links = location_links;
5350

54-
let node = id.stable_ptr(db);
5551
Ok(Self {
5652
id,
57-
node,
53+
node: id.stable_ptr(db),
5854
members,
5955
item_data,
6056
})
@@ -68,6 +64,158 @@ impl<'db> Struct<'db> {
6864
}
6965
}
7066

67+
struct MemberDataHelper<'db> {
68+
signature: Option<String>,
69+
member_id: MemberId<'db>,
70+
location_links: Vec<LocationLink<'db>>,
71+
}
72+
73+
impl<'db> MemberDataHelper<'db> {
74+
fn new(member_id: MemberId<'db>, db: &'db ScarbDocDatabase) -> Self {
75+
let (signature, location_links) =
76+
db.get_item_signature_with_links(DocumentableItemId::Member(member_id));
77+
Self {
78+
signature,
79+
member_id,
80+
location_links,
81+
}
82+
}
83+
}
84+
85+
struct StructSignatureBuilder<'a> {
86+
members_data: Vec<MemberDataHelper<'a>>,
87+
has_private_members: bool,
88+
has_public_members: bool,
89+
buff: String,
90+
location_links: Vec<LocationLink<'a>>,
91+
}
92+
93+
impl<'db> StructSignatureBuilder<'db> {
94+
const INDENT: &'static str = " ";
95+
const PRIVATE_MEMBERS: &'static str = "/* private fields */";
96+
97+
fn new(db: &'db ScarbDocDatabase, id: StructId<'db>, include_private_items: bool) -> Self {
98+
let members = db.struct_members(id).expect(&format!(
99+
"Failed to get members of struct: {}",
100+
id.full_path(db)
101+
));
102+
let signature_data = StructId::retrieve_signature_data(db, id).expect(&format!(
103+
"Failed to get signature data for struct: {}",
104+
id.full_path(db)
105+
));
106+
107+
let mut buff = String::new();
108+
let mut location_links = Vec::new();
109+
110+
if let Some(attributes) = signature_data.attributes {
111+
let attributes_syntax = get_struct_attributes_syntax(attributes, db).expect(&format!(
112+
"Failed to format attributes syntax for struct: {}",
113+
id.full_path(db)
114+
));
115+
116+
buff.push_str(&attributes_syntax);
117+
}
118+
buff.push_str(&format!(
119+
"{}struct {}",
120+
get_syntactic_visibility(&signature_data.visibility),
121+
signature_data.name.long(db)
122+
));
123+
124+
if let Some(generic_params) = signature_data.generic_params {
125+
let (stx, _location_links) = get_generic_params(generic_params, db).expect(&format!(
126+
"Failed to get format params for struct: {}",
127+
id.full_path(db)
128+
));
129+
130+
buff.push_str(&stx);
131+
location_links.extend(_location_links);
132+
}
133+
let mut has_private_members = false;
134+
let mut has_public_members = false;
135+
136+
let members_data: Vec<MemberDataHelper> = members
137+
.iter()
138+
.filter_map(|(_, semantic_member)| {
139+
let visible = matches!(semantic_member.visibility, Visibility::Public);
140+
let syntax_node = &semantic_member.id.stable_location(db).syntax_node(db);
141+
142+
if (include_private_items || visible) && !is_doc_hidden_attr(db, syntax_node) {
143+
let mdh = MemberDataHelper::new(semantic_member.id, db);
144+
has_public_members = true;
145+
Some(Ok(mdh))
146+
} else {
147+
has_private_members = true;
148+
None
149+
}
150+
})
151+
.collect::<Maybe<Vec<_>>>()
152+
.expect(&format!(
153+
"Failed to collect members data for struct: {}",
154+
id.full_path(db)
155+
));
156+
157+
StructSignatureBuilder {
158+
members_data,
159+
has_private_members,
160+
has_public_members,
161+
buff,
162+
location_links,
163+
}
164+
}
165+
166+
fn build_signature(
167+
&mut self,
168+
db: &'db ScarbDocDatabase,
169+
) -> (String, Vec<DocLocationLink>, Vec<Member<'db>>) {
170+
let mut members = Vec::new();
171+
self.buff.push_str(" {");
172+
173+
for mdh in &self.members_data {
174+
members.push(Member::new(db, mdh.member_id));
175+
let mut offset = self.buff.len();
176+
offset += "\n".len() + Self::INDENT.len();
177+
178+
let formatted_member_signature = format!(
179+
"\n{}{},",
180+
Self::INDENT,
181+
mdh.signature.clone().unwrap_or_default()
182+
);
183+
self.buff.push_str(&formatted_member_signature);
184+
self.location_links.extend(
185+
mdh.location_links
186+
.iter()
187+
.map(|link| LocationLink::new(link.start, link.end, link.item_id, offset))
188+
.collect::<Vec<_>>(),
189+
);
190+
}
191+
192+
if !&self.members_data.is_empty() {
193+
self.buff.push('\n');
194+
}
195+
196+
if self.has_private_members {
197+
let (prefix, postfix) = if self.has_public_members {
198+
(Self::INDENT, "\n")
199+
} else {
200+
(" ", " ")
201+
};
202+
self.buff
203+
.push_str(&format!("{prefix}{}{postfix}", Self::PRIVATE_MEMBERS));
204+
}
205+
self.buff.push('}');
206+
207+
let (new_sig_formatted, formatted_location_links) =
208+
format_signature(db, self.buff.clone(), self.location_links.clone());
209+
210+
let doc_location_links = formatted_location_links
211+
.iter()
212+
.map(|link| DocLocationLink::new(link.start, link.end, link.item_id, db))
213+
.collect::<Vec<_>>();
214+
215+
(new_sig_formatted, doc_location_links, members)
216+
}
217+
}
218+
71219
#[derive(Serialize, Clone)]
72220
pub struct Member<'db> {
73221
#[serde(skip)]

extensions/scarb-doc/tests/code/code_8.cairo

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,22 @@ mod inner_module {
1414
#[doc(group: "invisible group")]
1515
pub fn this_should_not_be_documented() {}
1616

17+
pub struct LinkedStruct {}
18+
19+
pub struct TestMembersVisibility {
20+
invisible_field: felt252,
21+
invisible_field2_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_one: felt252,
22+
pub visible_field: LinkedStruct,
23+
pub visible_field2_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_one: LinkedStruct,
24+
invisible_field3: felt252,
25+
}
26+
27+
#[doc(group: "visible")]
28+
pub struct TestMembersVisibility2 {
29+
no_fields_should_be_documented: LinkedStruct,
30+
}
31+
32+
1733
}
1834

1935
mod macro_module {
@@ -29,3 +45,4 @@ mod macro_module {
2945
pub use inner_module::visible_in_reeksports;
3046
pub use inner_module::inner_function_visible_in_group;
3147
pub use macro_module::macro_definition;
48+
pub use inner_module::{LinkedStruct, TestMembersVisibility, TestMembersVisibility2};

extensions/scarb-doc/tests/data/expose_macros/src/hello_world-OuterStruct.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Fully qualified path: [hello_world](./hello_world.md)::[OuterStruct](./hello_wor
66

77
<pre><code class="language-cairo">pub struct OuterStruct {
88
pub work: felt252,
9-
properly: felt252,
9+
/* private fields */
1010
}</code></pre>
1111

1212
## Members

extensions/scarb-doc/tests/data/expose_macros/src/hello_world-regina-VisibleStruct.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Fully qualified path: [hello_world](./hello_world.md)::[regina](./hello_world-re
66

77
<pre><code class="language-cairo">pub struct VisibleStruct {
88
pub works: felt252,
9-
properly: felt252,
9+
/* private fields */
1010
}</code></pre>
1111

1212
## Members

0 commit comments

Comments
 (0)