@@ -1244,33 +1244,40 @@ impl<I: Interner> ProgramClauseData<I> {
12441244
12451245 pub fn intern ( self , interner : & I ) -> ProgramClause < I > {
12461246 ProgramClause {
1247- clause : interner. intern_program_clause ( self ) ,
1247+ interned : interner. intern_program_clause ( self ) ,
12481248 }
12491249 }
12501250}
12511251
12521252#[ derive( Clone , PartialEq , Eq , Hash , PartialOrd , Ord , HasInterner ) ]
12531253pub struct ProgramClause < I : Interner > {
1254- clause : I :: InternedProgramClause ,
1254+ interned : I :: InternedProgramClause ,
12551255}
12561256
12571257impl < 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+
12581263 pub fn into_from_env_clause ( self , interner : & I ) -> ProgramClause < I > {
12591264 let program_clause_data = self . data ( interner) ;
12601265 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
12641271 }
12651272
12661273 pub fn data ( & self , interner : & I ) -> & ProgramClauseData < I > {
1267- interner. program_clause_data ( & self . clause )
1274+ interner. program_clause_data ( & self . interned )
12681275 }
12691276}
12701277
12711278#[ derive( Clone , PartialEq , Eq , Hash , PartialOrd , Ord , HasInterner ) ]
12721279pub struct ProgramClauses < I : Interner > {
1273- clauses : I :: InternedProgramClauses ,
1280+ interned : I :: InternedProgramClauses ,
12741281}
12751282
12761283impl < I : Interner > ProgramClauses < I > {
@@ -1279,7 +1286,7 @@ impl<I: Interner> ProgramClauses<I> {
12791286 }
12801287
12811288 pub fn interned ( & self ) -> & I :: InternedProgramClauses {
1282- & self . clauses
1289+ & self . interned
12831290 }
12841291
12851292 pub fn from (
@@ -1288,7 +1295,7 @@ impl<I: Interner> ProgramClauses<I> {
12881295 ) -> Self {
12891296 use crate :: cast:: Caster ;
12901297 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) ) ,
12921299 }
12931300 }
12941301
@@ -1317,7 +1324,7 @@ impl<I: Interner> ProgramClauses<I> {
13171324 }
13181325
13191326 pub fn as_slice ( & self , interner : & I ) -> & [ ProgramClause < I > ] {
1320- interner. program_clauses_data ( & self . clauses )
1327+ interner. program_clauses_data ( & self . interned )
13211328 }
13221329}
13231330
0 commit comments