Skip to content

Commit 586fc02

Browse files
gh-90110: Update the c-analyzer Tool (gh-96058)
1 parent 5aac851 commit 586fc02

File tree

4 files changed

+87
-8
lines changed

4 files changed

+87
-8
lines changed

Tools/c-analyzer/c_parser/info.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,9 @@ def get_parsed_vartype(decl):
385385
elif isinstance(decl, Variable):
386386
storage = decl.storage
387387
typequal, typespec, abstract = decl.vartype
388+
elif isinstance(decl, Signature):
389+
storage = None
390+
typequal, typespec, abstract = decl.returntype
388391
elif isinstance(decl, Function):
389392
storage = decl.storage
390393
typequal, typespec, abstract = decl.signature.returntype
@@ -1012,6 +1015,18 @@ def __str__(self):
10121015
def returns(self):
10131016
return self.returntype
10141017

1018+
@property
1019+
def typequal(self):
1020+
return self.returntype.typequal
1021+
1022+
@property
1023+
def typespec(self):
1024+
return self.returntype.typespec
1025+
1026+
@property
1027+
def abstract(self):
1028+
return self.returntype.abstract
1029+
10151030

10161031
class Function(Declaration):
10171032
kind = KIND.FUNCTION
@@ -1106,9 +1121,16 @@ class TypeDef(TypeDeclaration):
11061121
def _resolve_data(cls, data):
11071122
if not data:
11081123
raise NotImplementedError(data)
1109-
vartype = dict(data)
1110-
del vartype['storage']
1111-
return VarType(**vartype), None
1124+
kwargs = dict(data)
1125+
del kwargs['storage']
1126+
if 'returntype' in kwargs:
1127+
vartype = kwargs['returntype']
1128+
del vartype['storage']
1129+
kwargs['returntype'] = VarType(**vartype)
1130+
datacls = Signature
1131+
else:
1132+
datacls = VarType
1133+
return datacls(**kwargs), None
11121134

11131135
@classmethod
11141136
def _raw_data(self, data):

Tools/c-analyzer/c_parser/parser/_common.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99

1010
def log_match(group, m):
1111
from . import _logger
12-
_logger.debug(f'matched <{group}> ({m.group(0)})')
12+
text = m.group(0)
13+
if text.startswith(('(', ')')) or text.endswith(('(', ')')):
14+
_logger.debug(f'matched <{group}> ({text!r})')
15+
else:
16+
_logger.debug(f'matched <{group}> ({text})')
1317

1418

1519
#############################

Tools/c-analyzer/cpython/_parser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ def clean_lines(text):
8686
# generated
8787
Python/deepfreeze/*.c
8888
Python/frozen_modules/*.h
89-
Python/opcode_targets.h
90-
Python/stdlib_module_names.h
9189
9290
# @end=conf@
9391
''')
@@ -109,9 +107,7 @@ def clean_lines(text):
109107
110108
Modules/_dbmmodule.c
111109
Modules/cjkcodecs/_codecs_*.c
112-
Modules/expat/xmlrole.c
113110
Modules/expat/xmlparse.c
114-
Python/initconfig.c
115111
''')
116112

117113
INCL_DIRS = clean_lines('''
@@ -308,8 +304,12 @@ def clean_lines(text):
308304
_abs('Objects/stringlib/unicode_format.h'): (10_000, 400),
309305
_abs('Objects/typeobject.c'): (20_000, 200),
310306
_abs('Python/compile.c'): (20_000, 500),
307+
_abs('Python/deepfreeze/*.c'): (20_000, 500),
308+
_abs('Python/frozen_modules/*.h'): (20_000, 500),
311309
_abs('Python/pylifecycle.c'): (500_000, 5000),
312310
_abs('Python/pystate.c'): (500_000, 5000),
311+
_abs('Python/opcode_targets.h'): (10_000, 500),
312+
_abs('Python/stdlib_module_names.h'): (5_000, 500),
313313
}
314314

315315

Tools/c-analyzer/cpython/ignored.tsv

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,58 @@ Objects/object.c - _PyLineIterator -
307307
Objects/object.c - _PyPositionsIterator -
308308
Python/importdl.h - _PyImport_DynLoadFiletab -
309309

310+
Modules/expat/xmlrole.c - prolog0 -
311+
Modules/expat/xmlrole.c - prolog1 -
312+
Modules/expat/xmlrole.c - prolog2 -
313+
Modules/expat/xmlrole.c - doctype0 -
314+
Modules/expat/xmlrole.c - doctype1 -
315+
Modules/expat/xmlrole.c - doctype2 -
316+
Modules/expat/xmlrole.c - doctype3 -
317+
Modules/expat/xmlrole.c - doctype4 -
318+
Modules/expat/xmlrole.c - doctype5 -
319+
Modules/expat/xmlrole.c - internalSubset -
320+
Modules/expat/xmlrole.c - entity0 -
321+
Modules/expat/xmlrole.c - entity1 -
322+
Modules/expat/xmlrole.c - entity2 -
323+
Modules/expat/xmlrole.c - entity3 -
324+
Modules/expat/xmlrole.c - entity4 -
325+
Modules/expat/xmlrole.c - entity5 -
326+
Modules/expat/xmlrole.c - entity6 -
327+
Modules/expat/xmlrole.c - entity7 -
328+
Modules/expat/xmlrole.c - entity8 -
329+
Modules/expat/xmlrole.c - entity9 -
330+
Modules/expat/xmlrole.c - entity10 -
331+
Modules/expat/xmlrole.c - notation0 -
332+
Modules/expat/xmlrole.c - notation1 -
333+
Modules/expat/xmlrole.c - notation2 -
334+
Modules/expat/xmlrole.c - notation3 -
335+
Modules/expat/xmlrole.c - notation4 -
336+
Modules/expat/xmlrole.c - attlist0 -
337+
Modules/expat/xmlrole.c - attlist1 -
338+
Modules/expat/xmlrole.c - attlist2 -
339+
Modules/expat/xmlrole.c - attlist3 -
340+
Modules/expat/xmlrole.c - attlist4 -
341+
Modules/expat/xmlrole.c - attlist5 -
342+
Modules/expat/xmlrole.c - attlist6 -
343+
Modules/expat/xmlrole.c - attlist7 -
344+
Modules/expat/xmlrole.c - attlist8 -
345+
Modules/expat/xmlrole.c - attlist9 -
346+
Modules/expat/xmlrole.c - element0 -
347+
Modules/expat/xmlrole.c - element1 -
348+
Modules/expat/xmlrole.c - element2 -
349+
Modules/expat/xmlrole.c - element3 -
350+
Modules/expat/xmlrole.c - element4 -
351+
Modules/expat/xmlrole.c - element5 -
352+
Modules/expat/xmlrole.c - element6 -
353+
Modules/expat/xmlrole.c - element7 -
354+
Modules/expat/xmlrole.c - externalSubset0 -
355+
Modules/expat/xmlrole.c - externalSubset1 -
356+
Modules/expat/xmlrole.c - condSect0 -
357+
Modules/expat/xmlrole.c - condSect1 -
358+
Modules/expat/xmlrole.c - condSect2 -
359+
Modules/expat/xmlrole.c - declClose -
360+
Modules/expat/xmlrole.c - error -
361+
310362

311363
##################################
312364
# test code
@@ -1933,4 +1985,5 @@ Python/specialize.c - adaptive_opcodes -
19331985
Python/specialize.c - cache_requirements -
19341986
Python/specialize.c - compare_masks -
19351987
Python/specialize.c - _PyOpcode_Adaptive -
1988+
Python/stdlib_module_names.h - _Py_stdlib_module_names -
19361989
Python/sysmodule.c - whatstrings -

0 commit comments

Comments
 (0)