Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
language:langs:refine [2024/08/11 10:29] – [Multiple refinement options] rajitlanguage:langs:refine [2025/07/21 19:47] (current) – [Multiple refinement options] rajit
Line 111: Line 111:
 </code> </code>
  
-In this case, "-ref=2" will //replace// the first refine block with the second. In other words, instance ''i1'' will not +In this case, the ''refine<2> { ... }'' block behaves as ''refine { refine { ... } }''. In other words, when ''-ref=2'' is specified, 
-be created, and ''-ref=2'' will select instance ''j2'' and the ''prs { ... }'' body.+instance ''i1'' as well as ''j1'' will be created. Furthermore, the refinement option will eliminate the ''chp { ... }'' block from the first level refinement, as this has now been replaced with the second level refinement. 
 + 
 +===== Refinement overrides ===== 
 + 
 +Sometimes a refinement body needs to [[language:impl#overrides|override]] types. To support this, refinement bodies can be accompanied by refinement overrides. These are overrides that are only applied when the refinement is used. 
 + 
 +The syntax for providing refinement overrides is below: 
 + 
 +<code act> 
 +refine<2>  +{ e1of2 l; } { 
 +       inst1 i1;  
 +       ... 
 + } 
 +</code> 
 + 
 +This will apply the refinement override for ''l'' when this particular refinement body is selected.