import java.util.*;
import Jakarta.util.FixDosOutputStream;
import Jakarta.util.Util2;
import java.io.*;
public class ConSSuper {
public void baseRewrite( Hashtable hb, Hashtable he, int stage ) {
// this is a piggy-back onto baseRewrite.
// when we encounter Super(-+-).(...) in jampack, we must perform
// the following translation. if there is a constructor already
// present in hb with the signature (-+-), then we convert
// Super(-+-).(...) into this(...). Otherwise, we leave
// the declaration alone
// Step 0: do nothing if we are in the middle of an AST Constructor
if ( stage != 0 ) {
super.baseRewrite( hb,he,stage );
return;
}
// Step 1: get signature of Super().() being called
// Super(a,b,c).(c,d) - signature is "m(a,b,c",
// where m is the name of the constructor
String typeSig = "";
if ( arg[0].arg[0] != null )
typeSig = ( ( AST_TypeNameList ) arg[0].arg[0] ).signature();
String sig = up.up.arg[1].tok[0].tokenName() + "(" + typeSig;
// Step 2: see if this signature is in the base table (meaning
// that we are inheriting this constructor via refinement)
Object o = hb.get( sig );
// Step 3: if o is null, do nothing. if not, create ConThis
// instance and replace this node with generated ConThis
if ( o!=null ) {
ConThis c = new ConThis().setParms( new AstToken().setParms( getComment(),"this", 0 ),
( Arguments ) arg[1],
new AstToken().setParms( "",";", 0 ) );
Replace( c );
}
}
}