From e9cbbf22f355cad5e7a38eb9679ad3351d262791 Mon Sep 17 00:00:00 2001 From: Robert Bradshaw Date: Sat, 16 Aug 2008 15:36:23 -0700 Subject: [PATCH] Better fix for include/comments, squelch internal compiler exceptions if previous errors. --- Cython/Compiler/Main.py | 6 +++++- Cython/Compiler/Parsing.py | 3 +-- Cython/Compiler/Scanning.py | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Cython/Compiler/Main.py b/Cython/Compiler/Main.py index 9f9c4dfd..8a9139d0 100644 --- a/Cython/Compiler/Main.py +++ b/Cython/Compiler/Main.py @@ -19,7 +19,7 @@ import Errors import Parsing import Version from Scanning import PyrexScanner, FileSourceDescriptor -from Errors import PyrexError, CompileError, error +from Errors import PyrexError, CompileError, InternalError, error from Symtab import BuiltinScope, ModuleScope from Cython import Utils from Cython.Utils import open_new_file, replace_suffix @@ -170,6 +170,10 @@ class Context: except CompileError, err: # err is set Errors.report_error(err) + except InternalError, err: + # Only raise if there was not an earlier error + if Errors.num_errors == 0: + raise return (err, data) def find_module(self, module_name, diff --git a/Cython/Compiler/Parsing.py b/Cython/Compiler/Parsing.py index 9f5e0539..b39bb2d7 100644 --- a/Cython/Compiler/Parsing.py +++ b/Cython/Compiler/Parsing.py @@ -1271,8 +1271,7 @@ def p_include_statement(s, ctx): s.included_files.append(include_file_name) f = Utils.open_source_file(include_file_path, mode="rU") source_desc = FileSourceDescriptor(include_file_path) - s2 = PyrexScanner(f, source_desc, s, source_encoding=f.encoding) - s2.parse_comments = s.parse_comments + s2 = PyrexScanner(f, source_desc, s, source_encoding=f.encoding, parse_comments=s.parse_comments) try: tree = p_statement_list(s2, ctx) finally: diff --git a/Cython/Compiler/Scanning.py b/Cython/Compiler/Scanning.py index a2981504..18147457 100644 --- a/Cython/Compiler/Scanning.py +++ b/Cython/Compiler/Scanning.py @@ -290,7 +290,7 @@ class PyrexScanner(Scanner): resword_dict = build_resword_dict() def __init__(self, file, filename, parent_scanner = None, - scope = None, context = None, source_encoding=None): + scope = None, context = None, source_encoding=None, parse_comments=True): Scanner.__init__(self, get_lexicon(), file, filename) if parent_scanner: self.context = parent_scanner.context @@ -306,7 +306,7 @@ class PyrexScanner(Scanner): self.compile_time_env = initial_compile_time_env() self.compile_time_eval = 1 self.compile_time_expr = 0 - self.parse_comments = True + self.parse_comments = parse_comments self.source_encoding = source_encoding self.trace = trace_scanner self.indentation_stack = [0] -- 2.26.2