Skip to content

Crash in super() outside a method #2848

Closed

Description

@ilevkivskyi

The simplest repro:

class C:
    a = super().whatever

Crash also happens for working Python code with single argument super() outside methods:

Traceback (most recent call last):
  File "/usr/local/bin/mypy", line 6, in <module>
    main(__file__)
  File "/usr/local/lib/python3.4/dist-packages/mypy/main.py", line 42, in main
    res = type_check_only(sources, bin_dir, options)
  File "/usr/local/lib/python3.4/dist-packages/mypy/main.py", line 86, in type_check_only
    options=options)
  File "/usr/local/lib/python3.4/dist-packages/mypy/build.py", line 183, in build
    dispatch(sources, manager)
  File "/usr/local/lib/python3.4/dist-packages/mypy/build.py", line 1531, in dispatch
    process_graph(graph, manager)
  File "/usr/local/lib/python3.4/dist-packages/mypy/build.py", line 1768, in process_graph
    process_stale_scc(graph, scc)
  File "/usr/local/lib/python3.4/dist-packages/mypy/build.py", line 1847, in process_stale_scc
    graph[id].type_check_first_pass()
  File "/usr/local/lib/python3.4/dist-packages/mypy/build.py", line 1453, in type_check_first_pass
    self.type_checker.check_first_pass()
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 167, in check_first_pass
    self.accept(d)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 233, in accept
    stmt.accept(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/nodes.py", line 717, in accept
    return visitor.visit_class_def(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 964, in visit_class_def
    self.accept(defn.defs)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 233, in accept
    stmt.accept(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/nodes.py", line 778, in accept
    return visitor.visit_block(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 1057, in visit_block
    self.accept(s)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 233, in accept
    stmt.accept(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/nodes.py", line 819, in accept
    return visitor.visit_assignment_stmt(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 1064, in visit_assignment_stmt
    self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checker.py", line 1140, in check_assignment
    self.infer_variable_type(inferred, lvalue, self.expr_checker.accept(rvalue),
  File "/usr/local/lib/python3.4/dist-packages/mypy/checkexpr.py", line 2015, in accept
    typ = node.accept(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/nodes.py", line 1492, in accept
    return visitor.visit_super_expr(self)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checkexpr.py", line 1835, in visit_super_expr
    t = self.analyze_super(e, False)
  File "/usr/local/lib/python3.4/dist-packages/mypy/checkexpr.py", line 1854, in analyze_super
    args = self.chk.scope.top_function().arguments
AttributeError: 'NoneType' object has no attribute 'arguments'

Activity

  1. ilevkivskyi commented on Feb 27, 2017

    @ilevkivskyi
    MemberAuthor

    @JukkaL I have a fix for this but it depends on PR #2847

  2. JukkaL commented on Feb 27, 2017

    @JukkaL
    Collaborator

    Ok -- I'll see if I can get #2847 merged today, before the release. This issue would be nice to fix as well.

  3. ilevkivskyi commented on Mar 1, 2017

    @ilevkivskyi
    MemberAuthor

    @JukkaL As I promised here is a simple fix #2932

  4. added a commit that references this issue on Mar 6, 2017
    e2d42f8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions