Skip to content

Commit 15d08f8

Browse files
authored
fix: use returns for functions that only specify the return value (#339)
Replace `ensures res == ...` with `returns ...` in functions whose postcondition only constrains the return value. This simplifies the code and improves readability by using the more idiomatic Verus specification style. Signed-off-by: Zhouqi Jiang <jiangzhouqi25@mails.ucas.ac.cn>
1 parent b4ec91d commit 15d08f8

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

ostd/specs/arch/x86_64/page_table_entry.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ impl PageTableEntry {
111111

112112
#[verifier::external_body]
113113
#[verifier::when_used_as_spec(format_flags_spec)]
114-
pub fn format_flags(prop: PageProperty) -> (res: usize)
115-
ensures res == Self::format_flags_spec(prop)
114+
pub fn format_flags(prop: PageProperty) -> usize
115+
returns Self::format_flags_spec(prop)
116116
{
117117
let flags: u8 = prop.flags.value();
118118
let priv_flags: u8 = prop.priv_flags.value();
@@ -149,8 +149,8 @@ impl PageTableEntry {
149149

150150
#[verifier::external_body]
151151
#[verifier::when_used_as_spec(format_property_spec)]
152-
pub fn format_property(entry: usize) -> (res: PageProperty)
153-
ensures res == Self::format_property_spec(entry)
152+
pub fn format_property(entry: usize) -> PageProperty
153+
returns Self::format_property_spec(entry)
154154
{
155155
let flags = entry.map_backward(&PAGE_FLAG_MAPPING)
156156
| entry.map_invert_backward(&PAGE_INVERTED_FLAG_MAPPING);
@@ -189,8 +189,8 @@ impl PageTableEntryTrait for PageTableEntry {
189189
}
190190

191191
#[inline(always)]
192-
fn default() -> (res: Self)
193-
ensures res == Self::default_spec()
192+
fn default() -> Self
193+
returns Self::default_spec()
194194
{
195195
Self { 0: 0 }
196196
}
@@ -213,8 +213,8 @@ impl PageTableEntryTrait for PageTableEntry {
213213
}
214214

215215
#[inline(always)]
216-
fn as_usize(self) -> (res: usize)
217-
ensures res == self.as_usize_spec()
216+
fn as_usize(self) -> usize
217+
returns self.as_usize_spec()
218218
{
219219
self.0 as usize
220220
}
@@ -225,8 +225,8 @@ impl PageTableEntryTrait for PageTableEntry {
225225
}
226226

227227
#[inline(always)]
228-
fn is_present(&self) -> (res: bool)
229-
ensures res == self.is_present_spec()
228+
fn is_present(&self) -> bool
229+
returns self.is_present_spec()
230230
{
231231
self.0 & PageTableFlags::PRESENT() != 0
232232
}
@@ -277,8 +277,8 @@ impl PageTableEntryTrait for PageTableEntry {
277277
}
278278

279279
#[inline(always)]
280-
fn paddr(&self) -> (res: Paddr)
281-
ensures res == self.paddr_spec()
280+
fn paddr(&self) -> Paddr
281+
returns self.paddr_spec()
282282
{
283283
self.0 & PHYS_ADDR_MASK
284284
}
@@ -289,8 +289,8 @@ impl PageTableEntryTrait for PageTableEntry {
289289
}
290290

291291
#[inline(always)]
292-
fn prop(&self) -> (res: PageProperty)
293-
ensures res == self.prop_spec()
292+
fn prop(&self) -> PageProperty
293+
returns self.prop_spec()
294294
{
295295
Self::format_property(self.0)
296296
}
@@ -301,8 +301,8 @@ impl PageTableEntryTrait for PageTableEntry {
301301
}
302302

303303
#[inline(always)]
304-
fn is_last(&self, level: PagingLevel) -> (res: bool)
305-
ensures res == self.is_last_spec(level)
304+
fn is_last(&self, level: PagingLevel) -> bool
305+
returns self.is_last_spec(level)
306306
{
307307
level == 1 || (self.0 & PageTableFlags::HUGE() != 0)
308308
}

ostd/src/mm/page_prop.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@ impl PageProperty {
4646
}
4747

4848
#[verifier::when_used_as_spec(new_spec)]
49-
pub fn new(flags: PageFlags, cache: CachePolicy) -> (res: Self)
50-
ensures
51-
res == Self::new_spec(flags, cache),
49+
pub fn new(flags: PageFlags, cache: CachePolicy) -> Self
50+
returns Self::new_spec(flags, cache),
5251
{
5352
Self { flags, cache, priv_flags: PrivilegedPageFlags::USER() }
5453
}
@@ -62,9 +61,8 @@ impl PageProperty {
6261
}
6362

6463
#[verifier::when_used_as_spec(new_absent_spec)]
65-
pub fn new_absent() -> (res: Self)
66-
ensures
67-
res == Self::new_absent_spec(),
64+
pub fn new_absent() -> Self
65+
returns Self::new_absent_spec(),
6866
{
6967
Self {
7068
flags: PageFlags::empty(),

0 commit comments

Comments
 (0)