Skip to content

Commit 5d93b3e

Browse files
ddfishergvanrossum
authored andcommitted
Turn --fast-parser on by default (#2734)
Resolves #1353
1 parent 038a2ec commit 5d93b3e

12 files changed

Lines changed: 271 additions & 290 deletions

‎mypy/fastparse.py‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ def parse(source: Union[str, bytes], fnam: str = None, errors: Errors = None,
5757
5858
The pyversion (major, minor) argument determines the Python syntax variant.
5959
"""
60+
raise_on_error = False
6061
if errors is None:
6162
errors = Errors()
63+
raise_on_error = True
6264
errors.set_file('<input>' if fnam is None else fnam)
6365
is_stub_file = bool(fnam) and fnam.endswith('.pyi')
6466
try:
@@ -72,14 +74,14 @@ def parse(source: Union[str, bytes], fnam: str = None, errors: Errors = None,
7274
).visit(ast)
7375
tree.path = fnam
7476
tree.is_stub = is_stub_file
75-
return tree
7677
except SyntaxError as e:
77-
if errors:
78-
errors.report(e.lineno, e.offset, e.msg)
79-
else:
80-
raise
78+
errors.report(e.lineno, e.offset, e.msg)
79+
tree = MypyFile([], [], False, set())
80+
81+
if raise_on_error and errors.is_errors():
82+
errors.raise_error()
8183

82-
return MypyFile([], [], False, set())
84+
return tree
8385

8486

8587
def parse_type_comment(type_comment: str, line: int, errors: Errors) -> Optional[Type]:

‎mypy/fastparse2.py‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,10 @@ def parse(source: Union[str, bytes], fnam: str = None, errors: Errors = None,
7474
7575
The pyversion (major, minor) argument determines the Python syntax variant.
7676
"""
77+
raise_on_error = False
7778
if errors is None:
7879
errors = Errors()
80+
raise_on_error = True
7981
errors.set_file('<input>' if fnam is None else fnam)
8082
is_stub_file = bool(fnam) and fnam.endswith('.pyi')
8183
try:
@@ -89,14 +91,14 @@ def parse(source: Union[str, bytes], fnam: str = None, errors: Errors = None,
8991
assert isinstance(tree, MypyFile)
9092
tree.path = fnam
9193
tree.is_stub = is_stub_file
92-
return tree
9394
except SyntaxError as e:
94-
if errors:
95-
errors.report(e.lineno, e.offset, e.msg)
96-
else:
97-
raise
95+
errors.report(e.lineno, e.offset, e.msg)
96+
tree = MypyFile([], [], False, set())
97+
98+
if raise_on_error and errors.is_errors():
99+
errors.raise_error()
98100

99-
return MypyFile([], [], False, set())
101+
return tree
100102

101103

102104
def with_line(f: Callable[['ASTConverter', T], U]) -> Callable[['ASTConverter', T], U]:

‎mypy/main.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,8 @@ def add_invertible_flag(flag: str,
225225
add_invertible_flag('--show-error-context', default=True,
226226
dest='hide_error_context',
227227
help='Precede errors with "note:" messages explaining context')
228-
add_invertible_flag('--fast-parser', default=False,
229-
help="enable fast parser (recommended)")
228+
add_invertible_flag('--no-fast-parser', default=True, dest='fast_parser',
229+
help="disable the fast parser (not recommended)")
230230
parser.add_argument('-i', '--incremental', action='store_true',
231231
help="enable experimental module cache")
232232
parser.add_argument('--cache-dir', action='store', metavar='DIR',

‎mypy/options.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def __init__(self) -> None:
114114
self.use_builtins_fixtures = False
115115

116116
# -- experimental options --
117-
self.fast_parser = False
117+
self.fast_parser = True
118118
self.incremental = False
119119
self.cache_dir = defaults.CACHE_DIR
120120
self.debug_cache = False

0 commit comments

Comments
 (0)