Index: vm/vmcore/include/Class.h =================================================================== --- vm/vmcore/include/Class.h (revision 601217) +++ vm/vmcore/include/Class.h (working copy) @@ -1239,6 +1239,15 @@ return m_num_dimensions; } + /** + * Gets the base class of the array (for non-primitive arrays only). + * @return Class describing the base type of an array + * represented by this class.*/ + Class* get_array_base_class() const { + assert(is_array()); + return m_array_base_class; + } + /** Gets the class of the array element. * @return Class describing the element of an array * represented by this class.*/ Index: vm/vmcore/src/class_support/Resolve.cpp =================================================================== --- vm/vmcore/src/class_support/Resolve.cpp (revision 601217) +++ vm/vmcore/src/class_support/Resolve.cpp (working copy) @@ -343,6 +343,12 @@ // in the same runtime package. if(m_package == inner_clss->m_package) return true; + + // array type has the same access as base type + if (inner_clss->is_array()) { + inner_clss = inner_clss->get_array_base_class(); + } + // Otherwise, when other_clss is not in the same package, // inner_clss must be a superclass of other_clss. for(Class *decl_other_clss = this; decl_other_clss != NULL;)