mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
gh-119180: PEP 649 compiler changes (#119361)
This commit is contained in:
parent
02c1dfff07
commit
9b8611eeea
28 changed files with 610 additions and 329 deletions
|
@ -559,6 +559,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
|||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dot));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(dot_locals));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(empty));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(format));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(generic_base));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(json_decoder));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_STR(kwdefaults));
|
||||
|
@ -745,7 +746,6 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
|||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_abstract_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_active));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_align_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_annotation));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_anonymous_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_argtypes_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_as_parameter_));
|
||||
|
|
|
@ -45,6 +45,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_STR(dot, ".")
|
||||
STRUCT_FOR_STR(dot_locals, ".<locals>")
|
||||
STRUCT_FOR_STR(empty, "")
|
||||
STRUCT_FOR_STR(format, ".format")
|
||||
STRUCT_FOR_STR(generic_base, ".generic_base")
|
||||
STRUCT_FOR_STR(json_decoder, "json.decoder")
|
||||
STRUCT_FOR_STR(kwdefaults, ".kwdefaults")
|
||||
|
@ -234,7 +235,6 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(_abstract_)
|
||||
STRUCT_FOR_ID(_active)
|
||||
STRUCT_FOR_ID(_align_)
|
||||
STRUCT_FOR_ID(_annotation)
|
||||
STRUCT_FOR_ID(_anonymous_)
|
||||
STRUCT_FOR_ID(_argtypes_)
|
||||
STRUCT_FOR_ID(_as_parameter_)
|
||||
|
|
|
@ -57,6 +57,7 @@ extern "C" {
|
|||
#define MAKE_FUNCTION_KWDEFAULTS 0x02
|
||||
#define MAKE_FUNCTION_ANNOTATIONS 0x04
|
||||
#define MAKE_FUNCTION_CLOSURE 0x08
|
||||
#define MAKE_FUNCTION_ANNOTATE 0x10
|
||||
|
||||
/* Values used as the oparg for LOAD_COMMON_CONSTANT */
|
||||
#define CONSTANT_ASSERTIONERROR 0
|
||||
|
|
2
Include/internal/pycore_runtime_init_generated.h
generated
2
Include/internal/pycore_runtime_init_generated.h
generated
|
@ -554,6 +554,7 @@ extern "C" {
|
|||
INIT_STR(dot, "."), \
|
||||
INIT_STR(dot_locals, ".<locals>"), \
|
||||
INIT_STR(empty, ""), \
|
||||
INIT_STR(format, ".format"), \
|
||||
INIT_STR(generic_base, ".generic_base"), \
|
||||
INIT_STR(json_decoder, "json.decoder"), \
|
||||
INIT_STR(kwdefaults, ".kwdefaults"), \
|
||||
|
@ -743,7 +744,6 @@ extern "C" {
|
|||
INIT_ID(_abstract_), \
|
||||
INIT_ID(_active), \
|
||||
INIT_ID(_align_), \
|
||||
INIT_ID(_annotation), \
|
||||
INIT_ID(_anonymous_), \
|
||||
INIT_ID(_argtypes_), \
|
||||
INIT_ID(_as_parameter_), \
|
||||
|
|
|
@ -12,8 +12,9 @@ struct _mod; // Type defined in pycore_ast.h
|
|||
|
||||
typedef enum _block_type {
|
||||
FunctionBlock, ClassBlock, ModuleBlock,
|
||||
// Used for annotations if 'from __future__ import annotations' is active.
|
||||
// Annotation blocks cannot bind names and are not evaluated.
|
||||
// Used for annotations. If 'from __future__ import annotations' is active,
|
||||
// annotation blocks cannot bind names and are not evaluated. Otherwise, they
|
||||
// are lazily evaluated (see PEP 649).
|
||||
AnnotationBlock,
|
||||
// Used for generics and type aliases. These work mostly like functions
|
||||
// (see PEP 695 for details). The three different blocks function identically;
|
||||
|
@ -89,6 +90,7 @@ typedef struct _symtable_entry {
|
|||
including free refs to globals */
|
||||
unsigned ste_generator : 1; /* true if namespace is a generator */
|
||||
unsigned ste_coroutine : 1; /* true if namespace is a coroutine */
|
||||
unsigned ste_annotations_used : 1; /* true if there are any annotations in this scope */
|
||||
_Py_comprehension_ty ste_comprehension; /* Kind of comprehension (if any) */
|
||||
unsigned ste_varargs : 1; /* true if block has varargs */
|
||||
unsigned ste_varkeywords : 1; /* true if block has varkeywords */
|
||||
|
@ -110,6 +112,7 @@ typedef struct _symtable_entry {
|
|||
int ste_end_col_offset; /* end offset of first line of block */
|
||||
int ste_opt_lineno; /* lineno of last exec or import * */
|
||||
int ste_opt_col_offset; /* offset of last exec or import * */
|
||||
struct _symtable_entry *ste_annotation_block; /* symbol table entry for this entry's annotations */
|
||||
struct symtable *ste_table;
|
||||
} PySTEntryObject;
|
||||
|
||||
|
@ -126,6 +129,7 @@ extern struct symtable* _PySymtable_Build(
|
|||
PyObject *filename,
|
||||
_PyFutureFeatures *future);
|
||||
extern PySTEntryObject* _PySymtable_Lookup(struct symtable *, void *);
|
||||
extern int _PySymtable_LookupOptional(struct symtable *, void *, PySTEntryObject **);
|
||||
|
||||
extern void _PySymtable_Free(struct symtable *);
|
||||
|
||||
|
|
|
@ -543,9 +543,6 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) {
|
|||
string = &_Py_ID(_align_);
|
||||
assert(_PyUnicode_CheckConsistency(string, 1));
|
||||
_PyUnicode_InternInPlace(interp, &string);
|
||||
string = &_Py_ID(_annotation);
|
||||
assert(_PyUnicode_CheckConsistency(string, 1));
|
||||
_PyUnicode_InternInPlace(interp, &string);
|
||||
string = &_Py_ID(_anonymous_);
|
||||
assert(_PyUnicode_CheckConsistency(string, 1));
|
||||
_PyUnicode_InternInPlace(interp, &string);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue