summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-07-19 16:15:01 -0400
committerGitHub <noreply@github.com>2023-07-19 16:15:01 -0400
commit84b5274143bf54f77f9950eeba72a64cc761dd45 (patch)
treec92ade463667f2825ada8864764d76c9c2ca45a7
parent7380c73af410d33dc2d4a3d77871d2001531416f (diff)
[ruby/yarp] Resync YARP (#8098)
Notes
Notes: Merged-By: jemmaissroff
-rw-r--r--common.mk5
-rw-r--r--yarp/defines.h6
-rw-r--r--yarp/node.c261
-rw-r--r--yarp/node.h3
-rw-r--r--yarp/util/yp_snprintf.c14
-rw-r--r--yarp/yarp.c2
6 files changed, 271 insertions, 20 deletions
diff --git a/common.mk b/common.mk
index d7f031a1c5..ffe04bd6af 100644
--- a/common.mk
+++ b/common.mk
@@ -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
diff --git a/yarp/defines.h b/yarp/defines.h
index 5dba303a3d..ea5db993c9 100644
--- a/yarp/defines.h
+++ b/yarp/defines.h
@@ -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
diff --git a/yarp/node.c b/yarp/node.c
index 0b45624fc7..f02cac3f3c 100644
--- a/yarp/node.c
+++ b/yarp/node.c
@@ -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";
+}
diff --git a/yarp/node.h b/yarp/node.h
index f75e03ba10..a107baddb8 100644
--- a/yarp/node.h
+++ b/yarp/node.h
@@ -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 })
diff --git a/yarp/util/yp_snprintf.c b/yarp/util/yp_snprintf.c
deleted file mode 100644
index f3b69c2f58..0000000000
--- a/yarp/util/yp_snprintf.c
+++ /dev/null
@@ -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
diff --git a/yarp/yarp.c b/yarp/yarp.c
index 8e920b3571..c80aa5499a 100644
--- a/yarp/yarp.c
+++ b/yarp/yarp.c
@@ -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++) {