8000 PEP 572: Invalid python syntax for walrus operator not raising parser error · Issue #9095 · python/mypy · GitHub
[go: up one dir, main page]

Skip to content
PEP 572: Invalid python syntax for walrus operator not raising parser error #9095
Closed
@dhood

Description

@dhood

The following invalid syntax including the walrus / assignment expression / named expression operator (taken from https://www.python.org/dev/peps/pep-0572/#scope-of-the-target) does not raise a syntax error.

class Example:
    [(j := i) for i in range(5)]  # INVALID SYNTAX

Expected behaviour: error: invalid syntax (as is generated by e.g. j :=1 without parentheses around it).

Actual behaviour:

(env) PS C:\Users\deanna\src\mypy> python -m mypy .\walrus_fail_demo.py --no-incremental --show-traceback   
.\walrus_fail_demo.py:48: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.rtfd.io/en/latest/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.790+dev.8219564d365ba29dda8c4383594d9db91f26feec
Traceback (most recent call last):
  File "C:\Python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\deanna\src\mypy\mypy\__main__.py", line 12, in <module>
    main(None, sys.stdout, sys.stderr)
  File "C:\Users\deanna\src\mypy\mypy\main.py", line 89, in main
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "C:\Users\deanna\src\mypy\mypy\build.py", line 180, in build
    result = _build(
  File "C:\Users\deanna\src\mypy\mypy\build.py", line 252, in _build
    graph = dispatch(sources, manager, stdout)
  File "C:\Users\deanna\src\mypy\mypy\build.py", line 2626, in dispatch
    process_graph(graph, manager)
  File "C:\Users\deanna\src\mypy\mypy\build.py", line 2949, in process_graph
    process_stale_scc(graph, scc, manager)
  File "C:\Users\deanna\src\mypy\mypy\build.py", line 3041, in process_stale_scc
    mypy.semanal_main.semantic_analysis_for_scc(graph, scc, manager.errors)
  File "C:\Users\deanna\src\mypy\mypy\semanal_main.py", line 78, in semantic_analysis_for_scc
    process_top_levels(graph, scc, patches)
  File "C:\Users\deanna\src\mypy\mypy\semanal_main.py", line 199, in process_top_levels
    deferred, incomplete, progress = semantic_analyze_target(next_id, state,
  File "C:\Users\deanna\src\mypy\mypy\semanal_main.py", line 326, in semantic_analyze_target
    analyzer.refresh_partial(refresh_node,
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 357, in refresh_partial
    self.refresh_top_level(node)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 368, in refresh_top_level
    self.accept(d)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 4691, in accept
    node.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 940, in accept
    return visitor.visit_class_def(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 1011, in visit_class_def
    self.analyze_class(defn)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 1088, in analyze_class
    self.analyze_class_body_common(defn)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 1096, in analyze_class_body_common
    defn.defs.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 1005, in accept
    return visitor.visit_block(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 3170, in visit_block
    self.accept(s)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 4691, in accept
    node.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 1020, in accept
    return visitor.visit_expression_stmt(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 3179, in visit_expression_stmt
    s.expr.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 1946, in accept
    return visitor.visit_list_comprehension(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 3755, in visit_list_comprehension
    expr.generator.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 1933, in accept
    return visitor.visit_generator_expr(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 3771, in visit_generator_expr
    expr.left_expr.accept(self)
  File "C:\Users\deanna\src\mypy\mypy\nodes.py", line 1619, in accept
    return visitor.visit_assignment_expr(self)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 1896, in visit_assignment_expr
    self.analyze_lvalue(s.target, escape_comprehensions=True)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 2565, in analyze_lvalue
    self.analyze_name_lvalue(lval, explicit_type, is_final, escape_comprehensions)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 2616, in analyze_name_lvalue
    added = self.add_symbol(name, var, lvalue, escape_comprehensions=escape_comprehensions)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 4217, in add_symbol
    return self.add_symbol_table_node(name, symbol, context, can_defer, escape_comprehensions)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 4265, in add_symbol_table_node
    names = self.current_symbol_table(escape_comprehensions=escape_comprehensions)
  File "C:\Users\deanna\src\mypy\mypy\semanal.py", line 4553, in current_symbol_table
    assert names is not None
AssertionError:
.\walrus_fail_demo.py:48: : note: use --pdb to drop into pdb

( This assertion error has been proposed to something more specific in #9062 )

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0