referrerpolicy=no-referrer-when-downgrade

frame_support_procedural/pallet/parse/
validate_unsigned.rs

1// This file is part of Substrate.
2
3// Copyright (C) Parity Technologies (UK) Ltd.
4// SPDX-License-Identifier: Apache-2.0
5
6// Licensed under the Apache License, Version 2.0 (the "License");
7// you may not use this file except in compliance with the License.
8// You may obtain a copy of the License at
9//
10// 	http://www.apache.org/licenses/LICENSE-2.0
11//
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
17
18use super::helper;
19use syn::spanned::Spanned;
20
21/// The definition of the pallet validate unsigned implementation.
22pub struct ValidateUnsignedDef {}
23
24impl ValidateUnsignedDef {
25	pub fn try_from(item: &mut syn::Item) -> syn::Result<Self> {
26		let item = if let syn::Item::Impl(item) = item {
27			item
28		} else {
29			let msg = "Invalid pallet::validate_unsigned, expected item impl";
30			return Err(syn::Error::new(item.span(), msg))
31		};
32
33		if item.trait_.is_none() {
34			let msg = "Invalid pallet::validate_unsigned, expected impl<..> ValidateUnsigned for \
35				Pallet<..>";
36			return Err(syn::Error::new(item.span(), msg))
37		}
38
39		if let Some(last) = item.trait_.as_ref().unwrap().1.segments.last() {
40			if last.ident != "ValidateUnsigned" {
41				let msg = "Invalid pallet::validate_unsigned, expected trait ValidateUnsigned";
42				return Err(syn::Error::new(last.span(), msg))
43			}
44		} else {
45			let msg = "Invalid pallet::validate_unsigned, expected impl<..> ValidateUnsigned for \
46				Pallet<..>";
47			return Err(syn::Error::new(item.span(), msg))
48		}
49
50		helper::check_pallet_struct_usage(&item.self_ty)?;
51		helper::check_impl_gen(&item.generics, item.impl_token.span())?;
52
53		Ok(ValidateUnsignedDef {})
54	}
55}