Improve comment parsing when checking for requires

This commit is contained in:
Tom Payne
2013-03-05 11:51:53 +01:00
committed by Tim Schaub
parent a0ba80bcbb
commit ba78812796

View File

@@ -243,24 +243,24 @@ def build_lint_src_timestamp(t):
def _strip_comments(lines): def _strip_comments(lines):
# FIXME this is a horribe hack, we should use a proper JavaScript parser here # FIXME this is a horribe hack, we should use a proper JavaScript parser here
in_comment = False in_multiline_comment = False
lineno = 0
for line in lines: for line in lines:
if in_comment: lineno += 1
if in_multiline_comment:
index = line.find('*/') index = line.find('*/')
if index != -1: if index != -1:
in_comment = False in_multiline_comment = False
yield line[index + 2:] line = line[index + 2:]
else: if not in_multiline_comment:
line = re.sub(r'//[^\n]*', '', line)
line = re.sub(r'/\*.*?\*/', '', line)
index = line.find('/*') index = line.find('/*')
if index != -1: if index != -1:
yield line[:index] yield lineno, line[:index]
in_comment = True in_multiline_comment = True
else: else:
index = line.find('//') yield lineno, line
if index != -1:
yield line[:index]
else:
yield line
@target('build/check-requires-timestamp', SRC, INTERNAL_SRC, EXTERNAL_SRC, EXAMPLES_SRC, SPEC) @target('build/check-requires-timestamp', SRC, INTERNAL_SRC, EXTERNAL_SRC, EXAMPLES_SRC, SPEC)
@@ -272,10 +272,8 @@ def build_check_requires_timestamp(t):
continue continue
require_linenos = {} require_linenos = {}
uses = set() uses = set()
lineno = 0
lines = open(filename).readlines() lines = open(filename).readlines()
for line in lines: for lineno, line in _strip_comments(lines):
lineno += 1
m = re.match(r'goog.provide\(\'(.*)\'\);', line) m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m: if m:
all_provides.add(m.group(1)) all_provides.add(m.group(1))
@@ -284,7 +282,7 @@ def build_check_requires_timestamp(t):
if m: if m:
require_linenos[m.group(1)] = lineno require_linenos[m.group(1)] = lineno
continue continue
for line in lines: for lineno, line in _strip_comments(lines):
for require in require_linenos.iterkeys(): for require in require_linenos.iterkeys():
if require in line: if require in line:
uses.add(require) uses.add(require)
@@ -302,9 +300,7 @@ def build_check_requires_timestamp(t):
provides = set() provides = set()
requires = set() requires = set()
uses = set() uses = set()
lineno = 0 for lineno, line in _strip_comments(open(filename)):
for line in _strip_comments(open(filename)):
lineno += 1
m = re.match(r'goog.provide\(\'(.*)\'\);', line) m = re.match(r'goog.provide\(\'(.*)\'\);', line)
if m: if m:
provides.add(m.group(1)) provides.add(m.group(1))