Skip to content

Commit a1e9177

Browse files
committed
Incapsulate validation of UserTypeRef in the method
1 parent 673a024 commit a1e9177

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/model/mod.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -763,12 +763,7 @@ impl TypeRef {
763763
enum_: e.transpose()?,
764764
}),
765765
AttrType::User { name, args } => if let None = e {
766-
Ok(TypeRef::User(UserTypeRef {
767-
//TODO: resolve relative types
768-
path: name.scope.path.into_iter().map(TypeName::valid).collect(),
769-
name: TypeName::valid(name.name),
770-
args: OwningNode::validate_all(args)?,
771-
}))
766+
Ok(TypeRef::User(UserTypeRef::validate(name, args)?))
772767
} else {
773768
enum_err()
774769
}

src/model/type.rs

+11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use crate::error::ModelError;
88
use crate::model::expressions::OwningNode;
99
use crate::model::{Attribute, Enum, EnumName, SeqName, TypeName};
1010
use crate::parser as p;
11+
use crate::parser::expressions::{Node, TypeName as TName};
1112

1213
/// Reference to a user-defined type name with an optional parameters.
1314
#[derive(Clone, Debug, Default, PartialEq)]
@@ -19,6 +20,16 @@ pub struct UserTypeRef {
1920
/// Optional arguments for type
2021
pub args: Vec<OwningNode>,
2122
}
23+
impl UserTypeRef {
24+
pub(crate) fn validate(name: TName, args: Vec<Node>) -> Result<Self, ModelError> {
25+
Ok(Self {
26+
//TODO: resolve relative types
27+
path: name.scope.path.into_iter().map(TypeName::valid).collect(),
28+
name: TypeName::valid(name.name),
29+
args: OwningNode::validate_all(args)?,
30+
})
31+
}
32+
}
2233

2334
////////////////////////////////////////////////////////////////////////////////////////////////////
2435

0 commit comments

Comments
 (0)