[ruby/yarp] Resync YARP (#8098)

This commit is contained in:
Jemma Issroff 2023-07-19 16:15:01 -04:00 committed by GitHub
parent 7380c73af4
commit 84b5274143
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
Notes: git 2023-07-19 20:15:22 +00:00
Merged-By: jemmaissroff
6 changed files with 271 additions and 20 deletions

View File

@ -124,7 +124,6 @@ YARP_FILES = yarp/api_node.$(OBJEXT) \
yarp/util/yp_list.$(OBJEXT) \
yarp/util/yp_memchr.$(OBJEXT) \
yarp/util/yp_newline_list.$(OBJEXT) \
yarp/util/yp_snprintf.$(OBJEXT) \
yarp/util/yp_state_stack.$(OBJEXT) \
yarp/util/yp_string.$(OBJEXT) \
yarp/util/yp_string_list.$(OBJEXT) \
@ -19665,10 +19664,6 @@ yarp/util/yp_newline_list.$(OBJEXT): $(top_srcdir)/yarp/defines.h
yarp/util/yp_newline_list.$(OBJEXT): $(top_srcdir)/yarp/util/yp_newline_list.c
yarp/util/yp_newline_list.$(OBJEXT): $(top_srcdir)/yarp/util/yp_newline_list.h
yarp/util/yp_newline_list.$(OBJEXT): {$(VPATH)}config.h
yarp/util/yp_snprintf.$(OBJEXT): $(top_srcdir)/yarp/config.h
yarp/util/yp_snprintf.$(OBJEXT): $(top_srcdir)/yarp/defines.h
yarp/util/yp_snprintf.$(OBJEXT): $(top_srcdir)/yarp/util/yp_snprintf.c
yarp/util/yp_snprintf.$(OBJEXT): {$(VPATH)}config.h
yarp/util/yp_state_stack.$(OBJEXT): $(top_srcdir)/yarp/config.h
yarp/util/yp_state_stack.$(OBJEXT): $(top_srcdir)/yarp/defines.h
yarp/util/yp_state_stack.$(OBJEXT): $(top_srcdir)/yarp/util/yp_state_stack.c

View File

@ -45,6 +45,12 @@ int yp_snprintf(char *dest, YP_ATTRIBUTE_UNUSED size_t size, const char *format,
#if defined(HAVE_SNPRINTF)
// We use snprintf if it's available
# define yp_snprintf snprintf
#else
// In case snprintf isn't present on the system, we provide our own that simply
// forwards to the less-safe sprintf.
# define yp_snprintf(dest, size, ...) sprintf((dest), __VA_ARGS__)
#endif
#endif

View File

@ -1732,3 +1732,264 @@ yp_node_memsize(yp_node_t *node, yp_memsize_t *memsize) {
*memsize = (yp_memsize_t) { .memsize = 0, .node_count = 0 };
yp_node_memsize_node(node, memsize);
}
// Returns a string representation of the given node type.
YP_EXPORTED_FUNCTION const char *
yp_node_type_to_str(yp_node_type_t node_type)
{
switch (node_type) {
case YP_NODE_ALIAS_NODE:
return "YP_NODE_ALIAS_NODE";
case YP_NODE_ALTERNATION_PATTERN_NODE:
return "YP_NODE_ALTERNATION_PATTERN_NODE";
case YP_NODE_AND_NODE:
return "YP_NODE_AND_NODE";
case YP_NODE_ARGUMENTS_NODE:
return "YP_NODE_ARGUMENTS_NODE";
case YP_NODE_ARRAY_NODE:
return "YP_NODE_ARRAY_NODE";
case YP_NODE_ARRAY_PATTERN_NODE:
return "YP_NODE_ARRAY_PATTERN_NODE";
case YP_NODE_ASSOC_NODE:
return "YP_NODE_ASSOC_NODE";
case YP_NODE_ASSOC_SPLAT_NODE:
return "YP_NODE_ASSOC_SPLAT_NODE";
case YP_NODE_BACK_REFERENCE_READ_NODE:
return "YP_NODE_BACK_REFERENCE_READ_NODE";
case YP_NODE_BEGIN_NODE:
return "YP_NODE_BEGIN_NODE";
case YP_NODE_BLOCK_ARGUMENT_NODE:
return "YP_NODE_BLOCK_ARGUMENT_NODE";
case YP_NODE_BLOCK_NODE:
return "YP_NODE_BLOCK_NODE";
case YP_NODE_BLOCK_PARAMETER_NODE:
return "YP_NODE_BLOCK_PARAMETER_NODE";
case YP_NODE_BLOCK_PARAMETERS_NODE:
return "YP_NODE_BLOCK_PARAMETERS_NODE";
case YP_NODE_BREAK_NODE:
return "YP_NODE_BREAK_NODE";
case YP_NODE_CALL_NODE:
return "YP_NODE_CALL_NODE";
case YP_NODE_CALL_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_CALL_OPERATOR_AND_WRITE_NODE";
case YP_NODE_CALL_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_CALL_OPERATOR_OR_WRITE_NODE";
case YP_NODE_CALL_OPERATOR_WRITE_NODE:
return "YP_NODE_CALL_OPERATOR_WRITE_NODE";
case YP_NODE_CAPTURE_PATTERN_NODE:
return "YP_NODE_CAPTURE_PATTERN_NODE";
case YP_NODE_CASE_NODE:
return "YP_NODE_CASE_NODE";
case YP_NODE_CLASS_NODE:
return "YP_NODE_CLASS_NODE";
case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE";
case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE";
case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE:
return "YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE";
case YP_NODE_CLASS_VARIABLE_READ_NODE:
return "YP_NODE_CLASS_VARIABLE_READ_NODE";
case YP_NODE_CLASS_VARIABLE_WRITE_NODE:
return "YP_NODE_CLASS_VARIABLE_WRITE_NODE";
case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE";
case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE";
case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE:
return "YP_NODE_CONSTANT_OPERATOR_WRITE_NODE";
case YP_NODE_CONSTANT_PATH_NODE:
return "YP_NODE_CONSTANT_PATH_NODE";
case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE";
case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE";
case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE:
return "YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE";
case YP_NODE_CONSTANT_PATH_WRITE_NODE:
return "YP_NODE_CONSTANT_PATH_WRITE_NODE";
case YP_NODE_CONSTANT_READ_NODE:
return "YP_NODE_CONSTANT_READ_NODE";
case YP_NODE_DEF_NODE:
return "YP_NODE_DEF_NODE";
case YP_NODE_DEFINED_NODE:
return "YP_NODE_DEFINED_NODE";
case YP_NODE_ELSE_NODE:
return "YP_NODE_ELSE_NODE";
case YP_NODE_EMBEDDED_STATEMENTS_NODE:
return "YP_NODE_EMBEDDED_STATEMENTS_NODE";
case YP_NODE_EMBEDDED_VARIABLE_NODE:
return "YP_NODE_EMBEDDED_VARIABLE_NODE";
case YP_NODE_ENSURE_NODE:
return "YP_NODE_ENSURE_NODE";
case YP_NODE_FALSE_NODE:
return "YP_NODE_FALSE_NODE";
case YP_NODE_FIND_PATTERN_NODE:
return "YP_NODE_FIND_PATTERN_NODE";
case YP_NODE_FLOAT_NODE:
return "YP_NODE_FLOAT_NODE";
case YP_NODE_FOR_NODE:
return "YP_NODE_FOR_NODE";
case YP_NODE_FORWARDING_ARGUMENTS_NODE:
return "YP_NODE_FORWARDING_ARGUMENTS_NODE";
case YP_NODE_FORWARDING_PARAMETER_NODE:
return "YP_NODE_FORWARDING_PARAMETER_NODE";
case YP_NODE_FORWARDING_SUPER_NODE:
return "YP_NODE_FORWARDING_SUPER_NODE";
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE";
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE";
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE:
return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE";
case YP_NODE_GLOBAL_VARIABLE_READ_NODE:
return "YP_NODE_GLOBAL_VARIABLE_READ_NODE";
case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE:
return "YP_NODE_GLOBAL_VARIABLE_WRITE_NODE";
case YP_NODE_HASH_NODE:
return "YP_NODE_HASH_NODE";
case YP_NODE_HASH_PATTERN_NODE:
return "YP_NODE_HASH_PATTERN_NODE";
case YP_NODE_IF_NODE:
return "YP_NODE_IF_NODE";
case YP_NODE_IMAGINARY_NODE:
return "YP_NODE_IMAGINARY_NODE";
case YP_NODE_IN_NODE:
return "YP_NODE_IN_NODE";
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE";
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE";
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE:
return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE";
case YP_NODE_INSTANCE_VARIABLE_READ_NODE:
return "YP_NODE_INSTANCE_VARIABLE_READ_NODE";
case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE:
return "YP_NODE_INSTANCE_VARIABLE_WRITE_NODE";
case YP_NODE_INTEGER_NODE:
return "YP_NODE_INTEGER_NODE";
case YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE:
return "YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE";
case YP_NODE_INTERPOLATED_STRING_NODE:
return "YP_NODE_INTERPOLATED_STRING_NODE";
case YP_NODE_INTERPOLATED_SYMBOL_NODE:
return "YP_NODE_INTERPOLATED_SYMBOL_NODE";
case YP_NODE_INTERPOLATED_X_STRING_NODE:
return "YP_NODE_INTERPOLATED_X_STRING_NODE";
case YP_NODE_KEYWORD_HASH_NODE:
return "YP_NODE_KEYWORD_HASH_NODE";
case YP_NODE_KEYWORD_PARAMETER_NODE:
return "YP_NODE_KEYWORD_PARAMETER_NODE";
case YP_NODE_KEYWORD_REST_PARAMETER_NODE:
return "YP_NODE_KEYWORD_REST_PARAMETER_NODE";
case YP_NODE_LAMBDA_NODE:
return "YP_NODE_LAMBDA_NODE";
case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
return "YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE";
case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
return "YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE";
case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE:
return "YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE";
case YP_NODE_LOCAL_VARIABLE_READ_NODE:
return "YP_NODE_LOCAL_VARIABLE_READ_NODE";
case YP_NODE_LOCAL_VARIABLE_WRITE_NODE:
return "YP_NODE_LOCAL_VARIABLE_WRITE_NODE";
case YP_NODE_MATCH_PREDICATE_NODE:
return "YP_NODE_MATCH_PREDICATE_NODE";
case YP_NODE_MATCH_REQUIRED_NODE:
return "YP_NODE_MATCH_REQUIRED_NODE";
case YP_NODE_MISSING_NODE:
return "YP_NODE_MISSING_NODE";
case YP_NODE_MODULE_NODE:
return "YP_NODE_MODULE_NODE";
case YP_NODE_MULTI_WRITE_NODE:
return "YP_NODE_MULTI_WRITE_NODE";
case YP_NODE_NEXT_NODE:
return "YP_NODE_NEXT_NODE";
case YP_NODE_NIL_NODE:
return "YP_NODE_NIL_NODE";
case YP_NODE_NO_KEYWORDS_PARAMETER_NODE:
return "YP_NODE_NO_KEYWORDS_PARAMETER_NODE";
case YP_NODE_NUMBERED_REFERENCE_READ_NODE:
return "YP_NODE_NUMBERED_REFERENCE_READ_NODE";
case YP_NODE_OPTIONAL_PARAMETER_NODE:
return "YP_NODE_OPTIONAL_PARAMETER_NODE";
case YP_NODE_OR_NODE:
return "YP_NODE_OR_NODE";
case YP_NODE_PARAMETERS_NODE:
return "YP_NODE_PARAMETERS_NODE";
case YP_NODE_PARENTHESES_NODE:
return "YP_NODE_PARENTHESES_NODE";
case YP_NODE_PINNED_EXPRESSION_NODE:
return "YP_NODE_PINNED_EXPRESSION_NODE";
case YP_NODE_PINNED_VARIABLE_NODE:
return "YP_NODE_PINNED_VARIABLE_NODE";
case YP_NODE_POST_EXECUTION_NODE:
return "YP_NODE_POST_EXECUTION_NODE";
case YP_NODE_PRE_EXECUTION_NODE:
return "YP_NODE_PRE_EXECUTION_NODE";
case YP_NODE_PROGRAM_NODE:
return "YP_NODE_PROGRAM_NODE";
case YP_NODE_RANGE_NODE:
return "YP_NODE_RANGE_NODE";
case YP_NODE_RATIONAL_NODE:
return "YP_NODE_RATIONAL_NODE";
case YP_NODE_REDO_NODE:
return "YP_NODE_REDO_NODE";
case YP_NODE_REGULAR_EXPRESSION_NODE:
return "YP_NODE_REGULAR_EXPRESSION_NODE";
case YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE:
return "YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE";
case YP_NODE_REQUIRED_PARAMETER_NODE:
return "YP_NODE_REQUIRED_PARAMETER_NODE";
case YP_NODE_RESCUE_MODIFIER_NODE:
return "YP_NODE_RESCUE_MODIFIER_NODE";
case YP_NODE_RESCUE_NODE:
return "YP_NODE_RESCUE_NODE";
case YP_NODE_REST_PARAMETER_NODE:
return "YP_NODE_REST_PARAMETER_NODE";
case YP_NODE_RETRY_NODE:
return "YP_NODE_RETRY_NODE";
case YP_NODE_RETURN_NODE:
return "YP_NODE_RETURN_NODE";
case YP_NODE_SELF_NODE:
return "YP_NODE_SELF_NODE";
case YP_NODE_SINGLETON_CLASS_NODE:
return "YP_NODE_SINGLETON_CLASS_NODE";
case YP_NODE_SOURCE_ENCODING_NODE:
return "YP_NODE_SOURCE_ENCODING_NODE";
case YP_NODE_SOURCE_FILE_NODE:
return "YP_NODE_SOURCE_FILE_NODE";
case YP_NODE_SOURCE_LINE_NODE:
return "YP_NODE_SOURCE_LINE_NODE";
case YP_NODE_SPLAT_NODE:
return "YP_NODE_SPLAT_NODE";
case YP_NODE_STATEMENTS_NODE:
return "YP_NODE_STATEMENTS_NODE";
case YP_NODE_STRING_CONCAT_NODE:
return "YP_NODE_STRING_CONCAT_NODE";
case YP_NODE_STRING_NODE:
return "YP_NODE_STRING_NODE";
case YP_NODE_SUPER_NODE:
return "YP_NODE_SUPER_NODE";
case YP_NODE_SYMBOL_NODE:
return "YP_NODE_SYMBOL_NODE";
case YP_NODE_TRUE_NODE:
return "YP_NODE_TRUE_NODE";
case YP_NODE_UNDEF_NODE:
return "YP_NODE_UNDEF_NODE";
case YP_NODE_UNLESS_NODE:
return "YP_NODE_UNLESS_NODE";
case YP_NODE_UNTIL_NODE:
return "YP_NODE_UNTIL_NODE";
case YP_NODE_WHEN_NODE:
return "YP_NODE_WHEN_NODE";
case YP_NODE_WHILE_NODE:
return "YP_NODE_WHILE_NODE";
case YP_NODE_X_STRING_NODE:
return "YP_NODE_X_STRING_NODE";
case YP_NODE_YIELD_NODE:
return "YP_NODE_YIELD_NODE";
}
return "\0";
}

View File

@ -27,6 +27,9 @@ typedef struct {
// Calculates the memory footprint of a given node.
YP_EXPORTED_FUNCTION void yp_node_memsize(yp_node_t *node, yp_memsize_t *memsize);
// Returns a string representation of the given node type.
YP_EXPORTED_FUNCTION const char * yp_node_type_to_str(yp_node_type_t node_type);
#define YP_EMPTY_NODE_LIST ((yp_node_list_t) { .nodes = NULL, .size = 0, .capacity = 0 })
#define YP_EMPTY_LOCATION_LIST ((yp_location_list_t) { .locations = NULL, .size = 0, .capacity = 0 })

View File

@ -1,14 +0,0 @@
#include "yarp/defines.h"
#ifndef HAVE_SNPRINTF
// In case snprintf isn't present on the system, we provide our own that simply
// forwards to the less-safe sprintf.
int
yp_snprintf(char *dest, YP_ATTRIBUTE_UNUSED size_t size, const char *format, ...) {
va_list args;
va_start(args, format);
int result = vsprintf(dest, format, args);
va_end(args);
return result;
}
#endif

View File

@ -12391,7 +12391,7 @@ parse_expression_infix(yp_parser_t *parser, yp_node_t *node, yp_binding_power_t
YP_ATTRIBUTE_UNUSED bool captured_group_names =
yp_regexp_named_capture_group_names(content_loc->start, (size_t) (content_loc->end - content_loc->start), &named_captures);
// We assert that the the regex was successfully parsed
// We assert that the regex was successfully parsed
assert(captured_group_names);
for (size_t index = 0; index < named_captures.length; index++) {