@@ -8,9 +8,9 @@ use sway_error::{
8
8
use sway_types:: { BaseIdent , Named , Span , Spanned } ;
9
9
10
10
use crate :: {
11
- decl_engine:: { DeclEngineGet , DeclEngineInsert , MaterializeConstGenerics } ,
11
+ decl_engine:: { DeclEngineGet , DeclEngineGetParsedDecl , DeclEngineInsert , MaterializeConstGenerics } ,
12
12
engine_threading:: { DebugWithEngines , DisplayWithEngines , Engines , WithEngines } ,
13
- language:: CallPath ,
13
+ language:: { ty :: TyStructDecl , CallPath } ,
14
14
namespace:: TraitMap ,
15
15
semantic_analysis:: TypeCheckContext ,
16
16
type_system:: priv_prelude:: * ,
@@ -150,10 +150,28 @@ impl MaterializeConstGenerics for TypeId {
150
150
let mut decl = ( * decl) . clone ( ) ;
151
151
decl. materialize_const_generics ( engines, handler, name, value) ?;
152
152
153
- let decl_ref = engines. de ( ) . insert ( decl, None ) ;
153
+ let parsed_decl = engines. de ( )
154
+ . get_parsed_decl ( id)
155
+ . unwrap ( )
156
+ . to_enum_decl ( handler, engines)
157
+ . ok ( ) ;
158
+ let decl_ref = engines. de ( ) . insert ( decl, parsed_decl. as_ref ( ) ) ;
154
159
155
160
* self = engines. te ( ) . insert_enum ( engines, * decl_ref. id ( ) ) ;
156
161
}
162
+ TypeInfo :: Struct ( id) => {
163
+ let mut decl = TyStructDecl :: clone ( & engines. de ( ) . get ( id) ) ;
164
+ decl. materialize_const_generics ( engines, handler, name, value) ?;
165
+
166
+ let parsed_decl = engines. de ( )
167
+ . get_parsed_decl ( id)
168
+ . unwrap ( )
169
+ . to_struct_decl ( handler, engines)
170
+ . ok ( ) ;
171
+ let decl_ref = engines. de ( ) . insert ( decl, parsed_decl. as_ref ( ) ) ;
172
+
173
+ * self = engines. te ( ) . insert_struct ( engines, * decl_ref. id ( ) ) ;
174
+ }
157
175
TypeInfo :: StringArray ( Length ( ConstGenericExpr :: AmbiguousVariableExpression {
158
176
ident,
159
177
} ) ) if ident. as_str ( ) == name => {
0 commit comments