@@ -1244,33 +1244,40 @@ impl<I: Interner> ProgramClauseData<I> {
1244
1244
1245
1245
pub fn intern ( self , interner : & I ) -> ProgramClause < I > {
1246
1246
ProgramClause {
1247
- clause : interner. intern_program_clause ( self ) ,
1247
+ interned : interner. intern_program_clause ( self ) ,
1248
1248
}
1249
1249
}
1250
1250
}
1251
1251
1252
1252
#[ derive( Clone , PartialEq , Eq , Hash , PartialOrd , Ord , HasInterner ) ]
1253
1253
pub struct ProgramClause < I : Interner > {
1254
- clause : I :: InternedProgramClause ,
1254
+ interned : I :: InternedProgramClause ,
1255
1255
}
1256
1256
1257
1257
impl < I : Interner > ProgramClause < I > {
1258
+ pub fn new ( interner : & I , clause : ProgramClauseData < I > ) -> Self {
1259
+ let interned = interner. intern_program_clause ( clause) ;
1260
+ Self { interned }
1261
+ }
1262
+
1258
1263
pub fn into_from_env_clause ( self , interner : & I ) -> ProgramClause < I > {
1259
1264
let program_clause_data = self . data ( interner) ;
1260
1265
let new_clause = program_clause_data. clone ( ) . into_from_env_clause ( interner) ;
1261
- ProgramClause {
1262
- clause : interner. intern_program_clause ( new_clause) ,
1263
- }
1266
+ Self :: new ( interner, new_clause)
1267
+ }
1268
+
1269
+ pub fn interned ( & self ) -> & I :: InternedProgramClause {
1270
+ & self . interned
1264
1271
}
1265
1272
1266
1273
pub fn data ( & self , interner : & I ) -> & ProgramClauseData < I > {
1267
- interner. program_clause_data ( & self . clause )
1274
+ interner. program_clause_data ( & self . interned )
1268
1275
}
1269
1276
}
1270
1277
1271
1278
#[ derive( Clone , PartialEq , Eq , Hash , PartialOrd , Ord , HasInterner ) ]
1272
1279
pub struct ProgramClauses < I : Interner > {
1273
- clauses : I :: InternedProgramClauses ,
1280
+ interned : I :: InternedProgramClauses ,
1274
1281
}
1275
1282
1276
1283
impl < I : Interner > ProgramClauses < I > {
@@ -1279,7 +1286,7 @@ impl<I: Interner> ProgramClauses<I> {
1279
1286
}
1280
1287
1281
1288
pub fn interned ( & self ) -> & I :: InternedProgramClauses {
1282
- & self . clauses
1289
+ & self . interned
1283
1290
}
1284
1291
1285
1292
pub fn from (
@@ -1288,7 +1295,7 @@ impl<I: Interner> ProgramClauses<I> {
1288
1295
) -> Self {
1289
1296
use crate :: cast:: Caster ;
1290
1297
ProgramClauses {
1291
- clauses : I :: intern_program_clauses ( interner, clauses. into_iter ( ) . casted ( interner) ) ,
1298
+ interned : I :: intern_program_clauses ( interner, clauses. into_iter ( ) . casted ( interner) ) ,
1292
1299
}
1293
1300
}
1294
1301
@@ -1317,7 +1324,7 @@ impl<I: Interner> ProgramClauses<I> {
1317
1324
}
1318
1325
1319
1326
pub fn as_slice ( & self , interner : & I ) -> & [ ProgramClause < I > ] {
1320
- interner. program_clauses_data ( & self . clauses )
1327
+ interner. program_clauses_data ( & self . interned )
1321
1328
}
1322
1329
}
1323
1330
0 commit comments