src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
Print this page
@@ -728,16 +728,23 @@
/**
* Write method parameter names attribute.
*/
int writeMethodParametersAttr(MethodSymbol m) {
- if (m.params != null && 0 != m.params.length()) {
- int attrIndex = writeAttr(names.MethodParameters);
- databuf.appendByte(m.params.length());
+ MethodType ty = m.externalType(types).asMethodType();
+ final int allparams = ty.argtypes.size();
+ if (m.params != null && allparams != 0) {
+ final int realparams = m.params.length();
+ final int synthparams = allparams - realparams;
+ final int attrIndex = writeAttr(names.MethodParameters);
+ databuf.appendByte(allparams);
+ // Add synthesized params
+ for (int i = 0; i < synthparams; i++) {
+ databuf.appendChar(0);
+ databuf.appendInt(MANDATED);
+ }
for (VarSymbol s : m.params) {
- // TODO: expand to cover synthesized, once we figure out
- // how to represent that.
final int flags = (int) s.flags() & (FINAL | SYNTHETIC);
// output parameter info
databuf.appendChar(pool.put(s.name));
databuf.appendInt(flags);
}