xidl_parser/hir/interface/
convert.rs1use super::*;
4
5impl From<crate::typed_ast::InterfaceDcl> for InterfaceDcl {
6 fn from(value: crate::typed_ast::InterfaceDcl) -> Self {
7 Self {
8 annotations: expand_annotations(value.annotations),
9 decl: value.decl.into(),
10 }
11 }
12}
13
14impl From<crate::typed_ast::InterfaceDclInner> for InterfaceDclInner {
15 fn from(value: crate::typed_ast::InterfaceDclInner) -> Self {
16 match value {
17 crate::typed_ast::InterfaceDclInner::InterfaceForwardDcl(forward) => {
18 Self::InterfaceForwardDcl(forward.into())
19 }
20 crate::typed_ast::InterfaceDclInner::InterfaceDef(def) => {
21 Self::InterfaceDef(def.into())
22 }
23 }
24 }
25}
26
27impl From<crate::typed_ast::InterfaceForwardDcl> for InterfaceForwardDcl {
28 fn from(value: crate::typed_ast::InterfaceForwardDcl) -> Self {
29 Self {
30 ident: value.ident.0,
31 }
32 }
33}
34
35impl From<crate::typed_ast::InterfaceDef> for InterfaceDef {
36 fn from(value: crate::typed_ast::InterfaceDef) -> Self {
37 Self {
38 header: value.header.into(),
39 interface_body: value.interface_body.map(Into::into),
40 }
41 }
42}
43
44impl From<crate::typed_ast::InterfaceHeader> for InterfaceHeader {
45 fn from(value: crate::typed_ast::InterfaceHeader) -> Self {
46 Self {
47 ident: value.ident.0,
48 parent: value.parent.map(Into::into),
49 }
50 }
51}
52
53impl From<crate::typed_ast::InterfaceInheritanceSpec> for InterfaceInheritanceSpec {
54 fn from(value: crate::typed_ast::InterfaceInheritanceSpec) -> Self {
55 Self(value.0.into_iter().map(Into::into).collect())
56 }
57}
58
59impl From<crate::typed_ast::InterfaceName> for InterfaceName {
60 fn from(value: crate::typed_ast::InterfaceName) -> Self {
61 Self(value.0.into())
62 }
63}
64
65impl From<crate::typed_ast::InterfaceBody> for InterfaceBody {
66 fn from(value: crate::typed_ast::InterfaceBody) -> Self {
67 Self(value.0.into_iter().map(Into::into).collect())
68 }
69}
70
71impl From<crate::typed_ast::Export> for Export {
72 fn from(value: crate::typed_ast::Export) -> Self {
73 match value {
74 crate::typed_ast::Export::OpDcl(op_dcl) => Self::OpDcl(op_dcl.into()),
75 crate::typed_ast::Export::AttrDcl(attr_dcl) => Self::AttrDcl(attr_dcl.into()),
76 crate::typed_ast::Export::TypeDcl(type_dcl) => Self::TypeDcl(type_dcl.into()),
77 crate::typed_ast::Export::ConstDcl(const_dcl) => Self::ConstDcl(const_dcl.into()),
78 crate::typed_ast::Export::ExceptDcl(except_dcl) => Self::ExceptDcl(except_dcl.into()),
79 }
80 }
81}
82
83impl From<crate::typed_ast::OpDcl> for OpDcl {
84 fn from(value: crate::typed_ast::OpDcl) -> Self {
85 Self {
86 annotations: expand_annotations(value.annotations),
87 ty: value.ty.into(),
88 ident: value.ident.0,
89 parameter: value.parameter.map(Into::into),
90 raises: value.raises.map(Into::into),
91 }
92 }
93}
94
95impl From<crate::typed_ast::OpTypeSpec> for OpTypeSpec {
96 fn from(value: crate::typed_ast::OpTypeSpec) -> Self {
97 match value {
98 crate::typed_ast::OpTypeSpec::Void => Self::Void,
99 crate::typed_ast::OpTypeSpec::TypeSpec(ty) => Self::TypeSpec(ty.into()),
100 }
101 }
102}
103
104impl From<crate::typed_ast::ParameterDcls> for ParameterDcls {
105 fn from(value: crate::typed_ast::ParameterDcls) -> Self {
106 Self(value.0.into_iter().map(Into::into).collect())
107 }
108}
109
110impl From<crate::typed_ast::ParamDcl> for ParamDcl {
111 fn from(value: crate::typed_ast::ParamDcl) -> Self {
112 Self {
113 annotations: expand_annotations(value.annotations),
114 attr: value.attr.map(Into::into),
115 ty: value.ty.into(),
116 declarator: value.declarator.into(),
117 }
118 }
119}
120
121impl From<crate::typed_ast::ParamAttribute> for ParamAttribute {
122 fn from(value: crate::typed_ast::ParamAttribute) -> Self {
123 Self(value.0)
124 }
125}
126
127impl From<crate::typed_ast::RaisesExpr> for RaisesExpr {
128 fn from(value: crate::typed_ast::RaisesExpr) -> Self {
129 Self(value.0.into_iter().map(Into::into).collect())
130 }
131}
132
133impl From<crate::typed_ast::AttrDcl> for AttrDcl {
134 fn from(value: crate::typed_ast::AttrDcl) -> Self {
135 Self {
136 annotations: expand_annotations(value.annotations),
137 decl: value.decl.into(),
138 }
139 }
140}
141
142impl From<crate::typed_ast::AttrDclInner> for AttrDclInner {
143 fn from(value: crate::typed_ast::AttrDclInner) -> Self {
144 match value {
145 crate::typed_ast::AttrDclInner::ReadonlyAttrSpec(spec) => {
146 Self::ReadonlyAttrSpec(spec.into())
147 }
148 crate::typed_ast::AttrDclInner::AttrSpec(spec) => Self::AttrSpec(spec.into()),
149 }
150 }
151}
152
153impl From<crate::typed_ast::ReadonlyAttrSpec> for ReadonlyAttrSpec {
154 fn from(value: crate::typed_ast::ReadonlyAttrSpec) -> Self {
155 Self {
156 ty: value.ty.into(),
157 declarator: value.declarator.into(),
158 }
159 }
160}
161
162impl From<crate::typed_ast::ReadonlyAttrDeclarator> for ReadonlyAttrDeclarator {
163 fn from(value: crate::typed_ast::ReadonlyAttrDeclarator) -> Self {
164 match value {
165 crate::typed_ast::ReadonlyAttrDeclarator::SimpleDeclarator(declarators) => {
166 Self::SimpleDeclarator(declarators.into_iter().map(Into::into).collect())
167 }
168 crate::typed_ast::ReadonlyAttrDeclarator::WithRaises { declarator, raises } => {
169 Self::WithRaises {
170 declarator: declarator.into(),
171 raises: raises.into(),
172 }
173 }
174 }
175 }
176}
177
178impl From<crate::typed_ast::AttrSpec> for AttrSpec {
179 fn from(value: crate::typed_ast::AttrSpec) -> Self {
180 Self {
181 ty: value.type_spec.into(),
182 declarator: value.declarator.into(),
183 }
184 }
185}
186
187impl From<crate::typed_ast::AttrDeclarator> for AttrDeclarator {
188 fn from(value: crate::typed_ast::AttrDeclarator) -> Self {
189 match value {
190 crate::typed_ast::AttrDeclarator::SimpleDeclarator(declarator) => {
191 Self::SimpleDeclarator(declarator.into_iter().map(Into::into).collect())
192 }
193 crate::typed_ast::AttrDeclarator::WithRaises { declarator, raises } => {
194 Self::WithRaises {
195 declarator: declarator.into(),
196 raises: raises.into(),
197 }
198 }
199 }
200 }
201}
202
203impl From<crate::typed_ast::AttrRaisesExpr> for AttrRaisesExpr {
204 fn from(value: crate::typed_ast::AttrRaisesExpr) -> Self {
205 match value {
206 crate::typed_ast::AttrRaisesExpr::Case1(get, set) => {
207 Self::Case1(get.into(), set.map(Into::into))
208 }
209 crate::typed_ast::AttrRaisesExpr::SetExcepExpr(set) => Self::SetExcepExpr(set.into()),
210 }
211 }
212}
213
214impl From<crate::typed_ast::GetExcepExpr> for GetExcepExpr {
215 fn from(value: crate::typed_ast::GetExcepExpr) -> Self {
216 Self {
217 expr: value.expr.into(),
218 }
219 }
220}
221
222impl From<crate::typed_ast::SetExcepExpr> for SetExcepExpr {
223 fn from(value: crate::typed_ast::SetExcepExpr) -> Self {
224 Self {
225 expr: value.expr.into(),
226 }
227 }
228}
229
230impl From<crate::typed_ast::ExceptionList> for ExceptionList {
231 fn from(value: crate::typed_ast::ExceptionList) -> Self {
232 Self(value.0.into_iter().map(Into::into).collect())
233 }
234}