contracts 0.6.7

Design-by-contract attributes
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

use proc_macro2::TokenStream;

use crate::implementation::{ContractMode, ContractType, FuncWithContracts};

pub(crate) fn ensures(mode: ContractMode, attr: TokenStream, toks: TokenStream) -> TokenStream {
    let ty = ContractType::Ensures;

    let func = syn::parse_quote!(#toks);

    let f = FuncWithContracts::new_with_initial_contract(func, ty, mode, attr);

    f.generate()
}