class literals in annotation attributes supported

This commit is contained in:
Roman Shevchenko 2014-05-28 20:49:06 +04:00
parent 0a66fa8925
commit 4996a16139

View File

@ -96,17 +96,34 @@ public class StructAnnotationAttribute extends StructGeneralAttribute {
value = type.value; value = type.value;
break; break;
case CodeConstants.TYPE_BYTE: case CodeConstants.TYPE_BYTE:
value = byte.class.getName();
break;
case CodeConstants.TYPE_CHAR: case CodeConstants.TYPE_CHAR:
value = char.class.getName();
break;
case CodeConstants.TYPE_DOUBLE: case CodeConstants.TYPE_DOUBLE:
value = double.class.getName();
break;
case CodeConstants.TYPE_FLOAT: case CodeConstants.TYPE_FLOAT:
value = float.class.getName();
break;
case CodeConstants.TYPE_INT: case CodeConstants.TYPE_INT:
value = int.class.getName();
break;
case CodeConstants.TYPE_LONG: case CodeConstants.TYPE_LONG:
value = long.class.getName();
break;
case CodeConstants.TYPE_SHORT: case CodeConstants.TYPE_SHORT:
value = short.class.getName();
break;
case CodeConstants.TYPE_BOOLEAN: case CodeConstants.TYPE_BOOLEAN:
value = boolean.class.getName();
break;
case CodeConstants.TYPE_VOID: case CodeConstants.TYPE_VOID:
// FIXME: other classes if applicable, see attribute description value = void.class.getName();
break;
default: default:
throw new RuntimeException("invalid class type!"); throw new RuntimeException("invalid class type: " + type.type);
} }
return new ConstExprent(VarType.VARTYPE_CLASS, value); return new ConstExprent(VarType.VARTYPE_CLASS, value);
case '[': // array case '[': // array