Author: Michal Bendowski <mic...@bendowski.pl> Branch: jvm-improvements Changeset: r55449:f98227092ae0 Date: 2012-06-05 23:02 +0200 http://bitbucket.org/pypy/pypy/changeset/f98227092ae0/
Log: Fix getattr on JvmInstanceWrapper diff --git a/pypy/rlib/rjvm/api.py b/pypy/rlib/rjvm/api.py --- a/pypy/rlib/rjvm/api.py +++ b/pypy/rlib/rjvm/api.py @@ -90,7 +90,7 @@ const_cache[new_name] = JvmClassWrapper(getattr(self.__wrapped__, attr)) return const_cache[new_name] else: - raise TypeError("There is no class called %s in package %s" % (attr, self.__javaname__)) + raise AttributeError("There is no class called %s in package %s" % (attr, self.__javaname__)) elif isinstance(getattr(self.__wrapped__, attr), jpype.JPackage): if new_name not in const_cache: const_cache[new_name] = JvmPackageWrapper(new_name) @@ -184,7 +184,7 @@ elif attr in self._static_field_names: return self._wrap_item(getattr(self.__wrapped__, attr)) else: - raise TypeError( + raise AttributeError( "There's no static member called {member_name} in class {class_name}.".format( member_name=attr, class_name=self.__name__)) @@ -211,14 +211,12 @@ self.__field_names = {str(f.getName()) for f in helpers._get_fields(refclass)} def __getattr__(self, attr): - if attr == '__wrapped__': - return self.__wrapped__ - elif attr in self.__method_names: + if attr in self.__method_names: return JvmMethodWrapper(getattr(self.__wrapped__, attr)) elif attr in self.__field_names: return self._wrap_item(getattr(self.__wrapped__, attr)) else: - raise TypeError( + raise AttributeError( "No instance method called {method_name} found in class {class_name}".format( method_name=attr, class_name=self.__class_name)) diff --git a/pypy/rlib/rjvm/test/test_rjvm.py b/pypy/rlib/rjvm/test/test_rjvm.py --- a/pypy/rlib/rjvm/test/test_rjvm.py +++ b/pypy/rlib/rjvm/test/test_rjvm.py @@ -29,11 +29,11 @@ assert result == 32 def test_invalid_static_member(): - with py.test.raises(TypeError): + with py.test.raises(AttributeError): java.lang.Math.typo(42) def test_invalid_class_name(): - with py.test.raises(TypeError): + with py.test.raises(AttributeError): java.lang.Typo() def test_class_instantiate(): @@ -54,7 +54,7 @@ def test_invalid_method_name(): al = java.util.ArrayList() al.add("test") - with py.test.raises(TypeError): + with py.test.raises(AttributeError): al.typo(0) def test_interpreted_reflection(): @@ -200,7 +200,7 @@ sb = java.lang.StringBuilder() sb.foobar() - with py.test.raises(TypeError): + with py.test.raises(AttributeError): self.interpret(fn, []) def test_method_call_no_overload(self): diff --git a/pypy/translator/jvm/rjvm_support/utils.py b/pypy/translator/jvm/rjvm_support/utils.py --- a/pypy/translator/jvm/rjvm_support/utils.py +++ b/pypy/translator/jvm/rjvm_support/utils.py @@ -41,7 +41,7 @@ elif self.static and name == 'class_': return ootypemodel.NativeRJvmInstance(helpers.RjvmJavaLangClassWrapper.java_lang_Class)._example() else: - raise TypeError( + raise AttributeError( "No method or field called %s found in %s." % (name, self.refclass.getName())) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit