Update of /cvsroot/nice/Nice/src/bossa/syntax
In directory sc8-pr-cvs1:/tmp/cvs-serv29449/F:/nice/src/bossa/syntax
Modified Files:
NiceClass.java
Log Message:
Make it possible to set the serialVersionUID field for Nice classes.
Index: NiceClass.java
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v
retrieving revision 1.67
retrieving revision 1.68
diff -C2 -d -r1.67 -r1.68
*** NiceClass.java 22 Nov 2003 01:06:00 -0000 1.67
--- NiceClass.java 23 Nov 2003 12:52:18 -0000 1.68
***************
*** 24,27 ****
--- 24,30 ----
import nice.tools.code.*;
+ import gnu.expr.Declaration;
+ import gnu.expr.QuoteExp;
+
/**
Abstract syntax for a class definition.
***************
*** 49,53 ****
this.fields = noFields;
else
! this.fields = (NewField[]) fields.toArray(new NewField[fields.size()]);
}
--- 52,70 ----
this.fields = noFields;
else
! {
! for(Iterator it = fields.iterator(); it.hasNext();)
! {
! Field field = (Field)it.next();
! if (field.isFinal() && field.sym.getName().toString().equals("serialVersionUID"))
! {
! it.remove();
! if (field.value instanceof ConstantExp && ((ConstantExp)field.value).value instanceof Long)
! serialVersionUIDValue = (Long)((ConstantExp)field.value).value;
! else
! User.error(field.sym, "the value of an serialVersionUID should a constant of type long");
! }
! }
! this.fields = (NewField[]) fields.toArray(new NewField[fields.size()]);
! }
}
***************
*** 527,530 ****
--- 544,548 ----
" {\n"
+ Util.map("", ";\n", ";\n", fields)
+ + serialUIDFieldString()
+ Util.map("", ";\n", ";\n", overrides)
+ Util.map("{\n", "\n", "}\n", initializers)
***************
*** 532,536 ****
);
}
!
/****************************************************************
* Code generation
--- 550,561 ----
);
}
!
! String serialUIDFieldString()
! {
! if (serialVersionUIDValue == null)
! return "";
!
! return "final long serialVersionUID = " + serialVersionUIDValue + "L;\n";
! }
/****************************************************************
* Code generation
***************
*** 781,784 ****
--- 806,810 ----
// but before compilation.
createFields();
+ // createSerialUIDField();
}
***************
*** 786,789 ****
--- 812,816 ----
{
recompile();
+ createSerialUIDField();
}
***************
*** 890,893 ****
--- 917,935 ----
}
+ void createSerialUIDField()
+ {
+ if (serialVersionUIDValue == null)
+ return;
+
+ Declaration fieldDecl = classe.addDeclaration("serialVersionUID", SpecialTypes.longType);
+ fieldDecl.setSimple(false);
+ fieldDecl.setCanRead(true);
+ fieldDecl.setFlag(Declaration.IS_CONSTANT);
+ fieldDecl.setPrivate(true);
+ fieldDecl.setFlag(Declaration.STATIC_SPECIFIED);
+ fieldDecl.setFlag(Declaration.TYPE_SPECIFIED);
+ fieldDecl.noteValue(new QuoteExp(serialVersionUIDValue, SpecialTypes.longType));
+ }
+
/****************************************************************
* Misc.
***************
*** 898,900 ****
--- 940,943 ----
private NewField[] fields;
private OverridenField[] overrides;
+ private Long serialVersionUIDValue;
}
|