[Cython] Compiler crash fix

2013-05-22 Thread Nikita Nemkin

Hi,

Someone please apply this patch (too simple for pull request):

diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py
index 0406fad..640d002 100755
--- a/Cython/Compiler/ExprNodes.py
+++ b/Cython/Compiler/ExprNodes.py
@@ -4993,7 +4993,7 @@ class AttributeNode(ExprNode):
   # creates a corresponding NameNode and returns it, otherwise
   # returns None.
   type = self.obj.analyse_as_extension_type(env)
-if type:
+if type and type.scope:
   entry = type.scope.lookup_here(self.attribute)
   if entry and entry.is_cmethod:
   if type.is_builtin_type:

It fixes CompilerCrash (None does not have "lookup_here" method)
that I have observed on two occasions:
1) cdef class Name; cimport Name; Name.attr
2) from X cimport Name; Name.attr  # cimport_from_pyx is active, Name is a  
class with errors


Makes me wonder if ErrorScope should be introduced to avoid None scope  
checks.



Best regards,
Nikita Nemkin
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] Compiler crash fix

2013-05-22 Thread mark florisson
On 22 May 2013 10:13, Nikita Nemkin  wrote:
> Hi,
>
> Someone please apply this patch (too simple for pull request):
>
> diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py
> index 0406fad..640d002 100755
> --- a/Cython/Compiler/ExprNodes.py
> +++ b/Cython/Compiler/ExprNodes.py
> @@ -4993,7 +4993,7 @@ class AttributeNode(ExprNode):
># creates a corresponding NameNode and returns it, otherwise
># returns None.
>type = self.obj.analyse_as_extension_type(env)
> -if type:
> +if type and type.scope:
>entry = type.scope.lookup_here(self.attribute)
>if entry and entry.is_cmethod:
>if type.is_builtin_type:
>
> It fixes CompilerCrash (None does not have "lookup_here" method)
> that I have observed on two occasions:
> 1) cdef class Name; cimport Name; Name.attr
> 2) from X cimport Name; Name.attr  # cimport_from_pyx is active, Name is a
> class with errors
>
> Makes me wonder if ErrorScope should be introduced to avoid None scope
> checks.
>
>
> Best regards,
> Nikita Nemkin
> ___
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel

Pull requests are useful not just for large patches, but for small
ones since they serve as documentation, assign credit to the right
person, and allow the merger to observe the travis-ci results. The
ease with which things can be merged contribute largely to it getting
merged.
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel