[Nice-commit] Nice/src/bossa/syntax NiceClass.java,1.67,1.68
Brought to you by:
bonniot
From: <ar...@us...> - 2003-11-23 12:52:22
|
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; } |