===================================================================
@@ -3068,22 +3068,29 @@ build_java_class_ref (tree type)
jclass_node = TREE_TYPE (jclass_node);
}
- /* Mangle the class$ field. */
- {
- tree field;
- for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
- if (DECL_NAME (field) == CL_suffix)
+ if (MAYBE_CLASS_TYPE_P (type))
+ {
+ /* Mangle the class$ field. */
+ tree field;
+ for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
+ if (DECL_NAME (field) == CL_suffix)
+ {
+ mangle_decl (field);
+ name = DECL_ASSEMBLER_NAME (field);
+ break;
+ }
+ if (!field)
{
- mangle_decl (field);
- name = DECL_ASSEMBLER_NAME (field);
- break;
+ error ("can%'t find %<class$%> in %qT", type);
+ return error_mark_node;
}
- if (!field)
- {
- error ("can%'t find %<class$%> in %qT", type);
- return error_mark_node;
- }
- }
+ }
+ else
+ {
+ /* Standard Java types per record_builtin_java_type. */
+ mangle_decl (TYPE_NAME (type));
+ name = DECL_ASSEMBLER_NAME (TYPE_NAME (type));
+ }
class_decl = IDENTIFIER_GLOBAL_VALUE (name);
if (class_decl == NULL_TREE)