Bump rubocop from 1.88.0 to 1.89.0 - #1034
Open
dependabot[bot] wants to merge 1 commit into
Open
Conversation
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.88.0 to 1.89.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](rubocop/rubocop@v1.88.0...v1.89.0) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.89.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
1 similar comment
Contributor
Contributor
gem compare json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT require_paths:
2.20.0: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.20.0", "lib"]
2.21.2: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.21.2", "lib"]
DIFFERENT rubygems_version:
2.20.0: 4.0.12
2.21.2: 4.0.16
DIFFERENT version:
2.20.0: 2.20.0
2.21.2: 2.21.2
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md +16/-0
README.md +5/-5
ext/json/ext/generator/generator.c +72/-3
ext/json/ext/json.h +4/-0
ext/json/ext/parser/extconf.rb +6/-16
ext/json/ext/parser/parser.c +140/-43
lib/json.rb +18/-3
lib/json/common.rb +9/-0
lib/json/ext.rb +26/-0
lib/json/ext/generator/state.rb +1/-0
lib/json/truffle_ruby/generator.rb +36/-1
lib/json/version.rb +1/-1
DIFFERENT extra_rdoc_files:
2.20.0->2.21.2:
* Changed:
README.md +5/-5 |
Contributor
Contributor
gem compare json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT require_paths:
2.20.0: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.20.0", "lib"]
2.21.2: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.21.2", "lib"]
DIFFERENT rubygems_version:
2.20.0: 4.0.12
2.21.2: 4.0.16
DIFFERENT version:
2.20.0: 2.20.0
2.21.2: 2.21.2
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md +16/-0
README.md +5/-5
ext/json/ext/generator/generator.c +72/-3
ext/json/ext/json.h +4/-0
ext/json/ext/parser/extconf.rb +6/-16
ext/json/ext/parser/parser.c +140/-43
lib/json.rb +18/-3
lib/json/common.rb +9/-0
lib/json/ext.rb +26/-0
lib/json/ext/generator/state.rb +1/-0
lib/json/truffle_ruby/generator.rb +36/-1
lib/json/version.rb +1/-1
DIFFERENT extra_rdoc_files:
2.20.0->2.21.2:
* Changed:
README.md +5/-5 |
1 similar comment
Contributor
gem compare json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT require_paths:
2.20.0: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.20.0", "lib"]
2.21.2: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.21.2", "lib"]
DIFFERENT rubygems_version:
2.20.0: 4.0.12
2.21.2: 4.0.16
DIFFERENT version:
2.20.0: 2.20.0
2.21.2: 2.21.2
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md +16/-0
README.md +5/-5
ext/json/ext/generator/generator.c +72/-3
ext/json/ext/json.h +4/-0
ext/json/ext/parser/extconf.rb +6/-16
ext/json/ext/parser/parser.c +140/-43
lib/json.rb +18/-3
lib/json/common.rb +9/-0
lib/json/ext.rb +26/-0
lib/json/ext/generator/state.rb +1/-0
lib/json/truffle_ruby/generator.rb +36/-1
lib/json/version.rb +1/-1
DIFFERENT extra_rdoc_files:
2.20.0->2.21.2:
* Changed:
README.md +5/-5 |
Contributor
gem compare --diff json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md
--- /tmp/d20260810-469-d15bjw/json-2.20.0/CHANGES.md 2026-08-10 02:34:52.852204023 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/CHANGES.md 2026-08-10 02:34:52.873204146 +0000
@@ -4,0 +5,16 @@
+### 2026-07-31 (2.21.2)
+
+* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc].
+
+### 2026-07-13 (2.21.1)
+
+* Fix a compilation issue on Window and Microsoft Visual C++.
+
+### 2026-07-12 (2.21.0)
+
+* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block.
+* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`.
+* Numerous correctness and performance fixes for `JSON::ResumableParser`.
+* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers.
+* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`.
+
README.md
--- /tmp/d20260810-469-d15bjw/json-2.20.0/README.md 2026-08-10 02:34:52.853204029 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/README.md 2026-08-10 02:34:52.874204152 +0000
@@ -88 +88 @@
-JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
+JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError)
@@ -120 +120 @@
-coder = JSON::Combining.new do |object, is_object_key|
+coder = JSON::Coder.new do |object, is_object_key|
@@ -123,2 +123,2 @@
- if !string.valid_encoding? || string.encoding != Encoding::UTF_8
- Base64.encode64(string)
+ if !object.valid_encoding? || object.encoding != Encoding::UTF_8
+ Base64.encode64(object)
@@ -126 +126 @@
- string
+ object
ext/json/ext/generator/generator.c
--- /tmp/d20260810-469-d15bjw/json-2.20.0/ext/json/ext/generator/generator.c 2026-08-10 02:34:52.854204034 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/ext/json/ext/generator/generator.c 2026-08-10 02:34:53.004204914 +0000
@@ -36,0 +37 @@
+ VALUE sort_keys;
@@ -39 +40 @@
-static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8;
+static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc;
@@ -43 +44 @@
- sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json;
+ sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json, sym_sort_keys;
@@ -711,0 +713 @@
+ rb_gc_mark_movable(state->sort_keys);
@@ -722,0 +725 @@
+ state->sort_keys = rb_gc_location(state->sort_keys);
@@ -742 +745 @@
- .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -771,0 +775 @@
+ RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys);
@@ -1052,0 +1057,5 @@
+ if (RB_UNLIKELY(data->state->sort_keys)) {
+ obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil);
+ Check_Type(obj, T_HASH);
+ }
+
@@ -1378,0 +1388 @@
+ RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys);
@@ -1724,0 +1735,49 @@
+static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc)
+{
+ if (!rb_obj_is_proc(proc)) {
+ rb_raise(rb_eTypeError, "sort_key_proc must be a Proc");
+ }
+ return default_sort_keys_proc = proc;
+}
+
+static VALUE normalize_sort_keys(VALUE value)
+{
+ if (rb_obj_is_proc(value)) {
+ return value;
+ } else if (value == Qtrue) {
+ return default_sort_keys_proc;
+ } else if (RTEST(value)) {
+ rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc");
+ } else {
+ return Qfalse;
+ }
+}
+
+/*
+ * call-seq: sort_keys
+ *
+ * Get the value of sort_keys.
+ */
+static VALUE cState_sort_keys_p(VALUE self)
+{
+ GET_STATE(self);
+ return state->sort_keys;
+}
+
+/*
+ * call-seq: sort_keys=(value)
+ *
+ * value is a boolean or a proc. If the value is the boolean true, object keys
+ * will be sorted lexicographically in ascending order.
+ *
+ * If the value is a proc, it receives the entire Hash and must return a Hash
+ * with its pairs in the desired order, allowing for arbitrary sorting.
+ */
+static VALUE cState_sort_keys_set(VALUE self, VALUE value)
+{
+ rb_check_frozen(self);
+ GET_STATE(self);
+ RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value));
+ return Qnil;
+}
+
@@ -1834,0 +1894,3 @@
+ else if (key == sym_sort_keys) {
+ state_write_value(data, &state->sort_keys, normalize_sort_keys(val));
+ }
@@ -1911,0 +1974,2 @@
+ rb_global_variable(&default_sort_keys_proc);
+
@@ -1920,0 +1985,2 @@
+ rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1);
+
@@ -1959,0 +2026,2 @@
+ rb_define_method(cState, "sort_keys", cState_sort_keys_p, 0);
+ rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1);
@@ -1988,0 +2057 @@
+ sym_sort_keys = ID2SYM(rb_intern("sort_keys"));
ext/json/ext/json.h
--- /tmp/d20260810-469-d15bjw/json-2.20.0/ext/json/ext/json.h 2026-08-10 02:34:52.854204034 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/ext/json/ext/json.h 2026-08-10 02:34:53.004204914 +0000
@@ -33,0 +34,4 @@
+#ifndef RUBY_TYPED_THREAD_SAFE_FREE
+#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY
+#endif
+
ext/json/ext/parser/extconf.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/ext/json/ext/parser/extconf.rb 2026-08-10 02:34:52.859204064 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/ext/json/ext/parser/extconf.rb 2026-08-10 02:34:53.004204914 +0000
@@ -18,16 +17,0 @@
-def have_builtin_func(name, check_expr, opt = "", &b)
- checking_for checking_message(name.funcall_style, nil, opt) do
- if try_compile(<<SRC, opt, &b)
-int foo;
-int main() { #{check_expr}; return 0; }
-SRC
- $defs.push(format("-DHAVE_BUILTIN_%s", name.tr_cpp))
- true
- else
- false
- end
- end
-end
-
-have_builtin_func("__builtin_clzll", "__builtin_clzll(0)")
-
@@ -47,0 +32,6 @@
+
+# Disable function outlining on clang to prevent some of the repeated instructions
+# in json_eat_whitespace being outlined into function calls.
+# Note: This verifies '-mno-outline' is accepted as a valid compiler flag
+# and will not pass it if unsupported.
+append_cflags("-mno-outline")
ext/json/ext/parser/parser.c
--- /tmp/d20260810-469-d15bjw/json-2.20.0/ext/json/ext/parser/parser.c 2026-08-10 02:34:52.861204076 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/ext/json/ext/parser/parser.c 2026-08-10 02:34:53.005204920 +0000
@@ -8 +8,4 @@
-static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
+static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column;
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
+static ID i_uminus;
+#endif
@@ -317 +320 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -514 +517 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
@@ -588,0 +592,2 @@
+ JSON_ASSERT(!state->parser);
+ JSON_ASSERT(state->cursor);
@@ -621,4 +626,8 @@
- long line, column;
- cursor_position(state, &line, &column);
-
- VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ VALUE warning;
+ if (state->parser) { // line and columns can't be accurate in resumable
+ warning = rb_utf8_str_new_cstr(message);
+ } else {
+ long line, column;
+ cursor_position(state, &line, &column);
+ warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ }
@@ -768 +777 @@
-json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
+json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos)
@@ -774,0 +784,5 @@
+ // An incomplete comment suspends a resumable parse by rewinding the cursor
+ // and throwing. Callers that already consumed a token not yet committed to
+ // the frame stack pass resume_pos so the rewind re-reads that token too.
+ // Non-resumable error positions keep pointing at the comment either way.
+ const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start;
@@ -779,2 +793,9 @@
- state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
- if (!state->cursor) {
+ const char *newline = memchr(state->cursor, '\n', state->end - state->cursor);
+ if (!newline) {
+ // state->parser marks resumable mode, where the buffer end is only a
+ // chunk boundary: the terminating newline may still arrive, so leave
+ // the comment unterminated instead of consuming to end as a one-shot
+ // parse would.
+ if (state->parser) {
+ raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos);
+ }
@@ -783 +804 @@
- state->cursor++;
+ state->cursor = newline + 1;
@@ -793 +814 @@
- raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos);
@@ -805 +826 @@
- raise_parse_error_at("unexpected token %s", state, start, eos(state));
+ raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state));
@@ -816 +837 @@
-json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos)
@@ -851 +872 @@
- json_eat_comments(state, config);
+ json_eat_comments(state, config, resume_pos);
@@ -859,0 +881,6 @@
+ALWAYS_INLINE(static) void
+json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+{
+ json_eat_whitespace_resume_at(state, config, include_comments, NULL);
+}
+
@@ -1132,0 +1160,7 @@
+ // If the value is so small that it definitely underflows to 0.0, return early
+ // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl.
+ // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2,
+ // so it rounds to 0 in IEEE 754 round-to-nearest.
+ if (RB_UNLIKELY(mantissa_digits + exponent < -324)) {
+ return rb_float_new(negative ? -0.0 : 0.0);
+ }
@@ -1432 +1466 @@
-static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
+static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable)
@@ -1488,0 +1523,10 @@
+ // A number touching the end of the buffer may still grow in a later chunk,
+ // so the caller will rewind and wait. Decoding it now would build a value
+ // -- for a long run of digits, an expensive bignum -- only to discard it,
+ // and repeating that on every resumed chunk is quadratic in the number's
+ // length. The digit scan above already advanced the cursor, which is all
+ // the caller needs to detect the incomplete number.
+ if (RB_UNLIKELY(resumable && eos(state))) {
+ return Qundef;
+ }
+
@@ -1565,0 +1610,7 @@
+ // A trailing comma lands us here expecting an element but finding the
+ // closing bracket; hand off to ARRAY_COMMA to close. An empty array
+ // closes inline at '[', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') {
+ goto JSON_PHASE_ARRAY_COMMA;
+ }
+
@@ -1606 +1657 @@
- value = json_parse_number(state, config, true, value_start);
+ value = json_parse_number(state, config, true, value_start, resumable);
@@ -1629 +1680 @@
- value = json_parse_number(state, config, false, value_start);
+ value = json_parse_number(state, config, false, value_start, resumable);
@@ -1661 +1712,3 @@
- json_eat_whitespace(state, config, true);
+ // The '[' is consumed but its frame is only pushed below, so a
+ // comment suspending here must resume from the bracket.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1690 +1743,2 @@
- json_eat_whitespace(state, config, true);
+ // Same as '[': the frame is only pushed below.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1747,0 +1802,7 @@
+ // A trailing comma lands us here expecting a key but finding the closing
+ // brace; hand off to OBJECT_COMMA to close. An empty object closes inline
+ // at '{', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && peek(state) == '}') {
+ goto JSON_PHASE_OBJECT_COMMA;
+ }
+
@@ -1810,7 +1871,4 @@
- if (config->allow_trailing_comma) {
- json_eat_whitespace(state, config, true);
- if (peek(state) == ']') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_ARRAY_COMMA;
- }
- }
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer.
@@ -1855,9 +1913,4 @@
- json_eat_whitespace(state, config, true);
-
- if (config->allow_trailing_comma) {
- if (peek(state) == '}') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_OBJECT_COMMA;
- }
- }
-
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer.
@@ -2183 +2236 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -2268 +2321 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -2521,0 +2575 @@
+ parser->state.start = parser->state.cursor = parser->state.end = 0;
@@ -2618 +2672,6 @@
- // Copy the value stack as we need to mutate it.
+ // Copy the value stack as we need to mutate it. The collapse loop folds each
+ // open container by popping its entries and pushing the single result, so a
+ // parent always reclaims its child's slot; head exceeds its live size by at
+ // most one, either for the missing-value placeholder pushed below or for the
+ // result of folding an empty innermost container. That one spare slot keeps
+ // rvalue_stack_push from growing (reallocating) this ALLOCV buffer.
@@ -2620,3 +2679,3 @@
- parser.value_stack.capa = (capa + missing_object_value);
- VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
- MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
+ parser.value_stack.capa = capa + 1;
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa);
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa);
@@ -2715 +2774 @@
- * call-seq: value? -> true or false
+ * call-seq: eos? -> true or false
@@ -2725,0 +2785,35 @@
+ * call-seq: partial_value? -> true or false
+ *
+ * Returns whether a document is currently under construction: an unclosed
+ * container, a key awaiting its value, etc.
+ *
+ * It answers the same question as <tt>!partial_value.nil?</tt>, but as a
+ * cheap predicate on the parser's internal state, without materializing the
+ * partially parsed Ruby objects:
+ * parser << '{"a":1,'
+ * parser.parse # => false
+ * parser.partial_value? # => true
+ *
+ * A fully parsed document whose value hasn't been retrieved yet is not under
+ * construction: #value? returns true and #partial_value? returns false.
+ */
+static VALUE cResumableParser_partial_value_p(VALUE self)
+{
+ JSON_ResumableParser *parser = cResumableParser_get(self);
+
+ // Mirror of #value?: values on the stack while the document isn't DONE
+ // belong to a partially built document. A container whose first key or
+ // element hasn't been parsed yet has no frame nor value registered (the
+ // tokenizer rewinds to the container start on EOS), so that state is
+ // observable through the buffer (#eos?/#rest) instead, keeping this
+ // predicate consistent with #partial_value returning nil.
+ if (parser->value_stack.head > 0) {
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
+ if (frame->phase != JSON_PHASE_DONE) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
@@ -2780,0 +2875 @@
+ rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0);
@@ -2814,0 +2910 @@
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
@@ -2815,0 +2912 @@
+#endif
lib/json.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json.rb 2026-08-10 02:34:52.862204081 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json.rb 2026-08-10 02:34:53.006204926 +0000
@@ -124 +124,3 @@
-# defaults to +100+; specify +false+ to disable depth checking.
+# defaults to +100+;
+# You can set it to +false+ to disable depth checking entirely, but that is dangerous
+# when parsing untrusted input.
@@ -126 +128 @@
-# With the default, +false+:
+# With the default, +100+:
@@ -386,0 +389,9 @@
+# With +false+:
+# obj = []
+# obj[0] = obj
+# # Raises SystemStackError: stack level too deep
+# JSON.generate(obj, max_nesting: false)
+#
+# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program
+# in an unrecoverable state. It is discouraged.
+#
@@ -411 +421,0 @@
-# defaults to the empty \String, <tt>''</tt>;
@@ -418,0 +429,5 @@
+# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a
+# hash are sorted when generating the output; defaults to <tt>false</tt>.
+# When +true+, keys are sorted lexicographically. When a \Proc, it receives
+# the entire \Hash and must return a \Hash with its pairs in the desired
+# order, allowing for arbitrary sort orders.
lib/json/common.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json/common.rb 2026-08-10 02:34:52.870204128 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json/common.rb 2026-08-10 02:34:53.008204937 +0000
@@ -157,0 +158,9 @@
+
+ # The default proc used when the +sort_keys+ generation option is +true+.
+ # It returns a new hash with the entries sorted by their keys.
+ sort_keys_proc = ->(hash) { hash.sort.to_h }
+ if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda)
+ sort_keys_proc = Ractor.shareable_lambda(&sort_keys_proc)
+ end
+ generator::State.default_sort_keys_proc = sort_keys_proc
+
lib/json/ext.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json/ext.rb 2026-08-10 02:34:52.870204128 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json/ext.rb 2026-08-10 02:34:53.008204937 +0000
@@ -43,0 +44,26 @@
+ if defined?(ResumableParser) # Not yet available on JRuby
+ class ResumableParser
+ # Returns whether the parser is entirely done: no unconsumed bytes in
+ # the buffer, no document under construction and no parsed value
+ # awaiting retrieval.
+ #
+ # The main use case is detecting a truncated stream once the input is
+ # exhausted:
+ #
+ # loop do
+ # begin
+ # parser << socket.readpartial(4096)
+ # rescue EOFError
+ # break
+ # end
+ # while parser.parse
+ # process(parser.value)
+ # end
+ # end
+ # warn "stream was truncated" unless parser.empty?
+ def empty?
+ eos? && !partial_value? && !value?
+ end
+ end
+ end
+
lib/json/ext/generator/state.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json/ext/generator/state.rb 2026-08-10 02:34:52.871204134 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json/ext/generator/state.rb 2026-08-10 02:34:53.008204937 +0000
@@ -56,0 +57 @@
+ sort_keys: sort_keys
lib/json/truffle_ruby/generator.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json/truffle_ruby/generator.rb 2026-08-10 02:34:52.872204140 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json/truffle_ruby/generator.rb 2026-08-10 02:34:53.009204943 +0000
@@ -113,0 +114,2 @@
+ singleton_class.attr_accessor :default_sort_keys_proc # :nodoc:
+
@@ -166,0 +169 @@
+ @sort_keys = false
@@ -201,0 +205,27 @@
+ # Controls key sorting in the generated JSON. If set to +true+, object
+ # keys are sorted by key lexicographically. If set to a Proc, it
+ # receives the entire Hash and must return a Hash with its pairs in the
+ # desired order.
+ attr_reader :sort_keys
+
+ def sort_keys=(value) # :nodoc:
+ type_error = false
+ @sort_keys = case value
+ when Proc
+ value
+ when true
+ State.default_sort_keys_proc
+ when nil, false
+ false
+ else
+ type_error = true
+ false
+ end
+
+ if type_error
+ raise TypeError, "The `sort_keys` argument must be a boolean or a Proc"
+ end
+
+ @sort_keys
+ end
+
@@ -287,0 +318 @@
+ self.sort_keys = opts[:sort_keys] if opts.key?(:sort_keys)
@@ -352 +383 @@
- !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj)
+ !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys
@@ -354,0 +386,4 @@
+ if @sort_keys
+ obj = @sort_keys.call(obj)
+ end
+
lib/json/version.rb
--- /tmp/d20260810-469-d15bjw/json-2.20.0/lib/json/version.rb 2026-08-10 02:34:52.872204140 +0000
+++ /tmp/d20260810-469-d15bjw/json-2.21.2/lib/json/version.rb 2026-08-10 02:34:53.009204943 +0000
@@ -4 +4 @@
- VERSION = '2.20.0'
+ VERSION = '2.21.2' |
Contributor
gem compare --diff json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/CHANGES.md 2026-08-10 02:35:01.180534891 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/CHANGES.md 2026-08-10 02:35:01.189534913 +0000
@@ -4,0 +5,16 @@
+### 2026-07-31 (2.21.2)
+
+* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc].
+
+### 2026-07-13 (2.21.1)
+
+* Fix a compilation issue on Window and Microsoft Visual C++.
+
+### 2026-07-12 (2.21.0)
+
+* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block.
+* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`.
+* Numerous correctness and performance fixes for `JSON::ResumableParser`.
+* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers.
+* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`.
+
README.md
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/README.md 2026-08-10 02:35:01.180534891 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/README.md 2026-08-10 02:35:01.190534916 +0000
@@ -88 +88 @@
-JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
+JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError)
@@ -120 +120 @@
-coder = JSON::Combining.new do |object, is_object_key|
+coder = JSON::Coder.new do |object, is_object_key|
@@ -123,2 +123,2 @@
- if !string.valid_encoding? || string.encoding != Encoding::UTF_8
- Base64.encode64(string)
+ if !object.valid_encoding? || object.encoding != Encoding::UTF_8
+ Base64.encode64(object)
@@ -126 +126 @@
- string
+ object
ext/json/ext/generator/generator.c
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/ext/json/ext/generator/generator.c 2026-08-10 02:35:01.181534893 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/ext/json/ext/generator/generator.c 2026-08-10 02:35:01.191534918 +0000
@@ -36,0 +37 @@
+ VALUE sort_keys;
@@ -39 +40 @@
-static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8;
+static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc;
@@ -43 +44 @@
- sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json;
+ sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json, sym_sort_keys;
@@ -711,0 +713 @@
+ rb_gc_mark_movable(state->sort_keys);
@@ -722,0 +725 @@
+ state->sort_keys = rb_gc_location(state->sort_keys);
@@ -742 +745 @@
- .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -771,0 +775 @@
+ RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys);
@@ -1052,0 +1057,5 @@
+ if (RB_UNLIKELY(data->state->sort_keys)) {
+ obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil);
+ Check_Type(obj, T_HASH);
+ }
+
@@ -1378,0 +1388 @@
+ RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys);
@@ -1724,0 +1735,49 @@
+static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc)
+{
+ if (!rb_obj_is_proc(proc)) {
+ rb_raise(rb_eTypeError, "sort_key_proc must be a Proc");
+ }
+ return default_sort_keys_proc = proc;
+}
+
+static VALUE normalize_sort_keys(VALUE value)
+{
+ if (rb_obj_is_proc(value)) {
+ return value;
+ } else if (value == Qtrue) {
+ return default_sort_keys_proc;
+ } else if (RTEST(value)) {
+ rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc");
+ } else {
+ return Qfalse;
+ }
+}
+
+/*
+ * call-seq: sort_keys
+ *
+ * Get the value of sort_keys.
+ */
+static VALUE cState_sort_keys_p(VALUE self)
+{
+ GET_STATE(self);
+ return state->sort_keys;
+}
+
+/*
+ * call-seq: sort_keys=(value)
+ *
+ * value is a boolean or a proc. If the value is the boolean true, object keys
+ * will be sorted lexicographically in ascending order.
+ *
+ * If the value is a proc, it receives the entire Hash and must return a Hash
+ * with its pairs in the desired order, allowing for arbitrary sorting.
+ */
+static VALUE cState_sort_keys_set(VALUE self, VALUE value)
+{
+ rb_check_frozen(self);
+ GET_STATE(self);
+ RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value));
+ return Qnil;
+}
+
@@ -1834,0 +1894,3 @@
+ else if (key == sym_sort_keys) {
+ state_write_value(data, &state->sort_keys, normalize_sort_keys(val));
+ }
@@ -1911,0 +1974,2 @@
+ rb_global_variable(&default_sort_keys_proc);
+
@@ -1920,0 +1985,2 @@
+ rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1);
+
@@ -1959,0 +2026,2 @@
+ rb_define_method(cState, "sort_keys", cState_sort_keys_p, 0);
+ rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1);
@@ -1988,0 +2057 @@
+ sym_sort_keys = ID2SYM(rb_intern("sort_keys"));
ext/json/ext/json.h
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/ext/json/ext/json.h 2026-08-10 02:35:01.181534893 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/ext/json/ext/json.h 2026-08-10 02:35:01.191534918 +0000
@@ -33,0 +34,4 @@
+#ifndef RUBY_TYPED_THREAD_SAFE_FREE
+#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY
+#endif
+
ext/json/ext/parser/extconf.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:01.181534893 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:01.299535186 +0000
@@ -18,16 +17,0 @@
-def have_builtin_func(name, check_expr, opt = "", &b)
- checking_for checking_message(name.funcall_style, nil, opt) do
- if try_compile(<<SRC, opt, &b)
-int foo;
-int main() { #{check_expr}; return 0; }
-SRC
- $defs.push(format("-DHAVE_BUILTIN_%s", name.tr_cpp))
- true
- else
- false
- end
- end
-end
-
-have_builtin_func("__builtin_clzll", "__builtin_clzll(0)")
-
@@ -47,0 +32,6 @@
+
+# Disable function outlining on clang to prevent some of the repeated instructions
+# in json_eat_whitespace being outlined into function calls.
+# Note: This verifies '-mno-outline' is accepted as a valid compiler flag
+# and will not pass it if unsupported.
+append_cflags("-mno-outline")
ext/json/ext/parser/parser.c
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/ext/json/ext/parser/parser.c 2026-08-10 02:35:01.182534896 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/ext/json/ext/parser/parser.c 2026-08-10 02:35:01.300535188 +0000
@@ -8 +8,4 @@
-static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
+static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column;
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
+static ID i_uminus;
+#endif
@@ -317 +320 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -514 +517 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
@@ -588,0 +592,2 @@
+ JSON_ASSERT(!state->parser);
+ JSON_ASSERT(state->cursor);
@@ -621,4 +626,8 @@
- long line, column;
- cursor_position(state, &line, &column);
-
- VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ VALUE warning;
+ if (state->parser) { // line and columns can't be accurate in resumable
+ warning = rb_utf8_str_new_cstr(message);
+ } else {
+ long line, column;
+ cursor_position(state, &line, &column);
+ warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ }
@@ -768 +777 @@
-json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
+json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos)
@@ -774,0 +784,5 @@
+ // An incomplete comment suspends a resumable parse by rewinding the cursor
+ // and throwing. Callers that already consumed a token not yet committed to
+ // the frame stack pass resume_pos so the rewind re-reads that token too.
+ // Non-resumable error positions keep pointing at the comment either way.
+ const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start;
@@ -779,2 +793,9 @@
- state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
- if (!state->cursor) {
+ const char *newline = memchr(state->cursor, '\n', state->end - state->cursor);
+ if (!newline) {
+ // state->parser marks resumable mode, where the buffer end is only a
+ // chunk boundary: the terminating newline may still arrive, so leave
+ // the comment unterminated instead of consuming to end as a one-shot
+ // parse would.
+ if (state->parser) {
+ raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos);
+ }
@@ -783 +804 @@
- state->cursor++;
+ state->cursor = newline + 1;
@@ -793 +814 @@
- raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos);
@@ -805 +826 @@
- raise_parse_error_at("unexpected token %s", state, start, eos(state));
+ raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state));
@@ -816 +837 @@
-json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos)
@@ -851 +872 @@
- json_eat_comments(state, config);
+ json_eat_comments(state, config, resume_pos);
@@ -859,0 +881,6 @@
+ALWAYS_INLINE(static) void
+json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+{
+ json_eat_whitespace_resume_at(state, config, include_comments, NULL);
+}
+
@@ -1132,0 +1160,7 @@
+ // If the value is so small that it definitely underflows to 0.0, return early
+ // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl.
+ // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2,
+ // so it rounds to 0 in IEEE 754 round-to-nearest.
+ if (RB_UNLIKELY(mantissa_digits + exponent < -324)) {
+ return rb_float_new(negative ? -0.0 : 0.0);
+ }
@@ -1432 +1466 @@
-static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
+static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable)
@@ -1488,0 +1523,10 @@
+ // A number touching the end of the buffer may still grow in a later chunk,
+ // so the caller will rewind and wait. Decoding it now would build a value
+ // -- for a long run of digits, an expensive bignum -- only to discard it,
+ // and repeating that on every resumed chunk is quadratic in the number's
+ // length. The digit scan above already advanced the cursor, which is all
+ // the caller needs to detect the incomplete number.
+ if (RB_UNLIKELY(resumable && eos(state))) {
+ return Qundef;
+ }
+
@@ -1565,0 +1610,7 @@
+ // A trailing comma lands us here expecting an element but finding the
+ // closing bracket; hand off to ARRAY_COMMA to close. An empty array
+ // closes inline at '[', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') {
+ goto JSON_PHASE_ARRAY_COMMA;
+ }
+
@@ -1606 +1657 @@
- value = json_parse_number(state, config, true, value_start);
+ value = json_parse_number(state, config, true, value_start, resumable);
@@ -1629 +1680 @@
- value = json_parse_number(state, config, false, value_start);
+ value = json_parse_number(state, config, false, value_start, resumable);
@@ -1661 +1712,3 @@
- json_eat_whitespace(state, config, true);
+ // The '[' is consumed but its frame is only pushed below, so a
+ // comment suspending here must resume from the bracket.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1690 +1743,2 @@
- json_eat_whitespace(state, config, true);
+ // Same as '[': the frame is only pushed below.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1747,0 +1802,7 @@
+ // A trailing comma lands us here expecting a key but finding the closing
+ // brace; hand off to OBJECT_COMMA to close. An empty object closes inline
+ // at '{', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && peek(state) == '}') {
+ goto JSON_PHASE_OBJECT_COMMA;
+ }
+
@@ -1810,7 +1871,4 @@
- if (config->allow_trailing_comma) {
- json_eat_whitespace(state, config, true);
- if (peek(state) == ']') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_ARRAY_COMMA;
- }
- }
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer.
@@ -1855,9 +1913,4 @@
- json_eat_whitespace(state, config, true);
-
- if (config->allow_trailing_comma) {
- if (peek(state) == '}') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_OBJECT_COMMA;
- }
- }
-
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer.
@@ -2183 +2236 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -2268 +2321 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -2521,0 +2575 @@
+ parser->state.start = parser->state.cursor = parser->state.end = 0;
@@ -2618 +2672,6 @@
- // Copy the value stack as we need to mutate it.
+ // Copy the value stack as we need to mutate it. The collapse loop folds each
+ // open container by popping its entries and pushing the single result, so a
+ // parent always reclaims its child's slot; head exceeds its live size by at
+ // most one, either for the missing-value placeholder pushed below or for the
+ // result of folding an empty innermost container. That one spare slot keeps
+ // rvalue_stack_push from growing (reallocating) this ALLOCV buffer.
@@ -2620,3 +2679,3 @@
- parser.value_stack.capa = (capa + missing_object_value);
- VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
- MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
+ parser.value_stack.capa = capa + 1;
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa);
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa);
@@ -2715 +2774 @@
- * call-seq: value? -> true or false
+ * call-seq: eos? -> true or false
@@ -2725,0 +2785,35 @@
+ * call-seq: partial_value? -> true or false
+ *
+ * Returns whether a document is currently under construction: an unclosed
+ * container, a key awaiting its value, etc.
+ *
+ * It answers the same question as <tt>!partial_value.nil?</tt>, but as a
+ * cheap predicate on the parser's internal state, without materializing the
+ * partially parsed Ruby objects:
+ * parser << '{"a":1,'
+ * parser.parse # => false
+ * parser.partial_value? # => true
+ *
+ * A fully parsed document whose value hasn't been retrieved yet is not under
+ * construction: #value? returns true and #partial_value? returns false.
+ */
+static VALUE cResumableParser_partial_value_p(VALUE self)
+{
+ JSON_ResumableParser *parser = cResumableParser_get(self);
+
+ // Mirror of #value?: values on the stack while the document isn't DONE
+ // belong to a partially built document. A container whose first key or
+ // element hasn't been parsed yet has no frame nor value registered (the
+ // tokenizer rewinds to the container start on EOS), so that state is
+ // observable through the buffer (#eos?/#rest) instead, keeping this
+ // predicate consistent with #partial_value returning nil.
+ if (parser->value_stack.head > 0) {
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
+ if (frame->phase != JSON_PHASE_DONE) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
@@ -2780,0 +2875 @@
+ rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0);
@@ -2814,0 +2910 @@
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
@@ -2815,0 +2912 @@
+#endif
lib/json.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json.rb 2026-08-10 02:35:01.185534903 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json.rb 2026-08-10 02:35:01.301535191 +0000
@@ -124 +124,3 @@
-# defaults to +100+; specify +false+ to disable depth checking.
+# defaults to +100+;
+# You can set it to +false+ to disable depth checking entirely, but that is dangerous
+# when parsing untrusted input.
@@ -126 +128 @@
-# With the default, +false+:
+# With the default, +100+:
@@ -386,0 +389,9 @@
+# With +false+:
+# obj = []
+# obj[0] = obj
+# # Raises SystemStackError: stack level too deep
+# JSON.generate(obj, max_nesting: false)
+#
+# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program
+# in an unrecoverable state. It is discouraged.
+#
@@ -411 +421,0 @@
-# defaults to the empty \String, <tt>''</tt>;
@@ -418,0 +429,5 @@
+# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a
+# hash are sorted when generating the output; defaults to <tt>false</tt>.
+# When +true+, keys are sorted lexicographically. When a \Proc, it receives
+# the entire \Hash and must return a \Hash with its pairs in the desired
+# order, allowing for arbitrary sort orders.
lib/json/common.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json/common.rb 2026-08-10 02:35:01.187534908 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json/common.rb 2026-08-10 02:35:01.302535193 +0000
@@ -157,0 +158,9 @@
+
+ # The default proc used when the +sort_keys+ generation option is +true+.
+ # It returns a new hash with the entries sorted by their keys.
+ sort_keys_proc = ->(hash) { hash.sort.to_h }
+ if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda)
+ sort_keys_proc = Ractor.shareable_lambda(&sort_keys_proc)
+ end
+ generator::State.default_sort_keys_proc = sort_keys_proc
+
lib/json/ext.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json/ext.rb 2026-08-10 02:35:01.188534911 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json/ext.rb 2026-08-10 02:35:01.302535193 +0000
@@ -43,0 +44,26 @@
+ if defined?(ResumableParser) # Not yet available on JRuby
+ class ResumableParser
+ # Returns whether the parser is entirely done: no unconsumed bytes in
+ # the buffer, no document under construction and no parsed value
+ # awaiting retrieval.
+ #
+ # The main use case is detecting a truncated stream once the input is
+ # exhausted:
+ #
+ # loop do
+ # begin
+ # parser << socket.readpartial(4096)
+ # rescue EOFError
+ # break
+ # end
+ # while parser.parse
+ # process(parser.value)
+ # end
+ # end
+ # warn "stream was truncated" unless parser.empty?
+ def empty?
+ eos? && !partial_value? && !value?
+ end
+ end
+ end
+
lib/json/ext/generator/state.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json/ext/generator/state.rb 2026-08-10 02:35:01.188534911 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json/ext/generator/state.rb 2026-08-10 02:35:01.303535196 +0000
@@ -56,0 +57 @@
+ sort_keys: sort_keys
lib/json/truffle_ruby/generator.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:01.189534913 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:01.303535196 +0000
@@ -113,0 +114,2 @@
+ singleton_class.attr_accessor :default_sort_keys_proc # :nodoc:
+
@@ -166,0 +169 @@
+ @sort_keys = false
@@ -201,0 +205,27 @@
+ # Controls key sorting in the generated JSON. If set to +true+, object
+ # keys are sorted by key lexicographically. If set to a Proc, it
+ # receives the entire Hash and must return a Hash with its pairs in the
+ # desired order.
+ attr_reader :sort_keys
+
+ def sort_keys=(value) # :nodoc:
+ type_error = false
+ @sort_keys = case value
+ when Proc
+ value
+ when true
+ State.default_sort_keys_proc
+ when nil, false
+ false
+ else
+ type_error = true
+ false
+ end
+
+ if type_error
+ raise TypeError, "The `sort_keys` argument must be a boolean or a Proc"
+ end
+
+ @sort_keys
+ end
+
@@ -287,0 +318 @@
+ self.sort_keys = opts[:sort_keys] if opts.key?(:sort_keys)
@@ -352 +383 @@
- !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj)
+ !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys
@@ -354,0 +386,4 @@
+ if @sort_keys
+ obj = @sort_keys.call(obj)
+ end
+
lib/json/version.rb
--- /tmp/d20260810-470-4ay2g6/json-2.20.0/lib/json/version.rb 2026-08-10 02:35:01.189534913 +0000
+++ /tmp/d20260810-470-4ay2g6/json-2.21.2/lib/json/version.rb 2026-08-10 02:35:01.303535196 +0000
@@ -4 +4 @@
- VERSION = '2.20.0'
+ VERSION = '2.21.2' |
Contributor
gem compare --diff json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md
--- /tmp/d20260810-461-6zikya/json-2.20.0/CHANGES.md 2026-08-10 02:35:06.545232444 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/CHANGES.md 2026-08-10 02:35:06.565232479 +0000
@@ -4,0 +5,16 @@
+### 2026-07-31 (2.21.2)
+
+* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc].
+
+### 2026-07-13 (2.21.1)
+
+* Fix a compilation issue on Window and Microsoft Visual C++.
+
+### 2026-07-12 (2.21.0)
+
+* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block.
+* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`.
+* Numerous correctness and performance fixes for `JSON::ResumableParser`.
+* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers.
+* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`.
+
README.md
--- /tmp/d20260810-461-6zikya/json-2.20.0/README.md 2026-08-10 02:35:06.546232446 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/README.md 2026-08-10 02:35:06.566232481 +0000
@@ -88 +88 @@
-JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
+JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError)
@@ -120 +120 @@
-coder = JSON::Combining.new do |object, is_object_key|
+coder = JSON::Coder.new do |object, is_object_key|
@@ -123,2 +123,2 @@
- if !string.valid_encoding? || string.encoding != Encoding::UTF_8
- Base64.encode64(string)
+ if !object.valid_encoding? || object.encoding != Encoding::UTF_8
+ Base64.encode64(object)
@@ -126 +126 @@
- string
+ object
ext/json/ext/generator/generator.c
--- /tmp/d20260810-461-6zikya/json-2.20.0/ext/json/ext/generator/generator.c 2026-08-10 02:35:06.549232451 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/ext/json/ext/generator/generator.c 2026-08-10 02:35:06.566232481 +0000
@@ -36,0 +37 @@
+ VALUE sort_keys;
@@ -39 +40 @@
-static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8;
+static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc;
@@ -43 +44 @@
- sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json;
+ sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json, sym_sort_keys;
@@ -711,0 +713 @@
+ rb_gc_mark_movable(state->sort_keys);
@@ -722,0 +725 @@
+ state->sort_keys = rb_gc_location(state->sort_keys);
@@ -742 +745 @@
- .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -771,0 +775 @@
+ RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys);
@@ -1052,0 +1057,5 @@
+ if (RB_UNLIKELY(data->state->sort_keys)) {
+ obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil);
+ Check_Type(obj, T_HASH);
+ }
+
@@ -1378,0 +1388 @@
+ RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys);
@@ -1724,0 +1735,49 @@
+static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc)
+{
+ if (!rb_obj_is_proc(proc)) {
+ rb_raise(rb_eTypeError, "sort_key_proc must be a Proc");
+ }
+ return default_sort_keys_proc = proc;
+}
+
+static VALUE normalize_sort_keys(VALUE value)
+{
+ if (rb_obj_is_proc(value)) {
+ return value;
+ } else if (value == Qtrue) {
+ return default_sort_keys_proc;
+ } else if (RTEST(value)) {
+ rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc");
+ } else {
+ return Qfalse;
+ }
+}
+
+/*
+ * call-seq: sort_keys
+ *
+ * Get the value of sort_keys.
+ */
+static VALUE cState_sort_keys_p(VALUE self)
+{
+ GET_STATE(self);
+ return state->sort_keys;
+}
+
+/*
+ * call-seq: sort_keys=(value)
+ *
+ * value is a boolean or a proc. If the value is the boolean true, object keys
+ * will be sorted lexicographically in ascending order.
+ *
+ * If the value is a proc, it receives the entire Hash and must return a Hash
+ * with its pairs in the desired order, allowing for arbitrary sorting.
+ */
+static VALUE cState_sort_keys_set(VALUE self, VALUE value)
+{
+ rb_check_frozen(self);
+ GET_STATE(self);
+ RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value));
+ return Qnil;
+}
+
@@ -1834,0 +1894,3 @@
+ else if (key == sym_sort_keys) {
+ state_write_value(data, &state->sort_keys, normalize_sort_keys(val));
+ }
@@ -1911,0 +1974,2 @@
+ rb_global_variable(&default_sort_keys_proc);
+
@@ -1920,0 +1985,2 @@
+ rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1);
+
@@ -1959,0 +2026,2 @@
+ rb_define_method(cState, "sort_keys", cState_sort_keys_p, 0);
+ rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1);
@@ -1988,0 +2057 @@
+ sym_sort_keys = ID2SYM(rb_intern("sort_keys"));
ext/json/ext/json.h
--- /tmp/d20260810-461-6zikya/json-2.20.0/ext/json/ext/json.h 2026-08-10 02:35:06.550232453 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/ext/json/ext/json.h 2026-08-10 02:35:06.567232482 +0000
@@ -33,0 +34,4 @@
+#ifndef RUBY_TYPED_THREAD_SAFE_FREE
+#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY
+#endif
+
ext/json/ext/parser/extconf.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:06.550232453 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:06.568232484 +0000
@@ -18,16 +17,0 @@
-def have_builtin_func(name, check_expr, opt = "", &b)
- checking_for checking_message(name.funcall_style, nil, opt) do
- if try_compile(<<SRC, opt, &b)
-int foo;
-int main() { #{check_expr}; return 0; }
-SRC
- $defs.push(format("-DHAVE_BUILTIN_%s", name.tr_cpp))
- true
- else
- false
- end
- end
-end
-
-have_builtin_func("__builtin_clzll", "__builtin_clzll(0)")
-
@@ -47,0 +32,6 @@
+
+# Disable function outlining on clang to prevent some of the repeated instructions
+# in json_eat_whitespace being outlined into function calls.
+# Note: This verifies '-mno-outline' is accepted as a valid compiler flag
+# and will not pass it if unsupported.
+append_cflags("-mno-outline")
ext/json/ext/parser/parser.c
--- /tmp/d20260810-461-6zikya/json-2.20.0/ext/json/ext/parser/parser.c 2026-08-10 02:35:06.551232455 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/ext/json/ext/parser/parser.c 2026-08-10 02:35:06.708232726 +0000
@@ -8 +8,4 @@
-static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
+static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column;
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
+static ID i_uminus;
+#endif
@@ -317 +320 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -514 +517 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
@@ -588,0 +592,2 @@
+ JSON_ASSERT(!state->parser);
+ JSON_ASSERT(state->cursor);
@@ -621,4 +626,8 @@
- long line, column;
- cursor_position(state, &line, &column);
-
- VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ VALUE warning;
+ if (state->parser) { // line and columns can't be accurate in resumable
+ warning = rb_utf8_str_new_cstr(message);
+ } else {
+ long line, column;
+ cursor_position(state, &line, &column);
+ warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ }
@@ -768 +777 @@
-json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
+json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos)
@@ -774,0 +784,5 @@
+ // An incomplete comment suspends a resumable parse by rewinding the cursor
+ // and throwing. Callers that already consumed a token not yet committed to
+ // the frame stack pass resume_pos so the rewind re-reads that token too.
+ // Non-resumable error positions keep pointing at the comment either way.
+ const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start;
@@ -779,2 +793,9 @@
- state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
- if (!state->cursor) {
+ const char *newline = memchr(state->cursor, '\n', state->end - state->cursor);
+ if (!newline) {
+ // state->parser marks resumable mode, where the buffer end is only a
+ // chunk boundary: the terminating newline may still arrive, so leave
+ // the comment unterminated instead of consuming to end as a one-shot
+ // parse would.
+ if (state->parser) {
+ raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos);
+ }
@@ -783 +804 @@
- state->cursor++;
+ state->cursor = newline + 1;
@@ -793 +814 @@
- raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos);
@@ -805 +826 @@
- raise_parse_error_at("unexpected token %s", state, start, eos(state));
+ raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state));
@@ -816 +837 @@
-json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos)
@@ -851 +872 @@
- json_eat_comments(state, config);
+ json_eat_comments(state, config, resume_pos);
@@ -859,0 +881,6 @@
+ALWAYS_INLINE(static) void
+json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+{
+ json_eat_whitespace_resume_at(state, config, include_comments, NULL);
+}
+
@@ -1132,0 +1160,7 @@
+ // If the value is so small that it definitely underflows to 0.0, return early
+ // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl.
+ // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2,
+ // so it rounds to 0 in IEEE 754 round-to-nearest.
+ if (RB_UNLIKELY(mantissa_digits + exponent < -324)) {
+ return rb_float_new(negative ? -0.0 : 0.0);
+ }
@@ -1432 +1466 @@
-static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
+static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable)
@@ -1488,0 +1523,10 @@
+ // A number touching the end of the buffer may still grow in a later chunk,
+ // so the caller will rewind and wait. Decoding it now would build a value
+ // -- for a long run of digits, an expensive bignum -- only to discard it,
+ // and repeating that on every resumed chunk is quadratic in the number's
+ // length. The digit scan above already advanced the cursor, which is all
+ // the caller needs to detect the incomplete number.
+ if (RB_UNLIKELY(resumable && eos(state))) {
+ return Qundef;
+ }
+
@@ -1565,0 +1610,7 @@
+ // A trailing comma lands us here expecting an element but finding the
+ // closing bracket; hand off to ARRAY_COMMA to close. An empty array
+ // closes inline at '[', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') {
+ goto JSON_PHASE_ARRAY_COMMA;
+ }
+
@@ -1606 +1657 @@
- value = json_parse_number(state, config, true, value_start);
+ value = json_parse_number(state, config, true, value_start, resumable);
@@ -1629 +1680 @@
- value = json_parse_number(state, config, false, value_start);
+ value = json_parse_number(state, config, false, value_start, resumable);
@@ -1661 +1712,3 @@
- json_eat_whitespace(state, config, true);
+ // The '[' is consumed but its frame is only pushed below, so a
+ // comment suspending here must resume from the bracket.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1690 +1743,2 @@
- json_eat_whitespace(state, config, true);
+ // Same as '[': the frame is only pushed below.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1747,0 +1802,7 @@
+ // A trailing comma lands us here expecting a key but finding the closing
+ // brace; hand off to OBJECT_COMMA to close. An empty object closes inline
+ // at '{', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && peek(state) == '}') {
+ goto JSON_PHASE_OBJECT_COMMA;
+ }
+
@@ -1810,7 +1871,4 @@
- if (config->allow_trailing_comma) {
- json_eat_whitespace(state, config, true);
- if (peek(state) == ']') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_ARRAY_COMMA;
- }
- }
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer.
@@ -1855,9 +1913,4 @@
- json_eat_whitespace(state, config, true);
-
- if (config->allow_trailing_comma) {
- if (peek(state) == '}') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_OBJECT_COMMA;
- }
- }
-
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer.
@@ -2183 +2236 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -2268 +2321 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -2521,0 +2575 @@
+ parser->state.start = parser->state.cursor = parser->state.end = 0;
@@ -2618 +2672,6 @@
- // Copy the value stack as we need to mutate it.
+ // Copy the value stack as we need to mutate it. The collapse loop folds each
+ // open container by popping its entries and pushing the single result, so a
+ // parent always reclaims its child's slot; head exceeds its live size by at
+ // most one, either for the missing-value placeholder pushed below or for the
+ // result of folding an empty innermost container. That one spare slot keeps
+ // rvalue_stack_push from growing (reallocating) this ALLOCV buffer.
@@ -2620,3 +2679,3 @@
- parser.value_stack.capa = (capa + missing_object_value);
- VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
- MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
+ parser.value_stack.capa = capa + 1;
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa);
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa);
@@ -2715 +2774 @@
- * call-seq: value? -> true or false
+ * call-seq: eos? -> true or false
@@ -2725,0 +2785,35 @@
+ * call-seq: partial_value? -> true or false
+ *
+ * Returns whether a document is currently under construction: an unclosed
+ * container, a key awaiting its value, etc.
+ *
+ * It answers the same question as <tt>!partial_value.nil?</tt>, but as a
+ * cheap predicate on the parser's internal state, without materializing the
+ * partially parsed Ruby objects:
+ * parser << '{"a":1,'
+ * parser.parse # => false
+ * parser.partial_value? # => true
+ *
+ * A fully parsed document whose value hasn't been retrieved yet is not under
+ * construction: #value? returns true and #partial_value? returns false.
+ */
+static VALUE cResumableParser_partial_value_p(VALUE self)
+{
+ JSON_ResumableParser *parser = cResumableParser_get(self);
+
+ // Mirror of #value?: values on the stack while the document isn't DONE
+ // belong to a partially built document. A container whose first key or
+ // element hasn't been parsed yet has no frame nor value registered (the
+ // tokenizer rewinds to the container start on EOS), so that state is
+ // observable through the buffer (#eos?/#rest) instead, keeping this
+ // predicate consistent with #partial_value returning nil.
+ if (parser->value_stack.head > 0) {
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
+ if (frame->phase != JSON_PHASE_DONE) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
@@ -2780,0 +2875 @@
+ rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0);
@@ -2814,0 +2910 @@
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
@@ -2815,0 +2912 @@
+#endif
lib/json.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json.rb 2026-08-10 02:35:06.559232469 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json.rb 2026-08-10 02:35:06.710232730 +0000
@@ -124 +124,3 @@
-# defaults to +100+; specify +false+ to disable depth checking.
+# defaults to +100+;
+# You can set it to +false+ to disable depth checking entirely, but that is dangerous
+# when parsing untrusted input.
@@ -126 +128 @@
-# With the default, +false+:
+# With the default, +100+:
@@ -386,0 +389,9 @@
+# With +false+:
+# obj = []
+# obj[0] = obj
+# # Raises SystemStackError: stack level too deep
+# JSON.generate(obj, max_nesting: false)
+#
+# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program
+# in an unrecoverable state. It is discouraged.
+#
@@ -411 +421,0 @@
-# defaults to the empty \String, <tt>''</tt>;
@@ -418,0 +429,5 @@
+# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a
+# hash are sorted when generating the output; defaults to <tt>false</tt>.
+# When +true+, keys are sorted lexicographically. When a \Proc, it receives
+# the entire \Hash and must return a \Hash with its pairs in the desired
+# order, allowing for arbitrary sort orders.
lib/json/common.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json/common.rb 2026-08-10 02:35:06.562232474 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json/common.rb 2026-08-10 02:35:06.714232736 +0000
@@ -157,0 +158,9 @@
+
+ # The default proc used when the +sort_keys+ generation option is +true+.
+ # It returns a new hash with the entries sorted by their keys.
+ sort_keys_proc = ->(hash) { hash.sort.to_h }
+ if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda)
+ sort_keys_proc = Ractor.shareable_lambda(&sort_keys_proc)
+ end
+ generator::State.default_sort_keys_proc = sort_keys_proc
+
lib/json/ext.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json/ext.rb 2026-08-10 02:35:06.562232474 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json/ext.rb 2026-08-10 02:35:06.714232736 +0000
@@ -43,0 +44,26 @@
+ if defined?(ResumableParser) # Not yet available on JRuby
+ class ResumableParser
+ # Returns whether the parser is entirely done: no unconsumed bytes in
+ # the buffer, no document under construction and no parsed value
+ # awaiting retrieval.
+ #
+ # The main use case is detecting a truncated stream once the input is
+ # exhausted:
+ #
+ # loop do
+ # begin
+ # parser << socket.readpartial(4096)
+ # rescue EOFError
+ # break
+ # end
+ # while parser.parse
+ # process(parser.value)
+ # end
+ # end
+ # warn "stream was truncated" unless parser.empty?
+ def empty?
+ eos? && !partial_value? && !value?
+ end
+ end
+ end
+
lib/json/ext/generator/state.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json/ext/generator/state.rb 2026-08-10 02:35:06.563232475 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json/ext/generator/state.rb 2026-08-10 02:35:06.714232736 +0000
@@ -56,0 +57 @@
+ sort_keys: sort_keys
lib/json/truffle_ruby/generator.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:06.563232475 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:06.715232738 +0000
@@ -113,0 +114,2 @@
+ singleton_class.attr_accessor :default_sort_keys_proc # :nodoc:
+
@@ -166,0 +169 @@
+ @sort_keys = false
@@ -201,0 +205,27 @@
+ # Controls key sorting in the generated JSON. If set to +true+, object
+ # keys are sorted by key lexicographically. If set to a Proc, it
+ # receives the entire Hash and must return a Hash with its pairs in the
+ # desired order.
+ attr_reader :sort_keys
+
+ def sort_keys=(value) # :nodoc:
+ type_error = false
+ @sort_keys = case value
+ when Proc
+ value
+ when true
+ State.default_sort_keys_proc
+ when nil, false
+ false
+ else
+ type_error = true
+ false
+ end
+
+ if type_error
+ raise TypeError, "The `sort_keys` argument must be a boolean or a Proc"
+ end
+
+ @sort_keys
+ end
+
@@ -287,0 +318 @@
+ self.sort_keys = opts[:sort_keys] if opts.key?(:sort_keys)
@@ -352 +383 @@
- !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj)
+ !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys
@@ -354,0 +386,4 @@
+ if @sort_keys
+ obj = @sort_keys.call(obj)
+ end
+
lib/json/version.rb
--- /tmp/d20260810-461-6zikya/json-2.20.0/lib/json/version.rb 2026-08-10 02:35:06.563232475 +0000
+++ /tmp/d20260810-461-6zikya/json-2.21.2/lib/json/version.rb 2026-08-10 02:35:06.715232738 +0000
@@ -4 +4 @@
- VERSION = '2.20.0'
+ VERSION = '2.21.2' |
Contributor
gem compare language_server-protocol 3.17.0.5 3.17.0.6Compared versions: ["3.17.0.5", "3.17.0.6"]
DIFFERENT rubygems_version:
3.17.0.5: 3.6.8
3.17.0.6: 4.0.10
DIFFERENT version:
3.17.0.5: 3.17.0.5
3.17.0.6: 3.17.0.6
DIFFERENT files:
3.17.0.5->3.17.0.6:
* Added:
lib/language_server/protocol/constant/lsp_error_codes.rb +41/-0
lib/language_server/protocol/constant/trace_values.rb +20/-0
lib/language_server/protocol/interface/base_symbol_information.rb +68/-0
lib/language_server/protocol/interface/did_change_configuration_registration_options.rb +30/-0
lib/language_server/protocol/interface/document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/file_operation_client_capabilities.rb +95/-0
lib/language_server/protocol/interface/file_operation_options.rb +83/-0
lib/language_server/protocol/interface/general_client_capabilities.rb +91/-0
lib/language_server/protocol/interface/inline_value.rb +88/-0
lib/language_server/protocol/interface/markdown_client_capabilities.rb +59/-0
lib/language_server/protocol/interface/prepare_rename_result.rb +69/-0
lib/language_server/protocol/interface/resource_operation.rb +47/-0
lib/language_server/protocol/interface/text_document_filter.rb +69/-0
lib/language_server/protocol/interface/type_hierarchy_client_capabilities.rb +38/-0
lib/language_server/protocol/interface/window_client_capabilities.rb +63/-0
lib/language_server/protocol/interface/workspace_client_capabilities.rb +176/-0
lib/language_server/protocol/interface/workspace_document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/workspace_folders_initialize_params.rb +39/-0
sig/language_server/protocol/constant/code_action_kind.rbs +85/-0
sig/language_server/protocol/constant/code_action_trigger_kind.rbs +22/-0
sig/language_server/protocol/constant/completion_item_kind.rbs +36/-0
sig/language_server/protocol/constant/completion_item_tag.rbs +16/-0
sig/language_server/protocol/constant/completion_trigger_kind.rbs +26/-0
sig/language_server/protocol/constant/diagnostic_severity.rbs +24/-0
sig/language_server/protocol/constant/diagnostic_tag.rbs +24/-0
sig/language_server/protocol/constant/document_diagnostic_report_kind.rbs +21/-0
sig/language_server/protocol/constant/document_highlight_kind.rbs +23/-0
sig/language_server/protocol/constant/error_codes.rbs +73/-0
sig/language_server/protocol/constant/failure_handling_kind.rbs +30/-0
sig/language_server/protocol/constant/file_change_type.rbs +23/-0
sig/language_server/protocol/constant/file_operation_pattern_kind.rbs +20/-0
sig/language_server/protocol/constant/folding_range_kind.rbs +24/-0
sig/language_server/protocol/constant/initialize_error_codes.rbs +18/-0
sig/language_server/protocol/constant/inlay_hint_kind.rbs +19/-0
sig/language_server/protocol/constant/insert_text_format.rbs +25/-0
sig/language_server/protocol/constant/insert_text_mode.rbs +30/-0
sig/language_server/protocol/constant/lsp_error_codes.rbs +41/-0
sig/language_server/protocol/constant/markup_kind.rbs +23/-0
sig/language_server/protocol/constant/message_type.rbs +24/-0
sig/language_server/protocol/constant/moniker_kind.rbs +24/-0
sig/language_server/protocol/constant/notebook_cell_kind.rbs +19/-0
sig/language_server/protocol/constant/position_encoding_kind.rbs +32/-0
sig/language_server/protocol/constant/prepare_support_default_behavior.rbs +13/-0
sig/language_server/protocol/constant/resource_operation_kind.rbs +23/-0
sig/language_server/protocol/constant/semantic_token_modifiers.rbs +18/-0
sig/language_server/protocol/constant/semantic_token_types.rbs +35/-0
sig/language_server/protocol/constant/signature_help_trigger_kind.rbs +24/-0
sig/language_server/protocol/constant/symbol_kind.rbs +37/-0
sig/language_server/protocol/constant/symbol_tag.rbs +15/-0
sig/language_server/protocol/constant/text_document_save_reason.rbs +24/-0
sig/language_server/protocol/constant/text_document_sync_kind.rbs +27/-0
sig/language_server/protocol/constant/token_format.rbs +9/-0
sig/language_server/protocol/constant/trace_values.rbs +20/-0
sig/language_server/protocol/constant/uniqueness_level.rbs +31/-0
sig/language_server/protocol/constant/watch_kind.rbs +20/-0
sig/language_server/protocol/interface/annotated_text_edit.rbs +30/-0
sig/language_server/protocol/interface/apply_workspace_edit_params.rbs +25/-0
sig/language_server/protocol/interface/base_symbol_information.rbs +31/-0
sig/language_server/protocol/interface/call_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_item.rbs +46/-0
sig/language_server/protocol/interface/call_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/cancel_params.rbs +19/-0
sig/language_server/protocol/interface/change_annotation.rbs +30/-0
sig/language_server/protocol/interface/client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/code_action.rbs +46/-0
sig/language_server/protocol/interface/code_action_client_capabilities.rbs +40/-0
sig/language_server/protocol/interface/code_action_context.rbs +29/-0
sig/language_server/protocol/interface/code_action_options.rbs +28/-0
sig/language_server/protocol/interface/code_action_params.rbs +34/-0
sig/language_server/protocol/interface/code_action_registration_options.rbs +31/-0
sig/language_server/protocol/interface/code_description.rbs +24/-0
sig/language_server/protocol/interface/code_lens.rbs +32/-0
sig/language_server/protocol/interface/code_lens_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/code_lens_options.rbs +25/-0
sig/language_server/protocol/interface/code_lens_params.rbs +28/-0
sig/language_server/protocol/interface/code_lens_registration_options.rbs +28/-0
sig/language_server/protocol/interface/code_lens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/color.rbs +31/-0
sig/language_server/protocol/interface/color_information.rbs +25/-0
sig/language_server/protocol/interface/color_presentation.rbs +25/-0
sig/language_server/protocol/interface/color_presentation_params.rbs +34/-0
sig/language_server/protocol/interface/command.rbs +31/-0
sig/language_server/protocol/interface/completion_client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/completion_context.rbs +25/-0
sig/language_server/protocol/interface/completion_item.rbs +77/-0
sig/language_server/protocol/interface/completion_item_label_details.rbs +27/-0
sig/language_server/protocol/interface/completion_list.rbs +29/-0
sig/language_server/protocol/interface/completion_options.rbs +34/-0
sig/language_server/protocol/interface/completion_params.rbs +34/-0
sig/language_server/protocol/interface/completion_registration_options.rbs +37/-0
sig/language_server/protocol/interface/configuration_item.rbs +22/-0
sig/language_server/protocol/interface/configuration_params.rbs +22/-0
sig/language_server/protocol/interface/create_file.rbs +31/-0
sig/language_server/protocol/interface/create_file_options.rbs +25/-0
sig/language_server/protocol/interface/create_files_params.rbs +25/-0
sig/language_server/protocol/interface/declaration_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/declaration_options.rbs +19/-0
sig/language_server/protocol/interface/declaration_params.rbs +28/-0
sig/language_server/protocol/interface/declaration_registration_options.rbs +25/-0
sig/language_server/protocol/interface/definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/definition_options.rbs +22/-0
sig/language_server/protocol/interface/definition_params.rbs +31/-0
sig/language_server/protocol/interface/definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/delete_file.rbs +31/-0
sig/language_server/protocol/interface/delete_file_options.rbs +25/-0
sig/language_server/protocol/interface/delete_files_params.rbs +25/-0
sig/language_server/protocol/interface/diagnostic.rbs +47/-0
sig/language_server/protocol/interface/diagnostic_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_options.rbs +33/-0
sig/language_server/protocol/interface/diagnostic_registration_options.rbs +39/-0
sig/language_server/protocol/interface/diagnostic_related_information.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_server_cancellation_data.rbs +24/-0
sig/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/did_change_configuration_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/did_change_configuration_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_configuration_registration_options.rbs +19/-0
sig/language_server/protocol/interface/did_change_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_change_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/did_change_watched_files_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_registration_options.rbs +22/-0
sig/language_server/protocol/interface/did_change_workspace_folders_params.rbs +22/-0
sig/language_server/protocol/interface/did_close_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_close_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_open_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_open_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_save_notebook_document_params.rbs +24/-0
sig/language_server/protocol/interface/did_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/document_color_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/document_color_options.rbs +19/-0
sig/language_server/protocol/interface/document_color_params.rbs +28/-0
sig/language_server/protocol/interface/document_color_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_diagnostic_params.rbs +36/-0
sig/language_server/protocol/interface/document_diagnostic_report.rbs +37/-0
sig/language_server/protocol/interface/document_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/document_filter.rbs +34/-0
sig/language_server/protocol/interface/document_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_params.rbs +28/-0
sig/language_server/protocol/interface/document_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_highlight.rbs +27/-0
sig/language_server/protocol/interface/document_highlight_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_options.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_params.rbs +31/-0
sig/language_server/protocol/interface/document_highlight_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_link.rbs +32/-0
sig/language_server/protocol/interface/document_link_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/document_link_options.rbs +25/-0
sig/language_server/protocol/interface/document_link_params.rbs +28/-0
sig/language_server/protocol/interface/document_link_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_on_type_formatting_options.rbs +25/-0
sig/language_server/protocol/interface/document_on_type_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_on_type_formatting_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_range_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_range_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol.rbs +46/-0
sig/language_server/protocol/interface/document_symbol_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/document_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol_registration_options.rbs +28/-0
sig/language_server/protocol/interface/execute_command_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/execute_command_options.rbs +25/-0
sig/language_server/protocol/interface/execute_command_params.rbs +28/-0
sig/language_server/protocol/interface/execute_command_registration_options.rbs +25/-0
sig/language_server/protocol/interface/execution_summary.rbs +22/-0
sig/language_server/protocol/interface/file_create.rbs +24/-0
sig/language_server/protocol/interface/file_delete.rbs +24/-0
sig/language_server/protocol/interface/file_event.rbs +25/-0
sig/language_server/protocol/interface/file_operation_client_capabilities.rbs +45/-0
sig/language_server/protocol/interface/file_operation_filter.rbs +28/-0
sig/language_server/protocol/interface/file_operation_options.rbs +39/-0
sig/language_server/protocol/interface/file_operation_pattern.rbs +31/-0
sig/language_server/protocol/interface/file_operation_pattern_options.rbs +24/-0
sig/language_server/protocol/interface/file_operation_registration_options.rbs +24/-0
sig/language_server/protocol/interface/file_rename.rbs +27/-0
sig/language_server/protocol/interface/file_system_watcher.rbs +22/-0
sig/language_server/protocol/interface/folding_range.rbs +38/-0
sig/language_server/protocol/interface/folding_range_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/folding_range_options.rbs +19/-0
sig/language_server/protocol/interface/folding_range_params.rbs +28/-0
sig/language_server/protocol/interface/folding_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/formatting_options.rbs +34/-0
sig/language_server/protocol/interface/full_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/general_client_capabilities.rbs +33/-0
sig/language_server/protocol/interface/hover.rbs +25/-0
sig/language_server/protocol/interface/hover_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/hover_options.rbs +22/-0
sig/language_server/protocol/interface/hover_params.rbs +28/-0
sig/language_server/protocol/interface/hover_registration_options.rbs +25/-0
sig/language_server/protocol/interface/hover_result.rbs +19/-0
sig/language_server/protocol/interface/implementation_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/implementation_options.rbs +19/-0
sig/language_server/protocol/interface/implementation_params.rbs +28/-0
sig/language_server/protocol/interface/implementation_registration_options.rbs +25/-0
sig/language_server/protocol/interface/initialize_error.rbs +23/-0
sig/language_server/protocol/interface/initialize_params.rbs +46/-0
sig/language_server/protocol/interface/initialize_result.rbs +25/-0
sig/language_server/protocol/interface/initialized_params.rbs +16/-0
sig/language_server/protocol/interface/inlay_hint.rbs +45/-0
sig/language_server/protocol/interface/inlay_hint_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_label_part.rbs +34/-0
sig/language_server/protocol/interface/inlay_hint_options.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_registration_options.rbs +33/-0
sig/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value.rbs +40/-0
sig/language_server/protocol/interface/inline_value_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value_context.rbs +25/-0
sig/language_server/protocol/interface/inline_value_evaluatable_expression.rbs +29/-0
sig/language_server/protocol/interface/inline_value_options.rbs +24/-0
sig/language_server/protocol/interface/inline_value_params.rbs +33/-0
sig/language_server/protocol/interface/inline_value_registration_options.rbs +30/-0
sig/language_server/protocol/interface/inline_value_text.rbs +27/-0
sig/language_server/protocol/interface/inline_value_variable_lookup.rbs +32/-0
sig/language_server/protocol/interface/inline_value_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/insert_replace_edit.rbs +30/-0
sig/language_server/protocol/interface/linked_editing_range_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/linked_editing_range_options.rbs +19/-0
sig/language_server/protocol/interface/linked_editing_range_params.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_ranges.rbs +27/-0
sig/language_server/protocol/interface/location.rbs +26/-0
sig/language_server/protocol/interface/location_link.rbs +32/-0
sig/language_server/protocol/interface/log_message_params.rbs +25/-0
sig/language_server/protocol/interface/markdown_client_capabilities.rbs +30/-0
sig/language_server/protocol/interface/markup_content.rbs +46/-0
sig/language_server/protocol/interface/message.rbs +19/-0
sig/language_server/protocol/interface/message_action_item.rbs +19/-0
sig/language_server/protocol/interface/moniker.rbs +33/-0
sig/language_server/protocol/interface/moniker_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/moniker_options.rbs +19/-0
sig/language_server/protocol/interface/moniker_params.rbs +28/-0
sig/language_server/protocol/interface/moniker_registration_options.rbs +22/-0
sig/language_server/protocol/interface/notebook_cell.rbs +37/-0
sig/language_server/protocol/interface/notebook_cell_array_change.rbs +31/-0
sig/language_server/protocol/interface/notebook_cell_text_document_filter.rbs +28/-0
sig/language_server/protocol/interface/notebook_document.rbs +36/-0
sig/language_server/protocol/interface/notebook_document_change_event.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_filter.rbs +32/-0
sig/language_server/protocol/interface/notebook_document_identifier.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_sync_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_sync_options.rbs +37/-0
sig/language_server/protocol/interface/notebook_document_sync_registration_options.rbs +30/-0
sig/language_server/protocol/interface/notification_message.rbs +25/-0
sig/language_server/protocol/interface/optional_versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/parameter_information.rbs +26/-0
sig/language_server/protocol/interface/partial_result_params.rbs +19/-0
sig/language_server/protocol/interface/position.rbs +51/-0
sig/language_server/protocol/interface/prepare_rename_params.rbs +25/-0
sig/language_server/protocol/interface/prepare_rename_result.rbs +31/-0
sig/language_server/protocol/interface/previous_result_id.rbs +27/-0
sig/language_server/protocol/interface/progress_params.rbs +22/-0
sig/language_server/protocol/interface/publish_diagnostics_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/publish_diagnostics_params.rbs +28/-0
sig/language_server/protocol/interface/range.rbs +35/-0
sig/language_server/protocol/interface/reference_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/reference_context.rbs +23/-0
sig/language_server/protocol/interface/reference_options.rbs +22/-0
sig/language_server/protocol/interface/reference_params.rbs +34/-0
sig/language_server/protocol/interface/reference_registration_options.rbs +25/-0
sig/language_server/protocol/interface/registration.rbs +28/-0
sig/language_server/protocol/interface/registration_params.rbs +19/-0
sig/language_server/protocol/interface/regular_expressions_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/related_full_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/relative_pattern.rbs +29/-0
sig/language_server/protocol/interface/rename_file.rbs +34/-0
sig/language_server/protocol/interface/rename_file_options.rbs +25/-0
sig/language_server/protocol/interface/rename_files_params.rbs +25/-0
sig/language_server/protocol/interface/rename_options.rbs +25/-0
sig/language_server/protocol/interface/rename_params.rbs +31/-0
sig/language_server/protocol/interface/rename_registration_options.rbs +28/-0
sig/language_server/protocol/interface/request_message.rbs +28/-0
sig/language_server/protocol/interface/resource_operation.rbs +25/-0
sig/language_server/protocol/interface/response_error.rbs +25/-0
sig/language_server/protocol/interface/response_message.rbs +28/-0
sig/language_server/protocol/interface/save_options.rbs +22/-0
sig/language_server/protocol/interface/selection_range.rbs +26/-0
sig/language_server/protocol/interface/selection_range_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/selection_range_options.rbs +19/-0
sig/language_server/protocol/interface/selection_range_params.rbs +31/-0
sig/language_server/protocol/interface/selection_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_client_capabilities.rbs +46/-0
sig/language_server/protocol/interface/semantic_tokens_delta.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_delta_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_delta_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_edit.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_legend.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_options.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_params.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_range_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_registration_options.rbs +37/-0
sig/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/server_capabilities.rbs +125/-0
sig/language_server/protocol/interface/set_trace_params.rbs +19/-0
sig/language_server/protocol/interface/show_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/show_document_params.rbs +33/-0
sig/language_server/protocol/interface/show_document_result.rbs +24/-0
sig/language_server/protocol/interface/show_message_params.rbs +25/-0
sig/language_server/protocol/interface/show_message_request_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/show_message_request_params.rbs +25/-0
sig/language_server/protocol/interface/signature_help.rbs +30/-0
sig/language_server/protocol/interface/signature_help_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/signature_help_context.rbs +33/-0
sig/language_server/protocol/interface/signature_help_options.rbs +28/-0
sig/language_server/protocol/interface/signature_help_params.rbs +31/-0
sig/language_server/protocol/interface/signature_help_registration_options.rbs +31/-0
sig/language_server/protocol/interface/signature_information.rbs +33/-0
sig/language_server/protocol/interface/static_registration_options.rbs +23/-0
sig/language_server/protocol/interface/symbol_information.rbs +38/-0
sig/language_server/protocol/interface/text_document_change_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_client_capabilities.rbs +109/-0
sig/language_server/protocol/interface/text_document_content_change_event.rbs +29/-0
sig/language_server/protocol/interface/text_document_edit.rbs +28/-0
sig/language_server/protocol/interface/text_document_filter.rbs +43/-0
sig/language_server/protocol/interface/text_document_identifier.rbs +22/-0
sig/language_server/protocol/interface/text_document_item.rbs +32/-0
sig/language_server/protocol/interface/text_document_position_params.rbs +26/-0
sig/language_server/protocol/interface/text_document_registration_options.rbs +22/-0
sig/language_server/protocol/interface/text_document_save_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_sync_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/text_document_sync_options.rbs +31/-0
sig/language_server/protocol/interface/text_edit.rbs +25/-0
sig/language_server/protocol/interface/type_definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/type_definition_options.rbs +19/-0
sig/language_server/protocol/interface/type_definition_params.rbs +28/-0
sig/language_server/protocol/interface/type_definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/type_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/type_hierarchy_item.rbs +43/-0
sig/language_server/protocol/interface/type_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/type_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_subtypes_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_supertypes_params.rbs +30/-0
sig/language_server/protocol/interface/unchanged_document_diagnostic_report.rbs +28/-0
sig/language_server/protocol/interface/unregistration.rbs +25/-0
sig/language_server/protocol/interface/unregistration_params.rbs +19/-0
sig/language_server/protocol/interface/versioned_notebook_document_identifier.rbs +27/-0
sig/language_server/protocol/interface/versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/will_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/window_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/work_done_progress_begin.rbs +31/-0
sig/language_server/protocol/interface/work_done_progress_cancel_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_create_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_end.rbs +22/-0
sig/language_server/protocol/interface/work_done_progress_options.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_report.rbs +28/-0
sig/language_server/protocol/interface/workspace_client_capabilities.rbs +61/-0
sig/language_server/protocol/interface/workspace_diagnostic_params.rbs +33/-0
sig/language_server/protocol/interface/workspace_diagnostic_report.rbs +24/-0
sig/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/workspace_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_edit.rbs +39/-0
sig/language_server/protocol/interface/workspace_edit_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_folder.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_change_event.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_initialize_params.rbs +19/-0
sig/language_server/protocol/interface/workspace_folders_server_capabilities.rbs +22/-0
sig/language_server/protocol/interface/workspace_full_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_symbol.rbs +41/-0
sig/language_server/protocol/interface/workspace_symbol_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_symbol_params.rbs +28/-0
sig/language_server/protocol/interface/workspace_symbol_registration_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/transport/io/reader.rbs +18/-0
sig/language_server/protocol/transport/io/writer.rbs +18/-0
sig/language_server/protocol/transport/stdio/reader.rbs +11/-0
sig/language_server/protocol/transport/stdio/writer.rbs +11/-0
sig/language_server/protocol/version.rbs +5/-0
* Changed:
lib/language_server/protocol/constant.rb +4/-0
lib/language_server/protocol/constant/initialize_error_codes.rb +2/-0
lib/language_server/protocol/interface.rb +32/-4
lib/language_server/protocol/interface/annotated_text_edit.rb +12/-10
lib/language_server/protocol/interface/apply_workspace_edit_params.rb +3/-0
lib/language_server/protocol/interface/apply_workspace_edit_result.rb +9/-5
lib/language_server/protocol/interface/call_hierarchy_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/call_hierarchy_incoming_call.rb +6/-1
lib/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_item.rb +12/-8
lib/language_server/protocol/interface/call_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_outgoing_call.rb +8/-2
lib/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/cancel_params.rb +1/-1
lib/language_server/protocol/interface/change_annotation.rb +2/-0
lib/language_server/protocol/interface/client_capabilities.rb +10/-3
lib/language_server/protocol/interface/code_action.rb +23/-21
lib/language_server/protocol/interface/code_action_client_capabilities.rb +19/-3
lib/language_server/protocol/interface/code_action_context.rb +10/-9
lib/language_server/protocol/interface/code_action_options.rb +15/-10
lib/language_server/protocol/interface/code_action_params.rb +21/-21
lib/language_server/protocol/interface/code_action_registration_options.rb +18/-13
lib/language_server/protocol/interface/code_description.rb +3/-1
lib/language_server/protocol/interface/code_lens.rb +6/-7
lib/language_server/protocol/interface/code_lens_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/code_lens_options.rb +10/-7
lib/language_server/protocol/interface/code_lens_params.rb +15/-12
lib/language_server/protocol/interface/code_lens_registration_options.rb +13/-10
lib/language_server/protocol/interface/code_lens_workspace_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/color.rb +4/-4
lib/language_server/protocol/interface/color_information.rb +3/-0
lib/language_server/protocol/interface/color_presentation.rb +7/-8
lib/language_server/protocol/interface/color_presentation_params.rb +24/-21
lib/language_server/protocol/interface/command.rb +6/-0
lib/language_server/protocol/interface/completion_client_capabilities.rb +20/-12
lib/language_server/protocol/interface/completion_context.rb +3/-5
lib/language_server/protocol/interface/completion_item.rb +45/-34
lib/language_server/protocol/interface/completion_item_label_details.rb +6/-6
lib/language_server/protocol/interface/completion_list.rb +5/-4
lib/language_server/protocol/interface/completion_options.rb +24/-24
lib/language_server/protocol/interface/completion_params.rb +16/-14
lib/language_server/protocol/interface/completion_registration_options.rb +30/-27
lib/language_server/protocol/interface/configuration_params.rb +3/-0
lib/language_server/protocol/interface/create_file.rb +5/-3
lib/language_server/protocol/interface/create_files_params.rb +4/-2
lib/language_server/protocol/interface/declaration_client_capabilities.rb +6/-3
lib/language_server/protocol/interface/declaration_params.rb +2/-2
lib/language_server/protocol/interface/declaration_registration_options.rb +3/-3
lib/language_server/protocol/interface/definition_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/definition_options.rb +3/-0
lib/language_server/protocol/interface/definition_params.rb +5/-2
lib/language_server/protocol/interface/definition_registration_options.rb +6/-3
lib/language_server/protocol/interface/delete_file.rb +4/-2
lib/language_server/protocol/interface/delete_files_params.rb +4/-2
lib/language_server/protocol/interface/diagnostic.rb +20/-9
lib/language_server/protocol/interface/diagnostic_client_capabilities.rb +5/-5
lib/language_server/protocol/interface/diagnostic_options.rb +9/-7
lib/language_server/protocol/interface/diagnostic_registration_options.rb +12/-10
lib/language_server/protocol/interface/diagnostic_related_information.rb +3/-3
lib/language_server/protocol/interface/diagnostic_server_cancellation_data.rb +2/-0
lib/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rb +5/-3
lib/language_server/protocol/interface/did_change_configuration_params.rb +3/-0
lib/language_server/protocol/interface/did_change_notebook_document_params.rb +14/-8
lib/language_server/protocol/interface/did_change_text_document_params.rb +12/-11
lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/did_change_watched_files_params.rb +3/-0
lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1/-1
lib/language_server/protocol/interface/did_change_workspace_folders_params.rb +3/-0
lib/language_server/protocol/interface/did_close_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_close_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_open_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_open_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_save_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_save_text_document_params.rb +3/-0
lib/language_server/protocol/interface/document_color_client_capabilities.rb +3/-1
lib/language_server/protocol/interface/document_color_params.rb +15/-12
lib/language_server/protocol/interface/document_color_registration_options.rb +10/-10
lib/language_server/protocol/interface/document_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/document_diagnostic_report_partial_result.rb +3/-1
lib/language_server/protocol/interface/document_filter.rb +27/-14
lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_highlight.rb +1/-1
lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_highlight_options.rb +3/-0
lib/language_server/protocol/interface/document_highlight_params.rb +5/-2
lib/language_server/protocol/interface/document_highlight_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_link.rb +7/-6
lib/language_server/protocol/interface/document_link_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/document_link_options.rb +10/-7
lib/language_server/protocol/interface/document_link_params.rb +15/-12
lib/language_server/protocol/interface/document_link_registration_options.rb +13/-10
lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_params.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/document_range_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_range_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_symbol.rb +14/-12
lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +8/-1
lib/language_server/protocol/interface/document_symbol_options.rb +12/-7
lib/language_server/protocol/interface/document_symbol_params.rb +15/-12
lib/language_server/protocol/interface/document_symbol_registration_options.rb +15/-10
lib/language_server/protocol/interface/execute_command_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/execute_command_options.rb +10/-7
lib/language_server/protocol/interface/execute_command_params.rb +13/-10
lib/language_server/protocol/interface/execute_command_registration_options.rb +8/-8
lib/language_server/protocol/interface/execution_summary.rb +1/-1
lib/language_server/protocol/interface/file_create.rb +2/-0
lib/language_server/protocol/interface/file_delete.rb +2/-0
lib/language_server/protocol/interface/file_event.rb +3/-3
lib/language_server/protocol/interface/file_operation_filter.rb +4/-2
lib/language_server/protocol/interface/file_operation_pattern.rb +6/-8
lib/language_server/protocol/interface/file_operation_pattern_options.rb +2/-0
lib/language_server/protocol/interface/file_operation_registration_options.rb +2/-0
lib/language_server/protocol/interface/file_rename.rb +2/-0
lib/language_server/protocol/interface/file_system_watcher.rb +4/-3
lib/language_server/protocol/interface/folding_range.rb +18/-22
lib/language_server/protocol/interface/folding_range_client_capabilities.rb +6/-2
lib/language_server/protocol/interface/folding_range_params.rb +15/-12
lib/language_server/protocol/interface/folding_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/formatting_options.rb +7/-1
lib/language_server/protocol/interface/full_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/hover.rb +2/-2
lib/language_server/protocol/interface/hover_client_capabilities.rb +2/-3
lib/language_server/protocol/interface/hover_options.rb +3/-0
lib/language_server/protocol/interface/hover_params.rb +3/-0
lib/language_server/protocol/interface/hover_registration_options.rb +6/-3
lib/language_server/protocol/interface/implementation_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/implementation_params.rb +2/-2
lib/language_server/protocol/interface/implementation_registration_options.rb +3/-3
lib/language_server/protocol/interface/initialize_error.rb +4/-0
lib/language_server/protocol/interface/initialize_params.rb +36/-24
lib/language_server/protocol/interface/initialize_result.rb +5/-0
lib/language_server/protocol/interface/inlay_hint.rb +2/-6
lib/language_server/protocol/interface/inlay_hint_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_label_part.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_options.rb +9/-7
lib/language_server/protocol/interface/inlay_hint_params.rb +13/-11
lib/language_server/protocol/interface/inlay_hint_registration_options.rb +12/-10
lib/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inline_value_client_capabilities.rb +3/-2
lib/language_server/protocol/interface/inline_value_context.rb +5/-3
lib/language_server/protocol/interface/inline_value_evaluatable_expression.rb +4/-6
lib/language_server/protocol/interface/inline_value_options.rb +2/-0
lib/language_server/protocol/interface/inline_value_params.rb +12/-10
lib/language_server/protocol/interface/inline_value_registration_options.rb +5/-3
lib/language_server/protocol/interface/inline_value_text.rb +2/-0
lib/language_server/protocol/interface/inline_value_variable_lookup.rb +4/-6
lib/language_server/protocol/interface/inline_value_workspace_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/insert_replace_edit.rb +2/-0
lib/language_server/protocol/interface/linked_editing_range_client_capabilities.rb +7/-3
lib/language_server/protocol/interface/linked_editing_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/linked_editing_ranges.rb +10/-6
lib/language_server/protocol/interface/location.rb +5/-1
lib/language_server/protocol/interface/location_link.rb +12/-10
lib/language_server/protocol/interface/log_message_params.rb +4/-1
lib/language_server/protocol/interface/log_trace_params.rb +0/-7
lib/language_server/protocol/interface/markup_content.rb +16/-18
lib/language_server/protocol/interface/moniker.rb +2/-0
lib/language_server/protocol/interface/moniker_client_capabilities.rb +8/-4
lib/language_server/protocol/interface/moniker_params.rb +2/-2
lib/language_server/protocol/interface/moniker_registration_options.rb +3/-3
lib/language_server/protocol/interface/notebook_cell.rb +6/-2
lib/language_server/protocol/interface/notebook_cell_array_change.rb +5/-3
lib/language_server/protocol/interface/notebook_cell_text_document_filter.rb +2/-0
lib/language_server/protocol/interface/notebook_document.rb +7/-3
lib/language_server/protocol/interface/notebook_document_change_event.rb +5/-1
lib/language_server/protocol/interface/notebook_document_client_capabilities.rb +4/-0
lib/language_server/protocol/interface/notebook_document_filter.rb +5/-26
lib/language_server/protocol/interface/notebook_document_identifier.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/notebook_document_sync_options.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_registration_options.rb +3/-1
lib/language_server/protocol/interface/optional_versioned_text_document_identifier.rb +17/-18
lib/language_server/protocol/interface/parameter_information.rb +6/-8
lib/language_server/protocol/interface/partial_result_params.rb +2/-2
lib/language_server/protocol/interface/position.rb +40/-6
lib/language_server/protocol/interface/previous_result_id.rb +4/-2
lib/language_server/protocol/interface/progress_params.rb +1/-1
lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +11/-0
lib/language_server/protocol/interface/publish_diagnostics_params.rb +8/-4
lib/language_server/protocol/interface/range.rb +13/-0
lib/language_server/protocol/interface/reference_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/reference_context.rb +4/-0
lib/language_server/protocol/interface/reference_options.rb +3/-0
lib/language_server/protocol/interface/reference_params.rb +12/-9
lib/language_server/protocol/interface/reference_registration_options.rb +6/-3
lib/language_server/protocol/interface/registration.rb +1/-1
lib/language_server/protocol/interface/regular_expressions_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/related_full_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/relative_pattern.rb +4/-2
lib/language_server/protocol/interface/rename_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/rename_file.rb +5/-3
lib/language_server/protocol/interface/rename_files_params.rb +6/-4
lib/language_server/protocol/interface/rename_options.rb +12/-7
lib/language_server/protocol/interface/rename_params.rb +16/-13
lib/language_server/protocol/interface/rename_registration_options.rb +15/-10
lib/language_server/protocol/interface/save_options.rb +3/-0
lib/language_server/protocol/interface/selection_range.rb +6/-3
lib/language_server/protocol/interface/selection_range_client_capabilities.rb +3/-4
lib/language_server/protocol/interface/selection_range_params.rb +23/-20
lib/language_server/protocol/interface/selection_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/semantic_tokens.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_client_capabilities.rb +14/-8
lib/language_server/protocol/interface/semantic_tokens_delta.rb +4/-2
lib/language_server/protocol/interface/semantic_tokens_delta_params.rb +24/-21
lib/language_server/protocol/interface/semantic_tokens_delta_partial_result.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_edit.rb +6/-3
lib/language_server/protocol/interface/semantic_tokens_legend.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_options.rb +11/-8
lib/language_server/protocol/interface/semantic_tokens_params.rb +15/-12
lib/language_server/protocol/interface/semantic_tokens_partial_result.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_range_params.rb +23/-20
lib/language_server/protocol/interface/semantic_tokens_registration_options.rb +14/-11
lib/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/server_capabilities.rb +59/-36
lib/language_server/protocol/interface/set_trace_params.rb +1/-4
lib/language_server/protocol/interface/show_document_client_capabilities.rb +4/-2
lib/language_server/protocol/interface/show_document_params.rb +6/-4
lib/language_server/protocol/interface/show_document_result.rb +3/-1
lib/language_server/protocol/interface/show_message_params.rb +4/-1
lib/language_server/protocol/interface/show_message_request_params.rb +1/-1
lib/language_server/protocol/interface/signature_help.rb +5/-6
lib/language_server/protocol/interface/signature_help_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/signature_help_context.rb +8/-9
lib/language_server/protocol/interface/signature_help_options.rb +15/-12
lib/language_server/protocol/interface/signature_help_params.rb +16/-12
lib/language_server/protocol/interface/signature_help_registration_options.rb +18/-15
lib/language_server/protocol/interface/signature_information.rb +3/-1
lib/language_server/protocol/interface/static_registration_options.rb +2/-1
lib/language_server/protocol/interface/symbol_information.rb +32/-28
lib/language_server/protocol/interface/text_document_change_registration_options.rb +12/-13
lib/language_server/protocol/interface/text_document_client_capabilities.rb +48/-19
lib/language_server/protocol/interface/text_document_content_change_event.rb +4/-2
lib/language_server/protocol/interface/text_document_edit.rb +10/-1
lib/language_server/protocol/interface/text_document_identifier.rb +5/-2
lib/language_server/protocol/interface/text_document_item.rb +7/-3
lib/language_server/protocol/interface/text_document_position_params.rb +4/-0
lib/language_server/protocol/interface/text_document_registration_options.rb +3/-3
lib/language_server/protocol/interface/text_document_save_registration_options.rb +6/-3
lib/language_server/protocol/interface/text_document_sync_options.rb +10/-14
lib/language_server/protocol/interface/text_edit.rb +3/-0
lib/language_server/protocol/interface/type_definition_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/type_definition_params.rb +2/-2
lib/language_server/protocol/interface/type_definition_registration_options.rb +3/-3
lib/language_server/protocol/interface/type_hierarchy_item.rb +6/-3
lib/language_server/protocol/interface/type_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/type_hierarchy_subtypes_params.rb +14/-9
lib/language_server/protocol/interface/type_hierarchy_supertypes_params.rb +14/-9
lib/language_server/protocol/interface/unchanged_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/unregistration.rb +2/-2
lib/language_server/protocol/interface/versioned_notebook_document_identifier.rb +5/-3
lib/language_server/protocol/interface/versioned_text_document_identifier.rb +13/-13
lib/language_server/protocol/interface/will_save_text_document_params.rb +1/-1
lib/language_server/protocol/interface/work_done_progress_begin.rb +4/-4
lib/language_server/protocol/interface/work_done_progress_report.rb +4/-5
lib/language_server/protocol/interface/workspace_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/workspace_diagnostic_report.rb +2/-0
lib/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rb +2/-0
lib/language_server/protocol/interface/workspace_edit.rb +28/-17
lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +10/-1
lib/language_server/protocol/interface/workspace_folder.rb +4/-1
lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +1/-1
lib/language_server/protocol/interface/workspace_full_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/interface/workspace_symbol.rb +33/-27
lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +10/-4
lib/language_server/protocol/interface/workspace_symbol_options.rb +12/-7
lib/language_server/protocol/interface/workspace_symbol_params.rb +14/-14
lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +12/-7
lib/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/version.rb +1/-1 |
Contributor
1 similar comment
Contributor
Contributor
gem compare language_server-protocol 3.17.0.5 3.17.0.6Compared versions: ["3.17.0.5", "3.17.0.6"]
DIFFERENT rubygems_version:
3.17.0.5: 3.6.8
3.17.0.6: 4.0.10
DIFFERENT version:
3.17.0.5: 3.17.0.5
3.17.0.6: 3.17.0.6
DIFFERENT files:
3.17.0.5->3.17.0.6:
* Added:
lib/language_server/protocol/constant/lsp_error_codes.rb +41/-0
lib/language_server/protocol/constant/trace_values.rb +20/-0
lib/language_server/protocol/interface/base_symbol_information.rb +68/-0
lib/language_server/protocol/interface/did_change_configuration_registration_options.rb +30/-0
lib/language_server/protocol/interface/document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/file_operation_client_capabilities.rb +95/-0
lib/language_server/protocol/interface/file_operation_options.rb +83/-0
lib/language_server/protocol/interface/general_client_capabilities.rb +91/-0
lib/language_server/protocol/interface/inline_value.rb +88/-0
lib/language_server/protocol/interface/markdown_client_capabilities.rb +59/-0
lib/language_server/protocol/interface/prepare_rename_result.rb +69/-0
lib/language_server/protocol/interface/resource_operation.rb +47/-0
lib/language_server/protocol/interface/text_document_filter.rb +69/-0
lib/language_server/protocol/interface/type_hierarchy_client_capabilities.rb +38/-0
lib/language_server/protocol/interface/window_client_capabilities.rb +63/-0
lib/language_server/protocol/interface/workspace_client_capabilities.rb +176/-0
lib/language_server/protocol/interface/workspace_document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/workspace_folders_initialize_params.rb +39/-0
sig/language_server/protocol/constant/code_action_kind.rbs +85/-0
sig/language_server/protocol/constant/code_action_trigger_kind.rbs +22/-0
sig/language_server/protocol/constant/completion_item_kind.rbs +36/-0
sig/language_server/protocol/constant/completion_item_tag.rbs +16/-0
sig/language_server/protocol/constant/completion_trigger_kind.rbs +26/-0
sig/language_server/protocol/constant/diagnostic_severity.rbs +24/-0
sig/language_server/protocol/constant/diagnostic_tag.rbs +24/-0
sig/language_server/protocol/constant/document_diagnostic_report_kind.rbs +21/-0
sig/language_server/protocol/constant/document_highlight_kind.rbs +23/-0
sig/language_server/protocol/constant/error_codes.rbs +73/-0
sig/language_server/protocol/constant/failure_handling_kind.rbs +30/-0
sig/language_server/protocol/constant/file_change_type.rbs +23/-0
sig/language_server/protocol/constant/file_operation_pattern_kind.rbs +20/-0
sig/language_server/protocol/constant/folding_range_kind.rbs +24/-0
sig/language_server/protocol/constant/initialize_error_codes.rbs +18/-0
sig/language_server/protocol/constant/inlay_hint_kind.rbs +19/-0
sig/language_server/protocol/constant/insert_text_format.rbs +25/-0
sig/language_server/protocol/constant/insert_text_mode.rbs +30/-0
sig/language_server/protocol/constant/lsp_error_codes.rbs +41/-0
sig/language_server/protocol/constant/markup_kind.rbs +23/-0
sig/language_server/protocol/constant/message_type.rbs +24/-0
sig/language_server/protocol/constant/moniker_kind.rbs +24/-0
sig/language_server/protocol/constant/notebook_cell_kind.rbs +19/-0
sig/language_server/protocol/constant/position_encoding_kind.rbs +32/-0
sig/language_server/protocol/constant/prepare_support_default_behavior.rbs +13/-0
sig/language_server/protocol/constant/resource_operation_kind.rbs +23/-0
sig/language_server/protocol/constant/semantic_token_modifiers.rbs +18/-0
sig/language_server/protocol/constant/semantic_token_types.rbs +35/-0
sig/language_server/protocol/constant/signature_help_trigger_kind.rbs +24/-0
sig/language_server/protocol/constant/symbol_kind.rbs +37/-0
sig/language_server/protocol/constant/symbol_tag.rbs +15/-0
sig/language_server/protocol/constant/text_document_save_reason.rbs +24/-0
sig/language_server/protocol/constant/text_document_sync_kind.rbs +27/-0
sig/language_server/protocol/constant/token_format.rbs +9/-0
sig/language_server/protocol/constant/trace_values.rbs +20/-0
sig/language_server/protocol/constant/uniqueness_level.rbs +31/-0
sig/language_server/protocol/constant/watch_kind.rbs +20/-0
sig/language_server/protocol/interface/annotated_text_edit.rbs +30/-0
sig/language_server/protocol/interface/apply_workspace_edit_params.rbs +25/-0
sig/language_server/protocol/interface/apply_workspace_edit_result.rbs +30/-0
sig/language_server/protocol/interface/base_symbol_information.rbs +31/-0
sig/language_server/protocol/interface/call_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_item.rbs +46/-0
sig/language_server/protocol/interface/call_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/cancel_params.rbs +19/-0
sig/language_server/protocol/interface/change_annotation.rbs +30/-0
sig/language_server/protocol/interface/client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/code_action.rbs +46/-0
sig/language_server/protocol/interface/code_action_client_capabilities.rbs +40/-0
sig/language_server/protocol/interface/code_action_context.rbs +29/-0
sig/language_server/protocol/interface/code_action_options.rbs +28/-0
sig/language_server/protocol/interface/code_action_params.rbs +34/-0
sig/language_server/protocol/interface/code_action_registration_options.rbs +31/-0
sig/language_server/protocol/interface/code_description.rbs +24/-0
sig/language_server/protocol/interface/code_lens.rbs +32/-0
sig/language_server/protocol/interface/code_lens_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/code_lens_options.rbs +25/-0
sig/language_server/protocol/interface/code_lens_params.rbs +28/-0
sig/language_server/protocol/interface/code_lens_registration_options.rbs +28/-0
sig/language_server/protocol/interface/code_lens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/color.rbs +31/-0
sig/language_server/protocol/interface/color_information.rbs +25/-0
sig/language_server/protocol/interface/color_presentation.rbs +25/-0
sig/language_server/protocol/interface/color_presentation_params.rbs +34/-0
sig/language_server/protocol/interface/command.rbs +31/-0
sig/language_server/protocol/interface/completion_client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/completion_context.rbs +25/-0
sig/language_server/protocol/interface/completion_item.rbs +77/-0
sig/language_server/protocol/interface/completion_item_label_details.rbs +27/-0
sig/language_server/protocol/interface/completion_list.rbs +29/-0
sig/language_server/protocol/interface/completion_options.rbs +34/-0
sig/language_server/protocol/interface/completion_params.rbs +34/-0
sig/language_server/protocol/interface/completion_registration_options.rbs +37/-0
sig/language_server/protocol/interface/configuration_item.rbs +22/-0
sig/language_server/protocol/interface/configuration_params.rbs +22/-0
sig/language_server/protocol/interface/create_file.rbs +31/-0
sig/language_server/protocol/interface/create_file_options.rbs +25/-0
sig/language_server/protocol/interface/create_files_params.rbs +25/-0
sig/language_server/protocol/interface/declaration_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/declaration_options.rbs +19/-0
sig/language_server/protocol/interface/declaration_params.rbs +28/-0
sig/language_server/protocol/interface/declaration_registration_options.rbs +25/-0
sig/language_server/protocol/interface/definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/definition_options.rbs +22/-0
sig/language_server/protocol/interface/definition_params.rbs +31/-0
sig/language_server/protocol/interface/definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/delete_file.rbs +31/-0
sig/language_server/protocol/interface/delete_file_options.rbs +25/-0
sig/language_server/protocol/interface/delete_files_params.rbs +25/-0
sig/language_server/protocol/interface/diagnostic.rbs +47/-0
sig/language_server/protocol/interface/diagnostic_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_options.rbs +33/-0
sig/language_server/protocol/interface/diagnostic_registration_options.rbs +39/-0
sig/language_server/protocol/interface/diagnostic_related_information.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_server_cancellation_data.rbs +24/-0
sig/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/did_change_configuration_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/did_change_configuration_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_configuration_registration_options.rbs +19/-0
sig/language_server/protocol/interface/did_change_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_change_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/did_change_watched_files_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_registration_options.rbs +22/-0
sig/language_server/protocol/interface/did_change_workspace_folders_params.rbs +22/-0
sig/language_server/protocol/interface/did_close_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_close_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_open_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_open_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_save_notebook_document_params.rbs +24/-0
sig/language_server/protocol/interface/did_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/document_color_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/document_color_params.rbs +28/-0
sig/language_server/protocol/interface/document_color_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_diagnostic_params.rbs +36/-0
sig/language_server/protocol/interface/document_diagnostic_report.rbs +37/-0
sig/language_server/protocol/interface/document_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/document_filter.rbs +34/-0
sig/language_server/protocol/interface/document_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_params.rbs +28/-0
sig/language_server/protocol/interface/document_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_highlight.rbs +27/-0
sig/language_server/protocol/interface/document_highlight_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_options.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_params.rbs +31/-0
sig/language_server/protocol/interface/document_highlight_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_link.rbs +32/-0
sig/language_server/protocol/interface/document_link_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/document_link_options.rbs +25/-0
sig/language_server/protocol/interface/document_link_params.rbs +28/-0
sig/language_server/protocol/interface/document_link_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_on_type_formatting_options.rbs +25/-0
sig/language_server/protocol/interface/document_on_type_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_on_type_formatting_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_range_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_range_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol.rbs +46/-0
sig/language_server/protocol/interface/document_symbol_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/document_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol_params.rbs +28/-0
sig/language_server/protocol/interface/document_symbol_registration_options.rbs +28/-0
sig/language_server/protocol/interface/execute_command_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/execute_command_options.rbs +25/-0
sig/language_server/protocol/interface/execute_command_params.rbs +28/-0
sig/language_server/protocol/interface/execute_command_registration_options.rbs +25/-0
sig/language_server/protocol/interface/execution_summary.rbs +22/-0
sig/language_server/protocol/interface/file_create.rbs +24/-0
sig/language_server/protocol/interface/file_delete.rbs +24/-0
sig/language_server/protocol/interface/file_event.rbs +25/-0
sig/language_server/protocol/interface/file_operation_client_capabilities.rbs +45/-0
sig/language_server/protocol/interface/file_operation_filter.rbs +28/-0
sig/language_server/protocol/interface/file_operation_options.rbs +39/-0
sig/language_server/protocol/interface/file_operation_pattern.rbs +31/-0
sig/language_server/protocol/interface/file_operation_pattern_options.rbs +24/-0
sig/language_server/protocol/interface/file_operation_registration_options.rbs +24/-0
sig/language_server/protocol/interface/file_rename.rbs +27/-0
sig/language_server/protocol/interface/file_system_watcher.rbs +22/-0
sig/language_server/protocol/interface/folding_range.rbs +38/-0
sig/language_server/protocol/interface/folding_range_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/folding_range_options.rbs +19/-0
sig/language_server/protocol/interface/folding_range_params.rbs +28/-0
sig/language_server/protocol/interface/folding_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/formatting_options.rbs +34/-0
sig/language_server/protocol/interface/full_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/general_client_capabilities.rbs +33/-0
sig/language_server/protocol/interface/hover.rbs +25/-0
sig/language_server/protocol/interface/hover_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/hover_options.rbs +22/-0
sig/language_server/protocol/interface/hover_params.rbs +28/-0
sig/language_server/protocol/interface/hover_registration_options.rbs +25/-0
sig/language_server/protocol/interface/hover_result.rbs +19/-0
sig/language_server/protocol/interface/implementation_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/implementation_options.rbs +19/-0
sig/language_server/protocol/interface/implementation_params.rbs +28/-0
sig/language_server/protocol/interface/implementation_registration_options.rbs +25/-0
sig/language_server/protocol/interface/initialize_error.rbs +23/-0
sig/language_server/protocol/interface/initialize_params.rbs +46/-0
sig/language_server/protocol/interface/initialize_result.rbs +25/-0
sig/language_server/protocol/interface/initialized_params.rbs +16/-0
sig/language_server/protocol/interface/inlay_hint.rbs +45/-0
sig/language_server/protocol/interface/inlay_hint_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_label_part.rbs +34/-0
sig/language_server/protocol/interface/inlay_hint_options.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_params.rbs +30/-0
sig/language_server/protocol/interface/inlay_hint_registration_options.rbs +33/-0
sig/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value.rbs +40/-0
sig/language_server/protocol/interface/inline_value_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value_context.rbs +25/-0
sig/language_server/protocol/interface/inline_value_evaluatable_expression.rbs +29/-0
sig/language_server/protocol/interface/inline_value_options.rbs +24/-0
sig/language_server/protocol/interface/inline_value_params.rbs +33/-0
sig/language_server/protocol/interface/inline_value_text.rbs +27/-0
sig/language_server/protocol/interface/inline_value_variable_lookup.rbs +32/-0
sig/language_server/protocol/interface/inline_value_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/insert_replace_edit.rbs +30/-0
sig/language_server/protocol/interface/linked_editing_range_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/linked_editing_range_options.rbs +19/-0
sig/language_server/protocol/interface/linked_editing_range_params.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_ranges.rbs +27/-0
sig/language_server/protocol/interface/location.rbs +26/-0
sig/language_server/protocol/interface/location_link.rbs +32/-0
sig/language_server/protocol/interface/log_trace_params.rbs +22/-0
sig/language_server/protocol/interface/markdown_client_capabilities.rbs +30/-0
sig/language_server/protocol/interface/markup_content.rbs +46/-0
sig/language_server/protocol/interface/message.rbs +19/-0
sig/language_server/protocol/interface/message_action_item.rbs +19/-0
sig/language_server/protocol/interface/moniker.rbs +33/-0
sig/language_server/protocol/interface/moniker_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/moniker_options.rbs +19/-0
sig/language_server/protocol/interface/moniker_params.rbs +28/-0
sig/language_server/protocol/interface/moniker_registration_options.rbs +22/-0
sig/language_server/protocol/interface/notebook_cell.rbs +37/-0
sig/language_server/protocol/interface/notebook_cell_array_change.rbs +31/-0
sig/language_server/protocol/interface/notebook_cell_text_document_filter.rbs +28/-0
sig/language_server/protocol/interface/notebook_document.rbs +36/-0
sig/language_server/protocol/interface/notebook_document_change_event.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_filter.rbs +32/-0
sig/language_server/protocol/interface/notebook_document_identifier.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_sync_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_sync_options.rbs +37/-0
sig/language_server/protocol/interface/notebook_document_sync_registration_options.rbs +30/-0
sig/language_server/protocol/interface/notification_message.rbs +25/-0
sig/language_server/protocol/interface/optional_versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/parameter_information.rbs +26/-0
sig/language_server/protocol/interface/partial_result_params.rbs +19/-0
sig/language_server/protocol/interface/position.rbs +51/-0
sig/language_server/protocol/interface/prepare_rename_params.rbs +25/-0
sig/language_server/protocol/interface/prepare_rename_result.rbs +31/-0
sig/language_server/protocol/interface/previous_result_id.rbs +27/-0
sig/language_server/protocol/interface/progress_params.rbs +22/-0
sig/language_server/protocol/interface/publish_diagnostics_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/publish_diagnostics_params.rbs +28/-0
sig/language_server/protocol/interface/range.rbs +35/-0
sig/language_server/protocol/interface/reference_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/reference_context.rbs +23/-0
sig/language_server/protocol/interface/reference_options.rbs +22/-0
sig/language_server/protocol/interface/reference_params.rbs +34/-0
sig/language_server/protocol/interface/reference_registration_options.rbs +25/-0
sig/language_server/protocol/interface/registration.rbs +28/-0
sig/language_server/protocol/interface/registration_params.rbs +19/-0
sig/language_server/protocol/interface/regular_expressions_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/related_full_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/relative_pattern.rbs +29/-0
sig/language_server/protocol/interface/rename_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/rename_file.rbs +34/-0
sig/language_server/protocol/interface/rename_file_options.rbs +25/-0
sig/language_server/protocol/interface/rename_files_params.rbs +25/-0
sig/language_server/protocol/interface/rename_options.rbs +25/-0
sig/language_server/protocol/interface/rename_params.rbs +31/-0
sig/language_server/protocol/interface/rename_registration_options.rbs +28/-0
sig/language_server/protocol/interface/request_message.rbs +28/-0
sig/language_server/protocol/interface/resource_operation.rbs +25/-0
sig/language_server/protocol/interface/response_error.rbs +25/-0
sig/language_server/protocol/interface/response_message.rbs +28/-0
sig/language_server/protocol/interface/save_options.rbs +22/-0
sig/language_server/protocol/interface/selection_range.rbs +26/-0
sig/language_server/protocol/interface/selection_range_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/selection_range_options.rbs +19/-0
sig/language_server/protocol/interface/selection_range_params.rbs +31/-0
sig/language_server/protocol/interface/selection_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_client_capabilities.rbs +46/-0
sig/language_server/protocol/interface/semantic_tokens_delta.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_delta_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_delta_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_edit.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_legend.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_options.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_params.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_range_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_registration_options.rbs +37/-0
sig/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/server_capabilities.rbs +125/-0
sig/language_server/protocol/interface/set_trace_params.rbs +19/-0
sig/language_server/protocol/interface/show_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/show_document_params.rbs +33/-0
sig/language_server/protocol/interface/show_document_result.rbs +24/-0
sig/language_server/protocol/interface/show_message_params.rbs +25/-0
sig/language_server/protocol/interface/show_message_request_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/show_message_request_params.rbs +25/-0
sig/language_server/protocol/interface/signature_help.rbs +30/-0
sig/language_server/protocol/interface/signature_help_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/signature_help_context.rbs +33/-0
sig/language_server/protocol/interface/signature_help_options.rbs +28/-0
sig/language_server/protocol/interface/signature_help_params.rbs +31/-0
sig/language_server/protocol/interface/signature_help_registration_options.rbs +31/-0
sig/language_server/protocol/interface/signature_information.rbs +33/-0
sig/language_server/protocol/interface/static_registration_options.rbs +23/-0
sig/language_server/protocol/interface/symbol_information.rbs +38/-0
sig/language_server/protocol/interface/text_document_change_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_client_capabilities.rbs +109/-0
sig/language_server/protocol/interface/text_document_content_change_event.rbs +29/-0
sig/language_server/protocol/interface/text_document_edit.rbs +28/-0
sig/language_server/protocol/interface/text_document_filter.rbs +43/-0
sig/language_server/protocol/interface/text_document_identifier.rbs +22/-0
sig/language_server/protocol/interface/text_document_item.rbs +32/-0
sig/language_server/protocol/interface/text_document_position_params.rbs +26/-0
sig/language_server/protocol/interface/text_document_registration_options.rbs +22/-0
sig/language_server/protocol/interface/text_document_save_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_sync_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/text_document_sync_options.rbs +31/-0
sig/language_server/protocol/interface/text_edit.rbs +25/-0
sig/language_server/protocol/interface/type_definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/type_definition_options.rbs +19/-0
sig/language_server/protocol/interface/type_definition_params.rbs +28/-0
sig/language_server/protocol/interface/type_definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/type_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/type_hierarchy_item.rbs +43/-0
sig/language_server/protocol/interface/type_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/type_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_subtypes_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_supertypes_params.rbs +30/-0
sig/language_server/protocol/interface/unchanged_document_diagnostic_report.rbs +28/-0
sig/language_server/protocol/interface/unregistration.rbs +25/-0
sig/language_server/protocol/interface/unregistration_params.rbs +19/-0
sig/language_server/protocol/interface/versioned_notebook_document_identifier.rbs +27/-0
sig/language_server/protocol/interface/versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/will_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/window_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/work_done_progress_begin.rbs +31/-0
sig/language_server/protocol/interface/work_done_progress_cancel_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_create_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_end.rbs +22/-0
sig/language_server/protocol/interface/work_done_progress_options.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_report.rbs +28/-0
sig/language_server/protocol/interface/workspace_client_capabilities.rbs +61/-0
sig/language_server/protocol/interface/workspace_diagnostic_params.rbs +33/-0
sig/language_server/protocol/interface/workspace_diagnostic_report.rbs +24/-0
sig/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/workspace_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_edit.rbs +39/-0
sig/language_server/protocol/interface/workspace_edit_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_folder.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_change_event.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_initialize_params.rbs +19/-0
sig/language_server/protocol/interface/workspace_folders_server_capabilities.rbs +22/-0
sig/language_server/protocol/interface/workspace_full_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_symbol.rbs +41/-0
sig/language_server/protocol/interface/workspace_symbol_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_symbol_params.rbs +28/-0
sig/language_server/protocol/interface/workspace_symbol_registration_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/transport/io/reader.rbs +18/-0
sig/language_server/protocol/transport/io/writer.rbs +18/-0
sig/language_server/protocol/transport/stdio/reader.rbs +11/-0
sig/language_server/protocol/transport/stdio/writer.rbs +11/-0
sig/language_server/protocol/version.rbs +5/-0
* Changed:
lib/language_server/protocol/constant.rb +4/-0
lib/language_server/protocol/constant/initialize_error_codes.rb +2/-0
lib/language_server/protocol/interface.rb +32/-4
lib/language_server/protocol/interface/annotated_text_edit.rb +12/-10
lib/language_server/protocol/interface/apply_workspace_edit_params.rb +3/-0
lib/language_server/protocol/interface/apply_workspace_edit_result.rb +9/-5
lib/language_server/protocol/interface/call_hierarchy_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/call_hierarchy_incoming_call.rb +6/-1
lib/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_item.rb +12/-8
lib/language_server/protocol/interface/call_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_outgoing_call.rb +8/-2
lib/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/cancel_params.rb +1/-1
lib/language_server/protocol/interface/change_annotation.rb +2/-0
lib/language_server/protocol/interface/client_capabilities.rb +10/-3
lib/language_server/protocol/interface/code_action.rb +23/-21
lib/language_server/protocol/interface/code_action_client_capabilities.rb +19/-3
lib/language_server/protocol/interface/code_action_context.rb +10/-9
lib/language_server/protocol/interface/code_action_options.rb +15/-10
lib/language_server/protocol/interface/code_action_params.rb +21/-21
lib/language_server/protocol/interface/code_action_registration_options.rb +18/-13
lib/language_server/protocol/interface/code_description.rb +3/-1
lib/language_server/protocol/interface/code_lens.rb +6/-7
lib/language_server/protocol/interface/code_lens_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/code_lens_options.rb +10/-7
lib/language_server/protocol/interface/code_lens_params.rb +15/-12
lib/language_server/protocol/interface/code_lens_registration_options.rb +13/-10
lib/language_server/protocol/interface/code_lens_workspace_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/color.rb +4/-4
lib/language_server/protocol/interface/color_information.rb +3/-0
lib/language_server/protocol/interface/color_presentation.rb +7/-8
lib/language_server/protocol/interface/color_presentation_params.rb +24/-21
lib/language_server/protocol/interface/command.rb +6/-0
lib/language_server/protocol/interface/completion_client_capabilities.rb +20/-12
lib/language_server/protocol/interface/completion_context.rb +3/-5
lib/language_server/protocol/interface/completion_item.rb +45/-34
lib/language_server/protocol/interface/completion_item_label_details.rb +6/-6
lib/language_server/protocol/interface/completion_list.rb +5/-4
lib/language_server/protocol/interface/completion_options.rb +24/-24
lib/language_server/protocol/interface/completion_params.rb +16/-14
lib/language_server/protocol/interface/completion_registration_options.rb +30/-27
lib/language_server/protocol/interface/configuration_params.rb +3/-0
lib/language_server/protocol/interface/create_file.rb +5/-3
lib/language_server/protocol/interface/create_files_params.rb +4/-2
lib/language_server/protocol/interface/declaration_client_capabilities.rb +6/-3
lib/language_server/protocol/interface/declaration_params.rb +2/-2
lib/language_server/protocol/interface/declaration_registration_options.rb +3/-3
lib/language_server/protocol/interface/definition_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/definition_options.rb +3/-0
lib/language_server/protocol/interface/definition_params.rb +5/-2
lib/language_server/protocol/interface/definition_registration_options.rb +6/-3
lib/language_server/protocol/interface/delete_file.rb +4/-2
lib/language_server/protocol/interface/delete_files_params.rb +4/-2
lib/language_server/protocol/interface/diagnostic.rb +20/-9
lib/language_server/protocol/interface/diagnostic_client_capabilities.rb +5/-5
lib/language_server/protocol/interface/diagnostic_options.rb +9/-7
lib/language_server/protocol/interface/diagnostic_registration_options.rb +12/-10
lib/language_server/protocol/interface/diagnostic_related_information.rb +3/-3
lib/language_server/protocol/interface/diagnostic_server_cancellation_data.rb +2/-0
lib/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rb +5/-3
lib/language_server/protocol/interface/did_change_configuration_params.rb +3/-0
lib/language_server/protocol/interface/did_change_notebook_document_params.rb +14/-8
lib/language_server/protocol/interface/did_change_text_document_params.rb +12/-11
lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/did_change_watched_files_params.rb +3/-0
lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1/-1
lib/language_server/protocol/interface/did_change_workspace_folders_params.rb +3/-0
lib/language_server/protocol/interface/did_close_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_close_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_open_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_open_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_save_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_save_text_document_params.rb +3/-0
lib/language_server/protocol/interface/document_color_client_capabilities.rb +3/-1
lib/language_server/protocol/interface/document_color_params.rb +15/-12
lib/language_server/protocol/interface/document_color_registration_options.rb +10/-10
lib/language_server/protocol/interface/document_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/document_diagnostic_report_partial_result.rb +3/-1
lib/language_server/protocol/interface/document_filter.rb +27/-14
lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_highlight.rb +1/-1
lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_highlight_options.rb +3/-0
lib/language_server/protocol/interface/document_highlight_params.rb +5/-2
lib/language_server/protocol/interface/document_highlight_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_link.rb +7/-6
lib/language_server/protocol/interface/document_link_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/document_link_options.rb +10/-7
lib/language_server/protocol/interface/document_link_params.rb +15/-12
lib/language_server/protocol/interface/document_link_registration_options.rb +13/-10
lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_params.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/document_range_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_range_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_symbol.rb +14/-12
lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +8/-1
lib/language_server/protocol/interface/document_symbol_options.rb +12/-7
lib/language_server/protocol/interface/document_symbol_params.rb +15/-12
lib/language_server/protocol/interface/document_symbol_registration_options.rb +15/-10
lib/language_server/protocol/interface/execute_command_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/execute_command_options.rb +10/-7
lib/language_server/protocol/interface/execute_command_params.rb +13/-10
lib/language_server/protocol/interface/execute_command_registration_options.rb +8/-8
lib/language_server/protocol/interface/execution_summary.rb +1/-1
lib/language_server/protocol/interface/file_create.rb +2/-0
lib/language_server/protocol/interface/file_delete.rb +2/-0
lib/language_server/protocol/interface/file_event.rb +3/-3
lib/language_server/protocol/interface/file_operation_filter.rb +4/-2
lib/language_server/protocol/interface/file_operation_pattern.rb +6/-8
lib/language_server/protocol/interface/file_operation_pattern_options.rb +2/-0
lib/language_server/protocol/interface/file_operation_registration_options.rb +2/-0
lib/language_server/protocol/interface/file_rename.rb +2/-0
lib/language_server/protocol/interface/file_system_watcher.rb +4/-3
lib/language_server/protocol/interface/folding_range.rb +18/-22
lib/language_server/protocol/interface/folding_range_client_capabilities.rb +6/-2
lib/language_server/protocol/interface/folding_range_params.rb +15/-12
lib/language_server/protocol/interface/folding_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/formatting_options.rb +7/-1
lib/language_server/protocol/interface/full_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/hover.rb +2/-2
lib/language_server/protocol/interface/hover_client_capabilities.rb +2/-3
lib/language_server/protocol/interface/hover_options.rb +3/-0
lib/language_server/protocol/interface/hover_params.rb +3/-0
lib/language_server/protocol/interface/hover_registration_options.rb +6/-3
lib/language_server/protocol/interface/implementation_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/implementation_params.rb +2/-2
lib/language_server/protocol/interface/implementation_registration_options.rb +3/-3
lib/language_server/protocol/interface/initialize_error.rb +4/-0
lib/language_server/protocol/interface/initialize_params.rb +36/-24
lib/language_server/protocol/interface/initialize_result.rb +5/-0
lib/language_server/protocol/interface/inlay_hint.rb +2/-6
lib/language_server/protocol/interface/inlay_hint_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_label_part.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_options.rb +9/-7
lib/language_server/protocol/interface/inlay_hint_params.rb +13/-11
lib/language_server/protocol/interface/inlay_hint_registration_options.rb +12/-10
lib/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inline_value_client_capabilities.rb +3/-2
lib/language_server/protocol/interface/inline_value_context.rb +5/-3
lib/language_server/protocol/interface/inline_value_evaluatable_expression.rb +4/-6
lib/language_server/protocol/interface/inline_value_options.rb +2/-0
lib/language_server/protocol/interface/inline_value_params.rb +12/-10
lib/language_server/protocol/interface/inline_value_registration_options.rb +5/-3
lib/language_server/protocol/interface/inline_value_text.rb +2/-0
lib/language_server/protocol/interface/inline_value_variable_lookup.rb +4/-6
lib/language_server/protocol/interface/inline_value_workspace_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/insert_replace_edit.rb +2/-0
lib/language_server/protocol/interface/linked_editing_range_client_capabilities.rb +7/-3
lib/language_server/protocol/interface/linked_editing_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/linked_editing_ranges.rb +10/-6
lib/language_server/protocol/interface/location.rb +5/-1
lib/language_server/protocol/interface/location_link.rb +12/-10
lib/language_server/protocol/interface/log_message_params.rb +4/-1
lib/language_server/protocol/interface/log_trace_params.rb +0/-7
lib/language_server/protocol/interface/markup_content.rb +16/-18
lib/language_server/protocol/interface/moniker.rb +2/-0
lib/language_server/protocol/interface/moniker_client_capabilities.rb +8/-4
lib/language_server/protocol/interface/moniker_params.rb +2/-2
lib/language_server/protocol/interface/moniker_registration_options.rb +3/-3
lib/language_server/protocol/interface/notebook_cell.rb +6/-2
lib/language_server/protocol/interface/notebook_cell_array_change.rb +5/-3
lib/language_server/protocol/interface/notebook_cell_text_document_filter.rb +2/-0
lib/language_server/protocol/interface/notebook_document.rb +7/-3
lib/language_server/protocol/interface/notebook_document_change_event.rb +5/-1
lib/language_server/protocol/interface/notebook_document_client_capabilities.rb +4/-0
lib/language_server/protocol/interface/notebook_document_filter.rb +5/-26
lib/language_server/protocol/interface/notebook_document_identifier.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/notebook_document_sync_options.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_registration_options.rb +3/-1
lib/language_server/protocol/interface/optional_versioned_text_document_identifier.rb +17/-18
lib/language_server/protocol/interface/parameter_information.rb +6/-8
lib/language_server/protocol/interface/partial_result_params.rb +2/-2
lib/language_server/protocol/interface/position.rb +40/-6
lib/language_server/protocol/interface/previous_result_id.rb +4/-2
lib/language_server/protocol/interface/progress_params.rb +1/-1
lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +11/-0
lib/language_server/protocol/interface/publish_diagnostics_params.rb +8/-4
lib/language_server/protocol/interface/range.rb +13/-0
lib/language_server/protocol/interface/reference_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/reference_context.rb +4/-0
lib/language_server/protocol/interface/reference_options.rb +3/-0
lib/language_server/protocol/interface/reference_params.rb +12/-9
lib/language_server/protocol/interface/reference_registration_options.rb +6/-3
lib/language_server/protocol/interface/registration.rb +1/-1
lib/language_server/protocol/interface/regular_expressions_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/related_full_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/relative_pattern.rb +4/-2
lib/language_server/protocol/interface/rename_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/rename_file.rb +5/-3
lib/language_server/protocol/interface/rename_files_params.rb +6/-4
lib/language_server/protocol/interface/rename_options.rb +12/-7
lib/language_server/protocol/interface/rename_params.rb +16/-13
lib/language_server/protocol/interface/rename_registration_options.rb +15/-10
lib/language_server/protocol/interface/save_options.rb +3/-0
lib/language_server/protocol/interface/selection_range.rb +6/-3
lib/language_server/protocol/interface/selection_range_client_capabilities.rb +3/-4
lib/language_server/protocol/interface/selection_range_params.rb +23/-20
lib/language_server/protocol/interface/selection_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/semantic_tokens.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_client_capabilities.rb +14/-8
lib/language_server/protocol/interface/semantic_tokens_delta.rb +4/-2
lib/language_server/protocol/interface/semantic_tokens_delta_params.rb +24/-21
lib/language_server/protocol/interface/semantic_tokens_delta_partial_result.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_edit.rb +6/-3
lib/language_server/protocol/interface/semantic_tokens_legend.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_options.rb +11/-8
lib/language_server/protocol/interface/semantic_tokens_params.rb +15/-12
lib/language_server/protocol/interface/semantic_tokens_partial_result.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_range_params.rb +23/-20
lib/language_server/protocol/interface/semantic_tokens_registration_options.rb +14/-11
lib/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/server_capabilities.rb +59/-36
lib/language_server/protocol/interface/set_trace_params.rb +1/-4
lib/language_server/protocol/interface/show_document_client_capabilities.rb +4/-2
lib/language_server/protocol/interface/show_document_params.rb +6/-4
lib/language_server/protocol/interface/show_document_result.rb +3/-1
lib/language_server/protocol/interface/show_message_params.rb +4/-1
lib/language_server/protocol/interface/show_message_request_params.rb +1/-1
lib/language_server/protocol/interface/signature_help.rb +5/-6
lib/language_server/protocol/interface/signature_help_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/signature_help_context.rb +8/-9
lib/language_server/protocol/interface/signature_help_options.rb +15/-12
lib/language_server/protocol/interface/signature_help_params.rb +16/-12
lib/language_server/protocol/interface/signature_help_registration_options.rb +18/-15
lib/language_server/protocol/interface/signature_information.rb +3/-1
lib/language_server/protocol/interface/static_registration_options.rb +2/-1
lib/language_server/protocol/interface/symbol_information.rb +32/-28
lib/language_server/protocol/interface/text_document_change_registration_options.rb +12/-13
lib/language_server/protocol/interface/text_document_client_capabilities.rb +48/-19
lib/language_server/protocol/interface/text_document_content_change_event.rb +4/-2
lib/language_server/protocol/interface/text_document_edit.rb +10/-1
lib/language_server/protocol/interface/text_document_identifier.rb +5/-2
lib/language_server/protocol/interface/text_document_item.rb +7/-3
lib/language_server/protocol/interface/text_document_position_params.rb +4/-0
lib/language_server/protocol/interface/text_document_registration_options.rb +3/-3
lib/language_server/protocol/interface/text_document_save_registration_options.rb +6/-3
lib/language_server/protocol/interface/text_document_sync_options.rb +10/-14
lib/language_server/protocol/interface/text_edit.rb +3/-0
lib/language_server/protocol/interface/type_definition_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/type_definition_params.rb +2/-2
lib/language_server/protocol/interface/type_definition_registration_options.rb +3/-3
lib/language_server/protocol/interface/type_hierarchy_item.rb +6/-3
lib/language_server/protocol/interface/type_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/type_hierarchy_subtypes_params.rb +14/-9
lib/language_server/protocol/interface/type_hierarchy_supertypes_params.rb +14/-9
lib/language_server/protocol/interface/unchanged_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/unregistration.rb +2/-2
lib/language_server/protocol/interface/versioned_notebook_document_identifier.rb +5/-3
lib/language_server/protocol/interface/versioned_text_document_identifier.rb +13/-13
lib/language_server/protocol/interface/will_save_text_document_params.rb +1/-1
lib/language_server/protocol/interface/work_done_progress_begin.rb +4/-4
lib/language_server/protocol/interface/work_done_progress_report.rb +4/-5
lib/language_server/protocol/interface/workspace_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/workspace_diagnostic_report.rb +2/-0
lib/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rb +2/-0
lib/language_server/protocol/interface/workspace_edit.rb +28/-17
lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +10/-1
lib/language_server/protocol/interface/workspace_folder.rb +4/-1
lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +1/-1
lib/language_server/protocol/interface/workspace_full_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/interface/workspace_symbol.rb +33/-27
lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +10/-4
lib/language_server/protocol/interface/workspace_symbol_options.rb +12/-7
lib/language_server/protocol/interface/workspace_symbol_params.rb +14/-14
lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +12/-7
lib/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/version.rb +1/-1 |
Contributor
gem compare json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT require_paths:
2.20.0: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.20.0", "lib"]
2.21.2: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.21.2", "lib"]
DIFFERENT rubygems_version:
2.20.0: 4.0.12
2.21.2: 4.0.16
DIFFERENT version:
2.20.0: 2.20.0
2.21.2: 2.21.2
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md +16/-0
README.md +5/-5
ext/json/ext/generator/generator.c +72/-3
ext/json/ext/json.h +4/-0
ext/json/ext/parser/extconf.rb +6/-16
ext/json/ext/parser/parser.c +140/-43
lib/json.rb +18/-3
lib/json/common.rb +9/-0
lib/json/ext.rb +26/-0
lib/json/ext/generator/state.rb +1/-0
lib/json/truffle_ruby/generator.rb +36/-1
lib/json/version.rb +1/-1
DIFFERENT extra_rdoc_files:
2.20.0->2.21.2:
* Changed:
README.md +5/-5 |
1 similar comment
Contributor
gem compare json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT require_paths:
2.20.0: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.20.0", "lib"]
2.21.2: ["/opt/hostedtoolcache/Ruby/4.0.6/x64/lib/ruby/gems/4.0.0/extensions/x86_64-linux/4.0.0/json-2.21.2", "lib"]
DIFFERENT rubygems_version:
2.20.0: 4.0.12
2.21.2: 4.0.16
DIFFERENT version:
2.20.0: 2.20.0
2.21.2: 2.21.2
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md +16/-0
README.md +5/-5
ext/json/ext/generator/generator.c +72/-3
ext/json/ext/json.h +4/-0
ext/json/ext/parser/extconf.rb +6/-16
ext/json/ext/parser/parser.c +140/-43
lib/json.rb +18/-3
lib/json/common.rb +9/-0
lib/json/ext.rb +26/-0
lib/json/ext/generator/state.rb +1/-0
lib/json/truffle_ruby/generator.rb +36/-1
lib/json/version.rb +1/-1
DIFFERENT extra_rdoc_files:
2.20.0->2.21.2:
* Changed:
README.md +5/-5 |
Contributor
|
Contributor
gem compare language_server-protocol 3.17.0.5 3.17.0.6Compared versions: ["3.17.0.5", "3.17.0.6"]
DIFFERENT rubygems_version:
3.17.0.5: 3.6.8
3.17.0.6: 4.0.10
DIFFERENT version:
3.17.0.5: 3.17.0.5
3.17.0.6: 3.17.0.6
DIFFERENT files:
3.17.0.5->3.17.0.6:
* Added:
lib/language_server/protocol/constant/lsp_error_codes.rb +41/-0
lib/language_server/protocol/constant/trace_values.rb +20/-0
lib/language_server/protocol/interface/base_symbol_information.rb +68/-0
lib/language_server/protocol/interface/did_change_configuration_registration_options.rb +30/-0
lib/language_server/protocol/interface/document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/file_operation_client_capabilities.rb +95/-0
lib/language_server/protocol/interface/file_operation_options.rb +83/-0
lib/language_server/protocol/interface/general_client_capabilities.rb +91/-0
lib/language_server/protocol/interface/inline_value.rb +88/-0
lib/language_server/protocol/interface/markdown_client_capabilities.rb +59/-0
lib/language_server/protocol/interface/prepare_rename_result.rb +69/-0
lib/language_server/protocol/interface/resource_operation.rb +47/-0
lib/language_server/protocol/interface/text_document_filter.rb +69/-0
lib/language_server/protocol/interface/type_hierarchy_client_capabilities.rb +38/-0
lib/language_server/protocol/interface/window_client_capabilities.rb +63/-0
lib/language_server/protocol/interface/workspace_client_capabilities.rb +176/-0
lib/language_server/protocol/interface/workspace_document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/workspace_folders_initialize_params.rb +39/-0
sig/language_server/protocol/constant/code_action_kind.rbs +85/-0
sig/language_server/protocol/constant/code_action_trigger_kind.rbs +22/-0
sig/language_server/protocol/constant/completion_item_kind.rbs +36/-0
sig/language_server/protocol/constant/completion_item_tag.rbs +16/-0
sig/language_server/protocol/constant/completion_trigger_kind.rbs +26/-0
sig/language_server/protocol/constant/diagnostic_severity.rbs +24/-0
sig/language_server/protocol/constant/diagnostic_tag.rbs +24/-0
sig/language_server/protocol/constant/document_diagnostic_report_kind.rbs +21/-0
sig/language_server/protocol/constant/document_highlight_kind.rbs +23/-0
sig/language_server/protocol/constant/error_codes.rbs +73/-0
sig/language_server/protocol/constant/failure_handling_kind.rbs +30/-0
sig/language_server/protocol/constant/file_change_type.rbs +23/-0
sig/language_server/protocol/constant/file_operation_pattern_kind.rbs +20/-0
sig/language_server/protocol/constant/folding_range_kind.rbs +24/-0
sig/language_server/protocol/constant/initialize_error_codes.rbs +18/-0
sig/language_server/protocol/constant/inlay_hint_kind.rbs +19/-0
sig/language_server/protocol/constant/insert_text_format.rbs +25/-0
sig/language_server/protocol/constant/insert_text_mode.rbs +30/-0
sig/language_server/protocol/constant/lsp_error_codes.rbs +41/-0
sig/language_server/protocol/constant/markup_kind.rbs +23/-0
sig/language_server/protocol/constant/message_type.rbs +24/-0
sig/language_server/protocol/constant/moniker_kind.rbs +24/-0
sig/language_server/protocol/constant/notebook_cell_kind.rbs +19/-0
sig/language_server/protocol/constant/position_encoding_kind.rbs +32/-0
sig/language_server/protocol/constant/prepare_support_default_behavior.rbs +13/-0
sig/language_server/protocol/constant/resource_operation_kind.rbs +23/-0
sig/language_server/protocol/constant/semantic_token_modifiers.rbs +18/-0
sig/language_server/protocol/constant/semantic_token_types.rbs +35/-0
sig/language_server/protocol/constant/signature_help_trigger_kind.rbs +24/-0
sig/language_server/protocol/constant/symbol_kind.rbs +37/-0
sig/language_server/protocol/constant/symbol_tag.rbs +15/-0
sig/language_server/protocol/constant/text_document_save_reason.rbs +24/-0
sig/language_server/protocol/constant/text_document_sync_kind.rbs +27/-0
sig/language_server/protocol/constant/token_format.rbs +9/-0
sig/language_server/protocol/constant/trace_values.rbs +20/-0
sig/language_server/protocol/constant/uniqueness_level.rbs +31/-0
sig/language_server/protocol/constant/watch_kind.rbs +20/-0
sig/language_server/protocol/interface/annotated_text_edit.rbs +30/-0
sig/language_server/protocol/interface/apply_workspace_edit_params.rbs +25/-0
sig/language_server/protocol/interface/apply_workspace_edit_result.rbs +30/-0
sig/language_server/protocol/interface/base_symbol_information.rbs +31/-0
sig/language_server/protocol/interface/call_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_item.rbs +46/-0
sig/language_server/protocol/interface/call_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/cancel_params.rbs +19/-0
sig/language_server/protocol/interface/change_annotation.rbs +30/-0
sig/language_server/protocol/interface/client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/code_action.rbs +46/-0
sig/language_server/protocol/interface/code_action_client_capabilities.rbs +40/-0
sig/language_server/protocol/interface/code_action_context.rbs +29/-0
sig/language_server/protocol/interface/code_action_options.rbs +28/-0
sig/language_server/protocol/interface/code_action_params.rbs +34/-0
sig/language_server/protocol/interface/code_action_registration_options.rbs +31/-0
sig/language_server/protocol/interface/code_description.rbs +24/-0
sig/language_server/protocol/interface/code_lens.rbs +32/-0
sig/language_server/protocol/interface/code_lens_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/code_lens_options.rbs +25/-0
sig/language_server/protocol/interface/code_lens_params.rbs +28/-0
sig/language_server/protocol/interface/code_lens_registration_options.rbs +28/-0
sig/language_server/protocol/interface/code_lens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/color.rbs +31/-0
sig/language_server/protocol/interface/color_information.rbs +25/-0
sig/language_server/protocol/interface/color_presentation.rbs +25/-0
sig/language_server/protocol/interface/color_presentation_params.rbs +34/-0
sig/language_server/protocol/interface/command.rbs +31/-0
sig/language_server/protocol/interface/completion_client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/completion_context.rbs +25/-0
sig/language_server/protocol/interface/completion_item.rbs +77/-0
sig/language_server/protocol/interface/completion_item_label_details.rbs +27/-0
sig/language_server/protocol/interface/completion_list.rbs +29/-0
sig/language_server/protocol/interface/completion_options.rbs +34/-0
sig/language_server/protocol/interface/completion_params.rbs +34/-0
sig/language_server/protocol/interface/completion_registration_options.rbs +37/-0
sig/language_server/protocol/interface/configuration_item.rbs +22/-0
sig/language_server/protocol/interface/configuration_params.rbs +22/-0
sig/language_server/protocol/interface/create_file.rbs +31/-0
sig/language_server/protocol/interface/create_file_options.rbs +25/-0
sig/language_server/protocol/interface/create_files_params.rbs +25/-0
sig/language_server/protocol/interface/declaration_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/declaration_options.rbs +19/-0
sig/language_server/protocol/interface/declaration_params.rbs +28/-0
sig/language_server/protocol/interface/declaration_registration_options.rbs +25/-0
sig/language_server/protocol/interface/definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/definition_options.rbs +22/-0
sig/language_server/protocol/interface/definition_params.rbs +31/-0
sig/language_server/protocol/interface/definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/delete_file.rbs +31/-0
sig/language_server/protocol/interface/delete_file_options.rbs +25/-0
sig/language_server/protocol/interface/delete_files_params.rbs +25/-0
sig/language_server/protocol/interface/diagnostic.rbs +47/-0
sig/language_server/protocol/interface/diagnostic_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_options.rbs +33/-0
sig/language_server/protocol/interface/diagnostic_registration_options.rbs +39/-0
sig/language_server/protocol/interface/diagnostic_related_information.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_server_cancellation_data.rbs +24/-0
sig/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/did_change_configuration_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/did_change_configuration_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_configuration_registration_options.rbs +19/-0
sig/language_server/protocol/interface/did_change_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_change_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/did_change_watched_files_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_registration_options.rbs +22/-0
sig/language_server/protocol/interface/did_change_workspace_folders_params.rbs +22/-0
sig/language_server/protocol/interface/did_close_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_close_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_open_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_open_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_save_notebook_document_params.rbs +24/-0
sig/language_server/protocol/interface/did_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/document_color_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/document_color_options.rbs +19/-0
sig/language_server/protocol/interface/document_color_params.rbs +28/-0
sig/language_server/protocol/interface/document_color_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_diagnostic_params.rbs +36/-0
sig/language_server/protocol/interface/document_diagnostic_report.rbs +37/-0
sig/language_server/protocol/interface/document_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/document_filter.rbs +34/-0
sig/language_server/protocol/interface/document_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_params.rbs +28/-0
sig/language_server/protocol/interface/document_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_highlight.rbs +27/-0
sig/language_server/protocol/interface/document_highlight_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_options.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_params.rbs +31/-0
sig/language_server/protocol/interface/document_highlight_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_link.rbs +32/-0
sig/language_server/protocol/interface/document_link_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/document_link_options.rbs +25/-0
sig/language_server/protocol/interface/document_link_params.rbs +28/-0
sig/language_server/protocol/interface/document_link_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_on_type_formatting_options.rbs +25/-0
sig/language_server/protocol/interface/document_on_type_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_on_type_formatting_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_range_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_range_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol.rbs +46/-0
sig/language_server/protocol/interface/document_symbol_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/document_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol_registration_options.rbs +28/-0
sig/language_server/protocol/interface/execute_command_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/execute_command_options.rbs +25/-0
sig/language_server/protocol/interface/execute_command_params.rbs +28/-0
sig/language_server/protocol/interface/execute_command_registration_options.rbs +25/-0
sig/language_server/protocol/interface/execution_summary.rbs +22/-0
sig/language_server/protocol/interface/file_create.rbs +24/-0
sig/language_server/protocol/interface/file_delete.rbs +24/-0
sig/language_server/protocol/interface/file_event.rbs +25/-0
sig/language_server/protocol/interface/file_operation_client_capabilities.rbs +45/-0
sig/language_server/protocol/interface/file_operation_filter.rbs +28/-0
sig/language_server/protocol/interface/file_operation_options.rbs +39/-0
sig/language_server/protocol/interface/file_operation_pattern.rbs +31/-0
sig/language_server/protocol/interface/file_operation_pattern_options.rbs +24/-0
sig/language_server/protocol/interface/file_operation_registration_options.rbs +24/-0
sig/language_server/protocol/interface/file_rename.rbs +27/-0
sig/language_server/protocol/interface/file_system_watcher.rbs +22/-0
sig/language_server/protocol/interface/folding_range.rbs +38/-0
sig/language_server/protocol/interface/folding_range_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/folding_range_options.rbs +19/-0
sig/language_server/protocol/interface/folding_range_params.rbs +28/-0
sig/language_server/protocol/interface/folding_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/formatting_options.rbs +34/-0
sig/language_server/protocol/interface/full_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/general_client_capabilities.rbs +33/-0
sig/language_server/protocol/interface/hover.rbs +25/-0
sig/language_server/protocol/interface/hover_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/hover_options.rbs +22/-0
sig/language_server/protocol/interface/hover_params.rbs +28/-0
sig/language_server/protocol/interface/hover_registration_options.rbs +25/-0
sig/language_server/protocol/interface/hover_result.rbs +19/-0
sig/language_server/protocol/interface/implementation_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/implementation_options.rbs +19/-0
sig/language_server/protocol/interface/implementation_params.rbs +28/-0
sig/language_server/protocol/interface/implementation_registration_options.rbs +25/-0
sig/language_server/protocol/interface/initialize_error.rbs +23/-0
sig/language_server/protocol/interface/initialize_params.rbs +46/-0
sig/language_server/protocol/interface/initialize_result.rbs +25/-0
sig/language_server/protocol/interface/initialized_params.rbs +16/-0
sig/language_server/protocol/interface/inlay_hint.rbs +45/-0
sig/language_server/protocol/interface/inlay_hint_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_label_part.rbs +34/-0
sig/language_server/protocol/interface/inlay_hint_options.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_registration_options.rbs +33/-0
sig/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value.rbs +40/-0
sig/language_server/protocol/interface/inline_value_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value_context.rbs +25/-0
sig/language_server/protocol/interface/inline_value_evaluatable_expression.rbs +29/-0
sig/language_server/protocol/interface/inline_value_options.rbs +24/-0
sig/language_server/protocol/interface/inline_value_params.rbs +33/-0
sig/language_server/protocol/interface/inline_value_registration_options.rbs +30/-0
sig/language_server/protocol/interface/inline_value_text.rbs +27/-0
sig/language_server/protocol/interface/inline_value_variable_lookup.rbs +32/-0
sig/language_server/protocol/interface/inline_value_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/insert_replace_edit.rbs +30/-0
sig/language_server/protocol/interface/linked_editing_range_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/linked_editing_range_options.rbs +19/-0
sig/language_server/protocol/interface/linked_editing_range_params.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_ranges.rbs +27/-0
sig/language_server/protocol/interface/location.rbs +26/-0
sig/language_server/protocol/interface/location_link.rbs +32/-0
sig/language_server/protocol/interface/log_message_params.rbs +25/-0
sig/language_server/protocol/interface/markdown_client_capabilities.rbs +30/-0
sig/language_server/protocol/interface/markup_content.rbs +46/-0
sig/language_server/protocol/interface/message.rbs +19/-0
sig/language_server/protocol/interface/message_action_item.rbs +19/-0
sig/language_server/protocol/interface/moniker.rbs +33/-0
sig/language_server/protocol/interface/moniker_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/moniker_options.rbs +19/-0
sig/language_server/protocol/interface/moniker_params.rbs +28/-0
sig/language_server/protocol/interface/moniker_registration_options.rbs +22/-0
sig/language_server/protocol/interface/notebook_cell.rbs +37/-0
sig/language_server/protocol/interface/notebook_cell_array_change.rbs +31/-0
sig/language_server/protocol/interface/notebook_cell_text_document_filter.rbs +28/-0
sig/language_server/protocol/interface/notebook_document.rbs +36/-0
sig/language_server/protocol/interface/notebook_document_change_event.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_filter.rbs +32/-0
sig/language_server/protocol/interface/notebook_document_identifier.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_sync_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_sync_options.rbs +37/-0
sig/language_server/protocol/interface/notebook_document_sync_registration_options.rbs +30/-0
sig/language_server/protocol/interface/notification_message.rbs +25/-0
sig/language_server/protocol/interface/optional_versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/parameter_information.rbs +26/-0
sig/language_server/protocol/interface/partial_result_params.rbs +19/-0
sig/language_server/protocol/interface/position.rbs +51/-0
sig/language_server/protocol/interface/prepare_rename_params.rbs +25/-0
sig/language_server/protocol/interface/prepare_rename_result.rbs +31/-0
sig/language_server/protocol/interface/previous_result_id.rbs +27/-0
sig/language_server/protocol/interface/progress_params.rbs +22/-0
sig/language_server/protocol/interface/publish_diagnostics_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/publish_diagnostics_params.rbs +28/-0
sig/language_server/protocol/interface/range.rbs +35/-0
sig/language_server/protocol/interface/reference_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/reference_context.rbs +23/-0
sig/language_server/protocol/interface/reference_options.rbs +22/-0
sig/language_server/protocol/interface/reference_params.rbs +34/-0
sig/language_server/protocol/interface/reference_registration_options.rbs +25/-0
sig/language_server/protocol/interface/registration.rbs +28/-0
sig/language_server/protocol/interface/registration_params.rbs +19/-0
sig/language_server/protocol/interface/regular_expressions_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/related_full_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/relative_pattern.rbs +29/-0
sig/language_server/protocol/interface/rename_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/rename_file.rbs +34/-0
sig/language_server/protocol/interface/rename_file_options.rbs +25/-0
sig/language_server/protocol/interface/rename_files_params.rbs +25/-0
sig/language_server/protocol/interface/rename_options.rbs +25/-0
sig/language_server/protocol/interface/rename_params.rbs +31/-0
sig/language_server/protocol/interface/rename_registration_options.rbs +28/-0
sig/language_server/protocol/interface/request_message.rbs +28/-0
sig/language_server/protocol/interface/resource_operation.rbs +25/-0
sig/language_server/protocol/interface/response_error.rbs +25/-0
sig/language_server/protocol/interface/response_message.rbs +28/-0
sig/language_server/protocol/interface/save_options.rbs +22/-0
sig/language_server/protocol/interface/selection_range.rbs +26/-0
sig/language_server/protocol/interface/selection_range_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/selection_range_options.rbs +19/-0
sig/language_server/protocol/interface/selection_range_params.rbs +31/-0
sig/language_server/protocol/interface/selection_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_client_capabilities.rbs +46/-0
sig/language_server/protocol/interface/semantic_tokens_delta.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_delta_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_delta_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_edit.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_legend.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_options.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_params.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_range_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_registration_options.rbs +37/-0
sig/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/server_capabilities.rbs +125/-0
sig/language_server/protocol/interface/set_trace_params.rbs +19/-0
sig/language_server/protocol/interface/show_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/show_document_params.rbs +33/-0
sig/language_server/protocol/interface/show_document_result.rbs +24/-0
sig/language_server/protocol/interface/show_message_params.rbs +25/-0
sig/language_server/protocol/interface/show_message_request_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/show_message_request_params.rbs +25/-0
sig/language_server/protocol/interface/signature_help.rbs +30/-0
sig/language_server/protocol/interface/signature_help_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/signature_help_context.rbs +33/-0
sig/language_server/protocol/interface/signature_help_options.rbs +28/-0
sig/language_server/protocol/interface/signature_help_params.rbs +31/-0
sig/language_server/protocol/interface/signature_help_registration_options.rbs +31/-0
sig/language_server/protocol/interface/signature_information.rbs +33/-0
sig/language_server/protocol/interface/static_registration_options.rbs +23/-0
sig/language_server/protocol/interface/symbol_information.rbs +38/-0
sig/language_server/protocol/interface/text_document_change_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_client_capabilities.rbs +109/-0
sig/language_server/protocol/interface/text_document_content_change_event.rbs +29/-0
sig/language_server/protocol/interface/text_document_edit.rbs +28/-0
sig/language_server/protocol/interface/text_document_filter.rbs +43/-0
sig/language_server/protocol/interface/text_document_identifier.rbs +22/-0
sig/language_server/protocol/interface/text_document_item.rbs +32/-0
sig/language_server/protocol/interface/text_document_position_params.rbs +26/-0
sig/language_server/protocol/interface/text_document_registration_options.rbs +22/-0
sig/language_server/protocol/interface/text_document_save_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_sync_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/text_document_sync_options.rbs +31/-0
sig/language_server/protocol/interface/text_edit.rbs +25/-0
sig/language_server/protocol/interface/type_definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/type_definition_options.rbs +19/-0
sig/language_server/protocol/interface/type_definition_params.rbs +28/-0
sig/language_server/protocol/interface/type_definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/type_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/type_hierarchy_item.rbs +43/-0
sig/language_server/protocol/interface/type_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/type_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_subtypes_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_supertypes_params.rbs +30/-0
sig/language_server/protocol/interface/unchanged_document_diagnostic_report.rbs +28/-0
sig/language_server/protocol/interface/unregistration.rbs +25/-0
sig/language_server/protocol/interface/unregistration_params.rbs +19/-0
sig/language_server/protocol/interface/versioned_notebook_document_identifier.rbs +27/-0
sig/language_server/protocol/interface/versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/will_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/window_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/work_done_progress_begin.rbs +31/-0
sig/language_server/protocol/interface/work_done_progress_cancel_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_create_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_end.rbs +22/-0
sig/language_server/protocol/interface/work_done_progress_options.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_report.rbs +28/-0
sig/language_server/protocol/interface/workspace_client_capabilities.rbs +61/-0
sig/language_server/protocol/interface/workspace_diagnostic_params.rbs +33/-0
sig/language_server/protocol/interface/workspace_diagnostic_report.rbs +24/-0
sig/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/workspace_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_edit.rbs +39/-0
sig/language_server/protocol/interface/workspace_edit_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_folder.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_change_event.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_initialize_params.rbs +19/-0
sig/language_server/protocol/interface/workspace_folders_server_capabilities.rbs +22/-0
sig/language_server/protocol/interface/workspace_full_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_symbol.rbs +41/-0
sig/language_server/protocol/interface/workspace_symbol_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_symbol_params.rbs +28/-0
sig/language_server/protocol/interface/workspace_symbol_registration_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/transport/io/reader.rbs +18/-0
sig/language_server/protocol/transport/io/writer.rbs +18/-0
sig/language_server/protocol/transport/stdio/reader.rbs +11/-0
sig/language_server/protocol/transport/stdio/writer.rbs +11/-0
sig/language_server/protocol/version.rbs +5/-0
* Changed:
lib/language_server/protocol/constant.rb +4/-0
lib/language_server/protocol/constant/initialize_error_codes.rb +2/-0
lib/language_server/protocol/interface.rb +32/-4
lib/language_server/protocol/interface/annotated_text_edit.rb +12/-10
lib/language_server/protocol/interface/apply_workspace_edit_params.rb +3/-0
lib/language_server/protocol/interface/apply_workspace_edit_result.rb +9/-5
lib/language_server/protocol/interface/call_hierarchy_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/call_hierarchy_incoming_call.rb +6/-1
lib/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_item.rb +12/-8
lib/language_server/protocol/interface/call_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_outgoing_call.rb +8/-2
lib/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/cancel_params.rb +1/-1
lib/language_server/protocol/interface/change_annotation.rb +2/-0
lib/language_server/protocol/interface/client_capabilities.rb +10/-3
lib/language_server/protocol/interface/code_action.rb +23/-21
lib/language_server/protocol/interface/code_action_client_capabilities.rb +19/-3
lib/language_server/protocol/interface/code_action_context.rb +10/-9
lib/language_server/protocol/interface/code_action_options.rb +15/-10
lib/language_server/protocol/interface/code_action_params.rb +21/-21
lib/language_server/protocol/interface/code_action_registration_options.rb +18/-13
lib/language_server/protocol/interface/code_description.rb +3/-1
lib/language_server/protocol/interface/code_lens.rb +6/-7
lib/language_server/protocol/interface/code_lens_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/code_lens_options.rb +10/-7
lib/language_server/protocol/interface/code_lens_params.rb +15/-12
lib/language_server/protocol/interface/code_lens_registration_options.rb +13/-10
lib/language_server/protocol/interface/code_lens_workspace_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/color.rb +4/-4
lib/language_server/protocol/interface/color_information.rb +3/-0
lib/language_server/protocol/interface/color_presentation.rb +7/-8
lib/language_server/protocol/interface/color_presentation_params.rb +24/-21
lib/language_server/protocol/interface/command.rb +6/-0
lib/language_server/protocol/interface/completion_client_capabilities.rb +20/-12
lib/language_server/protocol/interface/completion_context.rb +3/-5
lib/language_server/protocol/interface/completion_item.rb +45/-34
lib/language_server/protocol/interface/completion_item_label_details.rb +6/-6
lib/language_server/protocol/interface/completion_list.rb +5/-4
lib/language_server/protocol/interface/completion_options.rb +24/-24
lib/language_server/protocol/interface/completion_params.rb +16/-14
lib/language_server/protocol/interface/completion_registration_options.rb +30/-27
lib/language_server/protocol/interface/configuration_params.rb +3/-0
lib/language_server/protocol/interface/create_file.rb +5/-3
lib/language_server/protocol/interface/create_files_params.rb +4/-2
lib/language_server/protocol/interface/declaration_client_capabilities.rb +6/-3
lib/language_server/protocol/interface/declaration_params.rb +2/-2
lib/language_server/protocol/interface/declaration_registration_options.rb +3/-3
lib/language_server/protocol/interface/definition_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/definition_options.rb +3/-0
lib/language_server/protocol/interface/definition_params.rb +5/-2
lib/language_server/protocol/interface/definition_registration_options.rb +6/-3
lib/language_server/protocol/interface/delete_file.rb +4/-2
lib/language_server/protocol/interface/delete_files_params.rb +4/-2
lib/language_server/protocol/interface/diagnostic.rb +20/-9
lib/language_server/protocol/interface/diagnostic_client_capabilities.rb +5/-5
lib/language_server/protocol/interface/diagnostic_options.rb +9/-7
lib/language_server/protocol/interface/diagnostic_registration_options.rb +12/-10
lib/language_server/protocol/interface/diagnostic_related_information.rb +3/-3
lib/language_server/protocol/interface/diagnostic_server_cancellation_data.rb +2/-0
lib/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rb +5/-3
lib/language_server/protocol/interface/did_change_configuration_params.rb +3/-0
lib/language_server/protocol/interface/did_change_notebook_document_params.rb +14/-8
lib/language_server/protocol/interface/did_change_text_document_params.rb +12/-11
lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/did_change_watched_files_params.rb +3/-0
lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1/-1
lib/language_server/protocol/interface/did_change_workspace_folders_params.rb +3/-0
lib/language_server/protocol/interface/did_close_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_close_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_open_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_open_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_save_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_save_text_document_params.rb +3/-0
lib/language_server/protocol/interface/document_color_client_capabilities.rb +3/-1
lib/language_server/protocol/interface/document_color_params.rb +15/-12
lib/language_server/protocol/interface/document_color_registration_options.rb +10/-10
lib/language_server/protocol/interface/document_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/document_diagnostic_report_partial_result.rb +3/-1
lib/language_server/protocol/interface/document_filter.rb +27/-14
lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_highlight.rb +1/-1
lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_highlight_options.rb +3/-0
lib/language_server/protocol/interface/document_highlight_params.rb +5/-2
lib/language_server/protocol/interface/document_highlight_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_link.rb +7/-6
lib/language_server/protocol/interface/document_link_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/document_link_options.rb +10/-7
lib/language_server/protocol/interface/document_link_params.rb +15/-12
lib/language_server/protocol/interface/document_link_registration_options.rb +13/-10
lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_params.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/document_range_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_range_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_symbol.rb +14/-12
lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +8/-1
lib/language_server/protocol/interface/document_symbol_options.rb +12/-7
lib/language_server/protocol/interface/document_symbol_params.rb +15/-12
lib/language_server/protocol/interface/document_symbol_registration_options.rb +15/-10
lib/language_server/protocol/interface/execute_command_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/execute_command_options.rb +10/-7
lib/language_server/protocol/interface/execute_command_params.rb +13/-10
lib/language_server/protocol/interface/execute_command_registration_options.rb +8/-8
lib/language_server/protocol/interface/execution_summary.rb +1/-1
lib/language_server/protocol/interface/file_create.rb +2/-0
lib/language_server/protocol/interface/file_delete.rb +2/-0
lib/language_server/protocol/interface/file_event.rb +3/-3
lib/language_server/protocol/interface/file_operation_filter.rb +4/-2
lib/language_server/protocol/interface/file_operation_pattern.rb +6/-8
lib/language_server/protocol/interface/file_operation_pattern_options.rb +2/-0
lib/language_server/protocol/interface/file_operation_registration_options.rb +2/-0
lib/language_server/protocol/interface/file_rename.rb +2/-0
lib/language_server/protocol/interface/file_system_watcher.rb +4/-3
lib/language_server/protocol/interface/folding_range.rb +18/-22
lib/language_server/protocol/interface/folding_range_client_capabilities.rb +6/-2
lib/language_server/protocol/interface/folding_range_params.rb +15/-12
lib/language_server/protocol/interface/folding_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/formatting_options.rb +7/-1
lib/language_server/protocol/interface/full_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/hover.rb +2/-2
lib/language_server/protocol/interface/hover_client_capabilities.rb +2/-3
lib/language_server/protocol/interface/hover_options.rb +3/-0
lib/language_server/protocol/interface/hover_params.rb +3/-0
lib/language_server/protocol/interface/hover_registration_options.rb +6/-3
lib/language_server/protocol/interface/implementation_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/implementation_params.rb +2/-2
lib/language_server/protocol/interface/implementation_registration_options.rb +3/-3
lib/language_server/protocol/interface/initialize_error.rb +4/-0
lib/language_server/protocol/interface/initialize_params.rb +36/-24
lib/language_server/protocol/interface/initialize_result.rb +5/-0
lib/language_server/protocol/interface/inlay_hint.rb +2/-6
lib/language_server/protocol/interface/inlay_hint_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_label_part.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_options.rb +9/-7
lib/language_server/protocol/interface/inlay_hint_params.rb +13/-11
lib/language_server/protocol/interface/inlay_hint_registration_options.rb +12/-10
lib/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inline_value_client_capabilities.rb +3/-2
lib/language_server/protocol/interface/inline_value_context.rb +5/-3
lib/language_server/protocol/interface/inline_value_evaluatable_expression.rb +4/-6
lib/language_server/protocol/interface/inline_value_options.rb +2/-0
lib/language_server/protocol/interface/inline_value_params.rb +12/-10
lib/language_server/protocol/interface/inline_value_registration_options.rb +5/-3
lib/language_server/protocol/interface/inline_value_text.rb +2/-0
lib/language_server/protocol/interface/inline_value_variable_lookup.rb +4/-6
lib/language_server/protocol/interface/inline_value_workspace_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/insert_replace_edit.rb +2/-0
lib/language_server/protocol/interface/linked_editing_range_client_capabilities.rb +7/-3
lib/language_server/protocol/interface/linked_editing_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/linked_editing_ranges.rb +10/-6
lib/language_server/protocol/interface/location.rb +5/-1
lib/language_server/protocol/interface/location_link.rb +12/-10
lib/language_server/protocol/interface/log_message_params.rb +4/-1
lib/language_server/protocol/interface/log_trace_params.rb +0/-7
lib/language_server/protocol/interface/markup_content.rb +16/-18
lib/language_server/protocol/interface/moniker.rb +2/-0
lib/language_server/protocol/interface/moniker_client_capabilities.rb +8/-4
lib/language_server/protocol/interface/moniker_params.rb +2/-2
lib/language_server/protocol/interface/moniker_registration_options.rb +3/-3
lib/language_server/protocol/interface/notebook_cell.rb +6/-2
lib/language_server/protocol/interface/notebook_cell_array_change.rb +5/-3
lib/language_server/protocol/interface/notebook_cell_text_document_filter.rb +2/-0
lib/language_server/protocol/interface/notebook_document.rb +7/-3
lib/language_server/protocol/interface/notebook_document_change_event.rb +5/-1
lib/language_server/protocol/interface/notebook_document_client_capabilities.rb +4/-0
lib/language_server/protocol/interface/notebook_document_filter.rb +5/-26
lib/language_server/protocol/interface/notebook_document_identifier.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/notebook_document_sync_options.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_registration_options.rb +3/-1
lib/language_server/protocol/interface/optional_versioned_text_document_identifier.rb +17/-18
lib/language_server/protocol/interface/parameter_information.rb +6/-8
lib/language_server/protocol/interface/partial_result_params.rb +2/-2
lib/language_server/protocol/interface/position.rb +40/-6
lib/language_server/protocol/interface/previous_result_id.rb +4/-2
lib/language_server/protocol/interface/progress_params.rb +1/-1
lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +11/-0
lib/language_server/protocol/interface/publish_diagnostics_params.rb +8/-4
lib/language_server/protocol/interface/range.rb +13/-0
lib/language_server/protocol/interface/reference_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/reference_context.rb +4/-0
lib/language_server/protocol/interface/reference_options.rb +3/-0
lib/language_server/protocol/interface/reference_params.rb +12/-9
lib/language_server/protocol/interface/reference_registration_options.rb +6/-3
lib/language_server/protocol/interface/registration.rb +1/-1
lib/language_server/protocol/interface/regular_expressions_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/related_full_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/relative_pattern.rb +4/-2
lib/language_server/protocol/interface/rename_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/rename_file.rb +5/-3
lib/language_server/protocol/interface/rename_files_params.rb +6/-4
lib/language_server/protocol/interface/rename_options.rb +12/-7
lib/language_server/protocol/interface/rename_params.rb +16/-13
lib/language_server/protocol/interface/rename_registration_options.rb +15/-10
lib/language_server/protocol/interface/save_options.rb +3/-0
lib/language_server/protocol/interface/selection_range.rb +6/-3
lib/language_server/protocol/interface/selection_range_client_capabilities.rb +3/-4
lib/language_server/protocol/interface/selection_range_params.rb +23/-20
lib/language_server/protocol/interface/selection_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/semantic_tokens.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_client_capabilities.rb +14/-8
lib/language_server/protocol/interface/semantic_tokens_delta.rb +4/-2
lib/language_server/protocol/interface/semantic_tokens_delta_params.rb +24/-21
lib/language_server/protocol/interface/semantic_tokens_delta_partial_result.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_edit.rb +6/-3
lib/language_server/protocol/interface/semantic_tokens_legend.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_options.rb +11/-8
lib/language_server/protocol/interface/semantic_tokens_params.rb +15/-12
lib/language_server/protocol/interface/semantic_tokens_partial_result.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_range_params.rb +23/-20
lib/language_server/protocol/interface/semantic_tokens_registration_options.rb +14/-11
lib/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/server_capabilities.rb +59/-36
lib/language_server/protocol/interface/set_trace_params.rb +1/-4
lib/language_server/protocol/interface/show_document_client_capabilities.rb +4/-2
lib/language_server/protocol/interface/show_document_params.rb +6/-4
lib/language_server/protocol/interface/show_document_result.rb +3/-1
lib/language_server/protocol/interface/show_message_params.rb +4/-1
lib/language_server/protocol/interface/show_message_request_params.rb +1/-1
lib/language_server/protocol/interface/signature_help.rb +5/-6
lib/language_server/protocol/interface/signature_help_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/signature_help_context.rb +8/-9
lib/language_server/protocol/interface/signature_help_options.rb +15/-12
lib/language_server/protocol/interface/signature_help_params.rb +16/-12
lib/language_server/protocol/interface/signature_help_registration_options.rb +18/-15
lib/language_server/protocol/interface/signature_information.rb +3/-1
lib/language_server/protocol/interface/static_registration_options.rb +2/-1
lib/language_server/protocol/interface/symbol_information.rb +32/-28
lib/language_server/protocol/interface/text_document_change_registration_options.rb +12/-13
lib/language_server/protocol/interface/text_document_client_capabilities.rb +48/-19
lib/language_server/protocol/interface/text_document_content_change_event.rb +4/-2
lib/language_server/protocol/interface/text_document_edit.rb +10/-1
lib/language_server/protocol/interface/text_document_identifier.rb +5/-2
lib/language_server/protocol/interface/text_document_item.rb +7/-3
lib/language_server/protocol/interface/text_document_position_params.rb +4/-0
lib/language_server/protocol/interface/text_document_registration_options.rb +3/-3
lib/language_server/protocol/interface/text_document_save_registration_options.rb +6/-3
lib/language_server/protocol/interface/text_document_sync_options.rb +10/-14
lib/language_server/protocol/interface/text_edit.rb +3/-0
lib/language_server/protocol/interface/type_definition_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/type_definition_params.rb +2/-2
lib/language_server/protocol/interface/type_definition_registration_options.rb +3/-3
lib/language_server/protocol/interface/type_hierarchy_item.rb +6/-3
lib/language_server/protocol/interface/type_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/type_hierarchy_subtypes_params.rb +14/-9
lib/language_server/protocol/interface/type_hierarchy_supertypes_params.rb +14/-9
lib/language_server/protocol/interface/unchanged_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/unregistration.rb +2/-2
lib/language_server/protocol/interface/versioned_notebook_document_identifier.rb +5/-3
lib/language_server/protocol/interface/versioned_text_document_identifier.rb +13/-13
lib/language_server/protocol/interface/will_save_text_document_params.rb +1/-1
lib/language_server/protocol/interface/work_done_progress_begin.rb +4/-4
lib/language_server/protocol/interface/work_done_progress_report.rb +4/-5
lib/language_server/protocol/interface/workspace_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/workspace_diagnostic_report.rb +2/-0
lib/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rb +2/-0
lib/language_server/protocol/interface/workspace_edit.rb +28/-17
lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +10/-1
lib/language_server/protocol/interface/workspace_folder.rb +4/-1
lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +1/-1
lib/language_server/protocol/interface/workspace_full_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/interface/workspace_symbol.rb +33/-27
lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +10/-4
lib/language_server/protocol/interface/workspace_symbol_options.rb +12/-7
lib/language_server/protocol/interface/workspace_symbol_params.rb +14/-14
lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +12/-7
lib/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/version.rb +1/-1 |
Contributor
|
Contributor
gem compare --diff json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/CHANGES.md 2026-08-10 02:35:37.548390243 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/CHANGES.md 2026-08-10 02:35:37.742391109 +0000
@@ -4,0 +5,16 @@
+### 2026-07-31 (2.21.2)
+
+* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc].
+
+### 2026-07-13 (2.21.1)
+
+* Fix a compilation issue on Window and Microsoft Visual C++.
+
+### 2026-07-12 (2.21.0)
+
+* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block.
+* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`.
+* Numerous correctness and performance fixes for `JSON::ResumableParser`.
+* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers.
+* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`.
+
README.md
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/README.md 2026-08-10 02:35:37.548390243 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/README.md 2026-08-10 02:35:37.743391113 +0000
@@ -88 +88 @@
-JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
+JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError)
@@ -120 +120 @@
-coder = JSON::Combining.new do |object, is_object_key|
+coder = JSON::Coder.new do |object, is_object_key|
@@ -123,2 +123,2 @@
- if !string.valid_encoding? || string.encoding != Encoding::UTF_8
- Base64.encode64(string)
+ if !object.valid_encoding? || object.encoding != Encoding::UTF_8
+ Base64.encode64(object)
@@ -126 +126 @@
- string
+ object
ext/json/ext/generator/generator.c
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/ext/json/ext/generator/generator.c 2026-08-10 02:35:37.549390248 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/ext/json/ext/generator/generator.c 2026-08-10 02:35:37.744391118 +0000
@@ -36,0 +37 @@
+ VALUE sort_keys;
@@ -39 +40 @@
-static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8;
+static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc;
@@ -43 +44 @@
- sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json;
+ sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json, sym_sort_keys;
@@ -711,0 +713 @@
+ rb_gc_mark_movable(state->sort_keys);
@@ -722,0 +725 @@
+ state->sort_keys = rb_gc_location(state->sort_keys);
@@ -742 +745 @@
- .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -771,0 +775 @@
+ RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys);
@@ -1052,0 +1057,5 @@
+ if (RB_UNLIKELY(data->state->sort_keys)) {
+ obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil);
+ Check_Type(obj, T_HASH);
+ }
+
@@ -1378,0 +1388 @@
+ RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys);
@@ -1724,0 +1735,49 @@
+static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc)
+{
+ if (!rb_obj_is_proc(proc)) {
+ rb_raise(rb_eTypeError, "sort_key_proc must be a Proc");
+ }
+ return default_sort_keys_proc = proc;
+}
+
+static VALUE normalize_sort_keys(VALUE value)
+{
+ if (rb_obj_is_proc(value)) {
+ return value;
+ } else if (value == Qtrue) {
+ return default_sort_keys_proc;
+ } else if (RTEST(value)) {
+ rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc");
+ } else {
+ return Qfalse;
+ }
+}
+
+/*
+ * call-seq: sort_keys
+ *
+ * Get the value of sort_keys.
+ */
+static VALUE cState_sort_keys_p(VALUE self)
+{
+ GET_STATE(self);
+ return state->sort_keys;
+}
+
+/*
+ * call-seq: sort_keys=(value)
+ *
+ * value is a boolean or a proc. If the value is the boolean true, object keys
+ * will be sorted lexicographically in ascending order.
+ *
+ * If the value is a proc, it receives the entire Hash and must return a Hash
+ * with its pairs in the desired order, allowing for arbitrary sorting.
+ */
+static VALUE cState_sort_keys_set(VALUE self, VALUE value)
+{
+ rb_check_frozen(self);
+ GET_STATE(self);
+ RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value));
+ return Qnil;
+}
+
@@ -1834,0 +1894,3 @@
+ else if (key == sym_sort_keys) {
+ state_write_value(data, &state->sort_keys, normalize_sort_keys(val));
+ }
@@ -1911,0 +1974,2 @@
+ rb_global_variable(&default_sort_keys_proc);
+
@@ -1920,0 +1985,2 @@
+ rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1);
+
@@ -1959,0 +2026,2 @@
+ rb_define_method(cState, "sort_keys", cState_sort_keys_p, 0);
+ rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1);
@@ -1988,0 +2057 @@
+ sym_sort_keys = ID2SYM(rb_intern("sort_keys"));
ext/json/ext/json.h
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/ext/json/ext/json.h 2026-08-10 02:35:37.550390252 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/ext/json/ext/json.h 2026-08-10 02:35:37.744391118 +0000
@@ -33,0 +34,4 @@
+#ifndef RUBY_TYPED_THREAD_SAFE_FREE
+#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY
+#endif
+
ext/json/ext/parser/extconf.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:37.550390252 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:37.745391122 +0000
@@ -18,16 +17,0 @@
-def have_builtin_func(name, check_expr, opt = "", &b)
- checking_for checking_message(name.funcall_style, nil, opt) do
- if try_compile(<<SRC, opt, &b)
-int foo;
-int main() { #{check_expr}; return 0; }
-SRC
- $defs.push(format("-DHAVE_BUILTIN_%s", name.tr_cpp))
- true
- else
- false
- end
- end
-end
-
-have_builtin_func("__builtin_clzll", "__builtin_clzll(0)")
-
@@ -47,0 +32,6 @@
+
+# Disable function outlining on clang to prevent some of the repeated instructions
+# in json_eat_whitespace being outlined into function calls.
+# Note: This verifies '-mno-outline' is accepted as a valid compiler flag
+# and will not pass it if unsupported.
+append_cflags("-mno-outline")
ext/json/ext/parser/parser.c
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/ext/json/ext/parser/parser.c 2026-08-10 02:35:37.551390257 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/ext/json/ext/parser/parser.c 2026-08-10 02:35:37.746391127 +0000
@@ -8 +8,4 @@
-static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
+static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column;
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
+static ID i_uminus;
+#endif
@@ -317 +320 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -514 +517 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
@@ -588,0 +592,2 @@
+ JSON_ASSERT(!state->parser);
+ JSON_ASSERT(state->cursor);
@@ -621,4 +626,8 @@
- long line, column;
- cursor_position(state, &line, &column);
-
- VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ VALUE warning;
+ if (state->parser) { // line and columns can't be accurate in resumable
+ warning = rb_utf8_str_new_cstr(message);
+ } else {
+ long line, column;
+ cursor_position(state, &line, &column);
+ warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ }
@@ -768 +777 @@
-json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
+json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos)
@@ -774,0 +784,5 @@
+ // An incomplete comment suspends a resumable parse by rewinding the cursor
+ // and throwing. Callers that already consumed a token not yet committed to
+ // the frame stack pass resume_pos so the rewind re-reads that token too.
+ // Non-resumable error positions keep pointing at the comment either way.
+ const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start;
@@ -779,2 +793,9 @@
- state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
- if (!state->cursor) {
+ const char *newline = memchr(state->cursor, '\n', state->end - state->cursor);
+ if (!newline) {
+ // state->parser marks resumable mode, where the buffer end is only a
+ // chunk boundary: the terminating newline may still arrive, so leave
+ // the comment unterminated instead of consuming to end as a one-shot
+ // parse would.
+ if (state->parser) {
+ raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos);
+ }
@@ -783 +804 @@
- state->cursor++;
+ state->cursor = newline + 1;
@@ -793 +814 @@
- raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos);
@@ -805 +826 @@
- raise_parse_error_at("unexpected token %s", state, start, eos(state));
+ raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state));
@@ -816 +837 @@
-json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos)
@@ -851 +872 @@
- json_eat_comments(state, config);
+ json_eat_comments(state, config, resume_pos);
@@ -859,0 +881,6 @@
+ALWAYS_INLINE(static) void
+json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+{
+ json_eat_whitespace_resume_at(state, config, include_comments, NULL);
+}
+
@@ -1132,0 +1160,7 @@
+ // If the value is so small that it definitely underflows to 0.0, return early
+ // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl.
+ // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2,
+ // so it rounds to 0 in IEEE 754 round-to-nearest.
+ if (RB_UNLIKELY(mantissa_digits + exponent < -324)) {
+ return rb_float_new(negative ? -0.0 : 0.0);
+ }
@@ -1432 +1466 @@
-static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
+static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable)
@@ -1488,0 +1523,10 @@
+ // A number touching the end of the buffer may still grow in a later chunk,
+ // so the caller will rewind and wait. Decoding it now would build a value
+ // -- for a long run of digits, an expensive bignum -- only to discard it,
+ // and repeating that on every resumed chunk is quadratic in the number's
+ // length. The digit scan above already advanced the cursor, which is all
+ // the caller needs to detect the incomplete number.
+ if (RB_UNLIKELY(resumable && eos(state))) {
+ return Qundef;
+ }
+
@@ -1565,0 +1610,7 @@
+ // A trailing comma lands us here expecting an element but finding the
+ // closing bracket; hand off to ARRAY_COMMA to close. An empty array
+ // closes inline at '[', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') {
+ goto JSON_PHASE_ARRAY_COMMA;
+ }
+
@@ -1606 +1657 @@
- value = json_parse_number(state, config, true, value_start);
+ value = json_parse_number(state, config, true, value_start, resumable);
@@ -1629 +1680 @@
- value = json_parse_number(state, config, false, value_start);
+ value = json_parse_number(state, config, false, value_start, resumable);
@@ -1661 +1712,3 @@
- json_eat_whitespace(state, config, true);
+ // The '[' is consumed but its frame is only pushed below, so a
+ // comment suspending here must resume from the bracket.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1690 +1743,2 @@
- json_eat_whitespace(state, config, true);
+ // Same as '[': the frame is only pushed below.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1747,0 +1802,7 @@
+ // A trailing comma lands us here expecting a key but finding the closing
+ // brace; hand off to OBJECT_COMMA to close. An empty object closes inline
+ // at '{', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && peek(state) == '}') {
+ goto JSON_PHASE_OBJECT_COMMA;
+ }
+
@@ -1810,7 +1871,4 @@
- if (config->allow_trailing_comma) {
- json_eat_whitespace(state, config, true);
- if (peek(state) == ']') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_ARRAY_COMMA;
- }
- }
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer.
@@ -1855,9 +1913,4 @@
- json_eat_whitespace(state, config, true);
-
- if (config->allow_trailing_comma) {
- if (peek(state) == '}') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_OBJECT_COMMA;
- }
- }
-
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer.
@@ -2183 +2236 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -2268 +2321 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -2521,0 +2575 @@
+ parser->state.start = parser->state.cursor = parser->state.end = 0;
@@ -2618 +2672,6 @@
- // Copy the value stack as we need to mutate it.
+ // Copy the value stack as we need to mutate it. The collapse loop folds each
+ // open container by popping its entries and pushing the single result, so a
+ // parent always reclaims its child's slot; head exceeds its live size by at
+ // most one, either for the missing-value placeholder pushed below or for the
+ // result of folding an empty innermost container. That one spare slot keeps
+ // rvalue_stack_push from growing (reallocating) this ALLOCV buffer.
@@ -2620,3 +2679,3 @@
- parser.value_stack.capa = (capa + missing_object_value);
- VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
- MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
+ parser.value_stack.capa = capa + 1;
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa);
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa);
@@ -2715 +2774 @@
- * call-seq: value? -> true or false
+ * call-seq: eos? -> true or false
@@ -2725,0 +2785,35 @@
+ * call-seq: partial_value? -> true or false
+ *
+ * Returns whether a document is currently under construction: an unclosed
+ * container, a key awaiting its value, etc.
+ *
+ * It answers the same question as <tt>!partial_value.nil?</tt>, but as a
+ * cheap predicate on the parser's internal state, without materializing the
+ * partially parsed Ruby objects:
+ * parser << '{"a":1,'
+ * parser.parse # => false
+ * parser.partial_value? # => true
+ *
+ * A fully parsed document whose value hasn't been retrieved yet is not under
+ * construction: #value? returns true and #partial_value? returns false.
+ */
+static VALUE cResumableParser_partial_value_p(VALUE self)
+{
+ JSON_ResumableParser *parser = cResumableParser_get(self);
+
+ // Mirror of #value?: values on the stack while the document isn't DONE
+ // belong to a partially built document. A container whose first key or
+ // element hasn't been parsed yet has no frame nor value registered (the
+ // tokenizer rewinds to the container start on EOS), so that state is
+ // observable through the buffer (#eos?/#rest) instead, keeping this
+ // predicate consistent with #partial_value returning nil.
+ if (parser->value_stack.head > 0) {
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
+ if (frame->phase != JSON_PHASE_DONE) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
@@ -2780,0 +2875 @@
+ rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0);
@@ -2814,0 +2910 @@
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
@@ -2815,0 +2912 @@
+#endif
lib/json.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json.rb 2026-08-10 02:35:37.553390265 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json.rb 2026-08-10 02:35:37.748391135 +0000
@@ -124 +124,3 @@
-# defaults to +100+; specify +false+ to disable depth checking.
+# defaults to +100+;
+# You can set it to +false+ to disable depth checking entirely, but that is dangerous
+# when parsing untrusted input.
@@ -126 +128 @@
-# With the default, +false+:
+# With the default, +100+:
@@ -386,0 +389,9 @@
+# With +false+:
+# obj = []
+# obj[0] = obj
+# # Raises SystemStackError: stack level too deep
+# JSON.generate(obj, max_nesting: false)
+#
+# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program
+# in an unrecoverable state. It is discouraged.
+#
@@ -411 +421,0 @@
-# defaults to the empty \String, <tt>''</tt>;
@@ -418,0 +429,5 @@
+# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a
+# hash are sorted when generating the output; defaults to <tt>false</tt>.
+# When +true+, keys are sorted lexicographically. When a \Proc, it receives
+# the entire \Hash and must return a \Hash with its pairs in the desired
+# order, allowing for arbitrary sort orders.
lib/json/common.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json/common.rb 2026-08-10 02:35:37.555390274 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json/common.rb 2026-08-10 02:35:37.752391153 +0000
@@ -157,0 +158,9 @@
+
+ # The default proc used when the +sort_keys+ generation option is +true+.
+ # It returns a new hash with the entries sorted by their keys.
+ sort_keys_proc = ->(hash) { hash.sort.to_h }
+ if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda)
+ sort_keys_proc = Ractor.shareable_lambda(&sort_keys_proc)
+ end
+ generator::State.default_sort_keys_proc = sort_keys_proc
+
lib/json/ext.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json/ext.rb 2026-08-10 02:35:37.556390279 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json/ext.rb 2026-08-10 02:35:37.752391153 +0000
@@ -43,0 +44,26 @@
+ if defined?(ResumableParser) # Not yet available on JRuby
+ class ResumableParser
+ # Returns whether the parser is entirely done: no unconsumed bytes in
+ # the buffer, no document under construction and no parsed value
+ # awaiting retrieval.
+ #
+ # The main use case is detecting a truncated stream once the input is
+ # exhausted:
+ #
+ # loop do
+ # begin
+ # parser << socket.readpartial(4096)
+ # rescue EOFError
+ # break
+ # end
+ # while parser.parse
+ # process(parser.value)
+ # end
+ # end
+ # warn "stream was truncated" unless parser.empty?
+ def empty?
+ eos? && !partial_value? && !value?
+ end
+ end
+ end
+
lib/json/ext/generator/state.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json/ext/generator/state.rb 2026-08-10 02:35:37.556390279 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json/ext/generator/state.rb 2026-08-10 02:35:37.752391153 +0000
@@ -56,0 +57 @@
+ sort_keys: sort_keys
lib/json/truffle_ruby/generator.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:37.556390279 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:37.753391158 +0000
@@ -113,0 +114,2 @@
+ singleton_class.attr_accessor :default_sort_keys_proc # :nodoc:
+
@@ -166,0 +169 @@
+ @sort_keys = false
@@ -201,0 +205,27 @@
+ # Controls key sorting in the generated JSON. If set to +true+, object
+ # keys are sorted by key lexicographically. If set to a Proc, it
+ # receives the entire Hash and must return a Hash with its pairs in the
+ # desired order.
+ attr_reader :sort_keys
+
+ def sort_keys=(value) # :nodoc:
+ type_error = false
+ @sort_keys = case value
+ when Proc
+ value
+ when true
+ State.default_sort_keys_proc
+ when nil, false
+ false
+ else
+ type_error = true
+ false
+ end
+
+ if type_error
+ raise TypeError, "The `sort_keys` argument must be a boolean or a Proc"
+ end
+
+ @sort_keys
+ end
+
@@ -287,0 +318 @@
+ self.sort_keys = opts[:sort_keys] if opts.key?(:sort_keys)
@@ -352 +383 @@
- !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj)
+ !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys
@@ -354,0 +386,4 @@
+ if @sort_keys
+ obj = @sort_keys.call(obj)
+ end
+
lib/json/version.rb
--- /tmp/d20260810-674-j7mh5l/json-2.20.0/lib/json/version.rb 2026-08-10 02:35:37.557390283 +0000
+++ /tmp/d20260810-674-j7mh5l/json-2.21.2/lib/json/version.rb 2026-08-10 02:35:37.753391158 +0000
@@ -4 +4 @@
- VERSION = '2.20.0'
+ VERSION = '2.21.2' |
Contributor
gem compare --diff json 2.20.0 2.21.2Compared versions: ["2.20.0", "2.21.2"]
DIFFERENT files:
2.20.0->2.21.2:
* Changed:
CHANGES.md
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/CHANGES.md 2026-08-10 02:35:39.122093418 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/CHANGES.md 2026-08-10 02:35:39.133093341 +0000
@@ -4,0 +5,16 @@
+### 2026-07-31 (2.21.2)
+
+* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc].
+
+### 2026-07-13 (2.21.1)
+
+* Fix a compilation issue on Window and Microsoft Visual C++.
+
+### 2026-07-12 (2.21.0)
+
+* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block.
+* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`.
+* Numerous correctness and performance fixes for `JSON::ResumableParser`.
+* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers.
+* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`.
+
README.md
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/README.md 2026-08-10 02:35:39.122093418 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/README.md 2026-08-10 02:35:39.134093334 +0000
@@ -88 +88 @@
-JSON.generate(Position.new(1, 2)) # => Position not allowed in JSON (JSON::GeneratorError)
+JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError)
@@ -120 +120 @@
-coder = JSON::Combining.new do |object, is_object_key|
+coder = JSON::Coder.new do |object, is_object_key|
@@ -123,2 +123,2 @@
- if !string.valid_encoding? || string.encoding != Encoding::UTF_8
- Base64.encode64(string)
+ if !object.valid_encoding? || object.encoding != Encoding::UTF_8
+ Base64.encode64(object)
@@ -126 +126 @@
- string
+ object
ext/json/ext/generator/generator.c
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/ext/json/ext/generator/generator.c 2026-08-10 02:35:39.124093404 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/ext/json/ext/generator/generator.c 2026-08-10 02:35:39.270092384 +0000
@@ -36,0 +37 @@
+ VALUE sort_keys;
@@ -39 +40 @@
-static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8;
+static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc;
@@ -43 +44 @@
- sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json;
+ sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_escape_slash, sym_strict, sym_as_json, sym_sort_keys;
@@ -711,0 +713 @@
+ rb_gc_mark_movable(state->sort_keys);
@@ -722,0 +725 @@
+ state->sort_keys = rb_gc_location(state->sort_keys);
@@ -742 +745 @@
- .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -771,0 +775 @@
+ RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys);
@@ -1052,0 +1057,5 @@
+ if (RB_UNLIKELY(data->state->sort_keys)) {
+ obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil);
+ Check_Type(obj, T_HASH);
+ }
+
@@ -1378,0 +1388 @@
+ RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys);
@@ -1724,0 +1735,49 @@
+static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc)
+{
+ if (!rb_obj_is_proc(proc)) {
+ rb_raise(rb_eTypeError, "sort_key_proc must be a Proc");
+ }
+ return default_sort_keys_proc = proc;
+}
+
+static VALUE normalize_sort_keys(VALUE value)
+{
+ if (rb_obj_is_proc(value)) {
+ return value;
+ } else if (value == Qtrue) {
+ return default_sort_keys_proc;
+ } else if (RTEST(value)) {
+ rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc");
+ } else {
+ return Qfalse;
+ }
+}
+
+/*
+ * call-seq: sort_keys
+ *
+ * Get the value of sort_keys.
+ */
+static VALUE cState_sort_keys_p(VALUE self)
+{
+ GET_STATE(self);
+ return state->sort_keys;
+}
+
+/*
+ * call-seq: sort_keys=(value)
+ *
+ * value is a boolean or a proc. If the value is the boolean true, object keys
+ * will be sorted lexicographically in ascending order.
+ *
+ * If the value is a proc, it receives the entire Hash and must return a Hash
+ * with its pairs in the desired order, allowing for arbitrary sorting.
+ */
+static VALUE cState_sort_keys_set(VALUE self, VALUE value)
+{
+ rb_check_frozen(self);
+ GET_STATE(self);
+ RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value));
+ return Qnil;
+}
+
@@ -1834,0 +1894,3 @@
+ else if (key == sym_sort_keys) {
+ state_write_value(data, &state->sort_keys, normalize_sort_keys(val));
+ }
@@ -1911,0 +1974,2 @@
+ rb_global_variable(&default_sort_keys_proc);
+
@@ -1920,0 +1985,2 @@
+ rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1);
+
@@ -1959,0 +2026,2 @@
+ rb_define_method(cState, "sort_keys", cState_sort_keys_p, 0);
+ rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1);
@@ -1988,0 +2057 @@
+ sym_sort_keys = ID2SYM(rb_intern("sort_keys"));
ext/json/ext/json.h
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/ext/json/ext/json.h 2026-08-10 02:35:39.124093404 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/ext/json/ext/json.h 2026-08-10 02:35:39.270092384 +0000
@@ -33,0 +34,4 @@
+#ifndef RUBY_TYPED_THREAD_SAFE_FREE
+#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY
+#endif
+
ext/json/ext/parser/extconf.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:39.124093404 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/ext/json/ext/parser/extconf.rb 2026-08-10 02:35:39.270092384 +0000
@@ -18,16 +17,0 @@
-def have_builtin_func(name, check_expr, opt = "", &b)
- checking_for checking_message(name.funcall_style, nil, opt) do
- if try_compile(<<SRC, opt, &b)
-int foo;
-int main() { #{check_expr}; return 0; }
-SRC
- $defs.push(format("-DHAVE_BUILTIN_%s", name.tr_cpp))
- true
- else
- false
- end
- end
-end
-
-have_builtin_func("__builtin_clzll", "__builtin_clzll(0)")
-
@@ -47,0 +32,6 @@
+
+# Disable function outlining on clang to prevent some of the repeated instructions
+# in json_eat_whitespace being outlined into function calls.
+# Note: This verifies '-mno-outline' is accepted as a valid compiler flag
+# and will not pass it if unsupported.
+append_cflags("-mno-outline")
ext/json/ext/parser/parser.c
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/ext/json/ext/parser/parser.c 2026-08-10 02:35:39.126093390 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/ext/json/ext/parser/parser.c 2026-08-10 02:35:39.271092377 +0000
@@ -8 +8,4 @@
-static ID i_new, i_try_convert, i_uminus, i_encode, i_at_line, i_at_column;
+static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column;
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
+static ID i_uminus;
+#endif
@@ -317 +320 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -514 +517 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE,
@@ -588,0 +592,2 @@
+ JSON_ASSERT(!state->parser);
+ JSON_ASSERT(state->cursor);
@@ -621,4 +626,8 @@
- long line, column;
- cursor_position(state, &line, &column);
-
- VALUE warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ VALUE warning;
+ if (state->parser) { // line and columns can't be accurate in resumable
+ warning = rb_utf8_str_new_cstr(message);
+ } else {
+ long line, column;
+ cursor_position(state, &line, &column);
+ warning = rb_sprintf("%s at line %ld column %ld", message, line, column);
+ }
@@ -768 +777 @@
-json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config)
+json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos)
@@ -774,0 +784,5 @@
+ // An incomplete comment suspends a resumable parse by rewinding the cursor
+ // and throwing. Callers that already consumed a token not yet committed to
+ // the frame stack pass resume_pos so the rewind re-reads that token too.
+ // Non-resumable error positions keep pointing at the comment either way.
+ const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start;
@@ -779,2 +793,9 @@
- state->cursor = memchr(state->cursor, '\n', state->end - state->cursor);
- if (!state->cursor) {
+ const char *newline = memchr(state->cursor, '\n', state->end - state->cursor);
+ if (!newline) {
+ // state->parser marks resumable mode, where the buffer end is only a
+ // chunk boundary: the terminating newline may still arrive, so leave
+ // the comment unterminated instead of consuming to end as a one-shot
+ // parse would.
+ if (state->parser) {
+ raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos);
+ }
@@ -783 +804 @@
- state->cursor++;
+ state->cursor = newline + 1;
@@ -793 +814 @@
- raise_eos_error_at("unterminated comment, expected closing '*/'", state, start);
+ raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos);
@@ -805 +826 @@
- raise_parse_error_at("unexpected token %s", state, start, eos(state));
+ raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state));
@@ -816 +837 @@
-json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos)
@@ -851 +872 @@
- json_eat_comments(state, config);
+ json_eat_comments(state, config, resume_pos);
@@ -859,0 +881,6 @@
+ALWAYS_INLINE(static) void
+json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments)
+{
+ json_eat_whitespace_resume_at(state, config, include_comments, NULL);
+}
+
@@ -1132,0 +1160,7 @@
+ // If the value is so small that it definitely underflows to 0.0, return early
+ // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl.
+ // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2,
+ // so it rounds to 0 in IEEE 754 round-to-nearest.
+ if (RB_UNLIKELY(mantissa_digits + exponent < -324)) {
+ return rb_float_new(negative ? -0.0 : 0.0);
+ }
@@ -1432 +1466 @@
-static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start)
+static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable)
@@ -1488,0 +1523,10 @@
+ // A number touching the end of the buffer may still grow in a later chunk,
+ // so the caller will rewind and wait. Decoding it now would build a value
+ // -- for a long run of digits, an expensive bignum -- only to discard it,
+ // and repeating that on every resumed chunk is quadratic in the number's
+ // length. The digit scan above already advanced the cursor, which is all
+ // the caller needs to detect the incomplete number.
+ if (RB_UNLIKELY(resumable && eos(state))) {
+ return Qundef;
+ }
+
@@ -1565,0 +1610,7 @@
+ // A trailing comma lands us here expecting an element but finding the
+ // closing bracket; hand off to ARRAY_COMMA to close. An empty array
+ // closes inline at '[', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') {
+ goto JSON_PHASE_ARRAY_COMMA;
+ }
+
@@ -1606 +1657 @@
- value = json_parse_number(state, config, true, value_start);
+ value = json_parse_number(state, config, true, value_start, resumable);
@@ -1629 +1680 @@
- value = json_parse_number(state, config, false, value_start);
+ value = json_parse_number(state, config, false, value_start, resumable);
@@ -1661 +1712,3 @@
- json_eat_whitespace(state, config, true);
+ // The '[' is consumed but its frame is only pushed below, so a
+ // comment suspending here must resume from the bracket.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1690 +1743,2 @@
- json_eat_whitespace(state, config, true);
+ // Same as '[': the frame is only pushed below.
+ json_eat_whitespace_resume_at(state, config, true, value_start);
@@ -1747,0 +1802,7 @@
+ // A trailing comma lands us here expecting a key but finding the closing
+ // brace; hand off to OBJECT_COMMA to close. An empty object closes inline
+ // at '{', so this position is only reached after a ','.
+ if (config->allow_trailing_comma && peek(state) == '}') {
+ goto JSON_PHASE_OBJECT_COMMA;
+ }
+
@@ -1810,7 +1871,4 @@
- if (config->allow_trailing_comma) {
- json_eat_whitespace(state, config, true);
- if (peek(state) == ']') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_ARRAY_COMMA;
- }
- }
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer.
@@ -1855,9 +1913,4 @@
- json_eat_whitespace(state, config, true);
-
- if (config->allow_trailing_comma) {
- if (peek(state) == '}') {
- // Trailing comma: stay in COMMA to close on the next iteration.
- goto JSON_PHASE_OBJECT_COMMA;
- }
- }
-
+ // Commit the phase before eating the whitespace that follows: an
+ // incomplete comment there would suspend the parse, and a phase not
+ // yet advanced past the ',' would drop it on resume. A trailing comma
+ // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer.
@@ -2183 +2236 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE,
@@ -2268 +2321 @@
- .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE,
+ .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE,
@@ -2521,0 +2575 @@
+ parser->state.start = parser->state.cursor = parser->state.end = 0;
@@ -2618 +2672,6 @@
- // Copy the value stack as we need to mutate it.
+ // Copy the value stack as we need to mutate it. The collapse loop folds each
+ // open container by popping its entries and pushing the single result, so a
+ // parent always reclaims its child's slot; head exceeds its live size by at
+ // most one, either for the missing-value placeholder pushed below or for the
+ // result of folding an empty innermost container. That one spare slot keeps
+ // rvalue_stack_push from growing (reallocating) this ALLOCV buffer.
@@ -2620,3 +2679,3 @@
- parser.value_stack.capa = (capa + missing_object_value);
- VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, capa + missing_object_value);
- MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, parser.value_stack.capa);
+ parser.value_stack.capa = capa + 1;
+ VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa);
+ MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa);
@@ -2715 +2774 @@
- * call-seq: value? -> true or false
+ * call-seq: eos? -> true or false
@@ -2725,0 +2785,35 @@
+ * call-seq: partial_value? -> true or false
+ *
+ * Returns whether a document is currently under construction: an unclosed
+ * container, a key awaiting its value, etc.
+ *
+ * It answers the same question as <tt>!partial_value.nil?</tt>, but as a
+ * cheap predicate on the parser's internal state, without materializing the
+ * partially parsed Ruby objects:
+ * parser << '{"a":1,'
+ * parser.parse # => false
+ * parser.partial_value? # => true
+ *
+ * A fully parsed document whose value hasn't been retrieved yet is not under
+ * construction: #value? returns true and #partial_value? returns false.
+ */
+static VALUE cResumableParser_partial_value_p(VALUE self)
+{
+ JSON_ResumableParser *parser = cResumableParser_get(self);
+
+ // Mirror of #value?: values on the stack while the document isn't DONE
+ // belong to a partially built document. A container whose first key or
+ // element hasn't been parsed yet has no frame nor value registered (the
+ // tokenizer rewinds to the container start on EOS), so that state is
+ // observable through the buffer (#eos?/#rest) instead, keeping this
+ // predicate consistent with #partial_value returning nil.
+ if (parser->value_stack.head > 0) {
+ json_frame *frame = json_frame_stack_peek(&parser->frames);
+ if (frame->phase != JSON_PHASE_DONE) {
+ return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
@@ -2780,0 +2875 @@
+ rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0);
@@ -2814,0 +2910 @@
+#ifndef HAVE_RB_STR_TO_INTERNED_STR
@@ -2815,0 +2912 @@
+#endif
lib/json.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json.rb 2026-08-10 02:35:39.128093376 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json.rb 2026-08-10 02:35:39.273092363 +0000
@@ -124 +124,3 @@
-# defaults to +100+; specify +false+ to disable depth checking.
+# defaults to +100+;
+# You can set it to +false+ to disable depth checking entirely, but that is dangerous
+# when parsing untrusted input.
@@ -126 +128 @@
-# With the default, +false+:
+# With the default, +100+:
@@ -386,0 +389,9 @@
+# With +false+:
+# obj = []
+# obj[0] = obj
+# # Raises SystemStackError: stack level too deep
+# JSON.generate(obj, max_nesting: false)
+#
+# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program
+# in an unrecoverable state. It is discouraged.
+#
@@ -411 +421,0 @@
-# defaults to the empty \String, <tt>''</tt>;
@@ -418,0 +429,5 @@
+# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a
+# hash are sorted when generating the output; defaults to <tt>false</tt>.
+# When +true+, keys are sorted lexicographically. When a \Proc, it receives
+# the entire \Hash and must return a \Hash with its pairs in the desired
+# order, allowing for arbitrary sort orders.
lib/json/common.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json/common.rb 2026-08-10 02:35:39.131093355 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json/common.rb 2026-08-10 02:35:39.275092349 +0000
@@ -157,0 +158,9 @@
+
+ # The default proc used when the +sort_keys+ generation option is +true+.
+ # It returns a new hash with the entries sorted by their keys.
+ sort_keys_proc = ->(hash) { hash.sort.to_h }
+ if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda)
+ sort_keys_proc = Ractor.shareable_lambda(&sort_keys_proc)
+ end
+ generator::State.default_sort_keys_proc = sort_keys_proc
+
lib/json/ext.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json/ext.rb 2026-08-10 02:35:39.132093348 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json/ext.rb 2026-08-10 02:35:39.275092349 +0000
@@ -43,0 +44,26 @@
+ if defined?(ResumableParser) # Not yet available on JRuby
+ class ResumableParser
+ # Returns whether the parser is entirely done: no unconsumed bytes in
+ # the buffer, no document under construction and no parsed value
+ # awaiting retrieval.
+ #
+ # The main use case is detecting a truncated stream once the input is
+ # exhausted:
+ #
+ # loop do
+ # begin
+ # parser << socket.readpartial(4096)
+ # rescue EOFError
+ # break
+ # end
+ # while parser.parse
+ # process(parser.value)
+ # end
+ # end
+ # warn "stream was truncated" unless parser.empty?
+ def empty?
+ eos? && !partial_value? && !value?
+ end
+ end
+ end
+
lib/json/ext/generator/state.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json/ext/generator/state.rb 2026-08-10 02:35:39.132093348 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json/ext/generator/state.rb 2026-08-10 02:35:39.275092349 +0000
@@ -56,0 +57 @@
+ sort_keys: sort_keys
lib/json/truffle_ruby/generator.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:39.132093348 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json/truffle_ruby/generator.rb 2026-08-10 02:35:39.275092349 +0000
@@ -113,0 +114,2 @@
+ singleton_class.attr_accessor :default_sort_keys_proc # :nodoc:
+
@@ -166,0 +169 @@
+ @sort_keys = false
@@ -201,0 +205,27 @@
+ # Controls key sorting in the generated JSON. If set to +true+, object
+ # keys are sorted by key lexicographically. If set to a Proc, it
+ # receives the entire Hash and must return a Hash with its pairs in the
+ # desired order.
+ attr_reader :sort_keys
+
+ def sort_keys=(value) # :nodoc:
+ type_error = false
+ @sort_keys = case value
+ when Proc
+ value
+ when true
+ State.default_sort_keys_proc
+ when nil, false
+ false
+ else
+ type_error = true
+ false
+ end
+
+ if type_error
+ raise TypeError, "The `sort_keys` argument must be a boolean or a Proc"
+ end
+
+ @sort_keys
+ end
+
@@ -287,0 +318 @@
+ self.sort_keys = opts[:sort_keys] if opts.key?(:sort_keys)
@@ -352 +383 @@
- !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj)
+ !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys
@@ -354,0 +386,4 @@
+ if @sort_keys
+ obj = @sort_keys.call(obj)
+ end
+
lib/json/version.rb
--- /tmp/d20260810-467-1d7sdh/json-2.20.0/lib/json/version.rb 2026-08-10 02:35:39.132093348 +0000
+++ /tmp/d20260810-467-1d7sdh/json-2.21.2/lib/json/version.rb 2026-08-10 02:35:39.275092349 +0000
@@ -4 +4 @@
- VERSION = '2.20.0'
+ VERSION = '2.21.2' |
Contributor
gem compare parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT date:
3.3.11.1: 2026-03-27 00:00:00 UTC
3.3.12.0: 2026-07-16 00:00:00 UTC
DIFFERENT metadata:
3.3.11.1: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.11.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.11.1", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.11.1"}
3.3.12.0: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0"}
DIFFERENT version:
3.3.11.1: 3.3.11.1
3.3.12.0: 3.3.12.0
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb +1/-1
lib/parser/version.rb +1/-1 |
1 similar comment
Contributor
gem compare parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT date:
3.3.11.1: 2026-03-27 00:00:00 UTC
3.3.12.0: 2026-07-16 00:00:00 UTC
DIFFERENT metadata:
3.3.11.1: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.11.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.11.1", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.11.1"}
3.3.12.0: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0"}
DIFFERENT version:
3.3.11.1: 3.3.11.1
3.3.12.0: 3.3.12.0
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb +1/-1
lib/parser/version.rb +1/-1 |
Contributor
gem compare language_server-protocol 3.17.0.5 3.17.0.6Compared versions: ["3.17.0.5", "3.17.0.6"]
DIFFERENT rubygems_version:
3.17.0.5: 3.6.8
3.17.0.6: 4.0.10
DIFFERENT version:
3.17.0.5: 3.17.0.5
3.17.0.6: 3.17.0.6
DIFFERENT files:
3.17.0.5->3.17.0.6:
* Added:
lib/language_server/protocol/constant/lsp_error_codes.rb +41/-0
lib/language_server/protocol/constant/trace_values.rb +20/-0
lib/language_server/protocol/interface/base_symbol_information.rb +68/-0
lib/language_server/protocol/interface/did_change_configuration_registration_options.rb +30/-0
lib/language_server/protocol/interface/document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/file_operation_client_capabilities.rb +95/-0
lib/language_server/protocol/interface/file_operation_options.rb +83/-0
lib/language_server/protocol/interface/general_client_capabilities.rb +91/-0
lib/language_server/protocol/interface/inline_value.rb +88/-0
lib/language_server/protocol/interface/markdown_client_capabilities.rb +59/-0
lib/language_server/protocol/interface/prepare_rename_result.rb +69/-0
lib/language_server/protocol/interface/resource_operation.rb +47/-0
lib/language_server/protocol/interface/text_document_filter.rb +69/-0
lib/language_server/protocol/interface/type_hierarchy_client_capabilities.rb +38/-0
lib/language_server/protocol/interface/window_client_capabilities.rb +63/-0
lib/language_server/protocol/interface/workspace_client_capabilities.rb +176/-0
lib/language_server/protocol/interface/workspace_document_diagnostic_report.rb +89/-0
lib/language_server/protocol/interface/workspace_folders_initialize_params.rb +39/-0
sig/language_server/protocol/constant/code_action_kind.rbs +85/-0
sig/language_server/protocol/constant/code_action_trigger_kind.rbs +22/-0
sig/language_server/protocol/constant/completion_item_kind.rbs +36/-0
sig/language_server/protocol/constant/completion_item_tag.rbs +16/-0
sig/language_server/protocol/constant/completion_trigger_kind.rbs +26/-0
sig/language_server/protocol/constant/diagnostic_severity.rbs +24/-0
sig/language_server/protocol/constant/diagnostic_tag.rbs +24/-0
sig/language_server/protocol/constant/document_diagnostic_report_kind.rbs +21/-0
sig/language_server/protocol/constant/document_highlight_kind.rbs +23/-0
sig/language_server/protocol/constant/error_codes.rbs +73/-0
sig/language_server/protocol/constant/failure_handling_kind.rbs +30/-0
sig/language_server/protocol/constant/file_change_type.rbs +23/-0
sig/language_server/protocol/constant/file_operation_pattern_kind.rbs +20/-0
sig/language_server/protocol/constant/folding_range_kind.rbs +24/-0
sig/language_server/protocol/constant/initialize_error_codes.rbs +18/-0
sig/language_server/protocol/constant/inlay_hint_kind.rbs +19/-0
sig/language_server/protocol/constant/insert_text_format.rbs +25/-0
sig/language_server/protocol/constant/insert_text_mode.rbs +30/-0
sig/language_server/protocol/constant/lsp_error_codes.rbs +41/-0
sig/language_server/protocol/constant/markup_kind.rbs +23/-0
sig/language_server/protocol/constant/message_type.rbs +24/-0
sig/language_server/protocol/constant/moniker_kind.rbs +24/-0
sig/language_server/protocol/constant/notebook_cell_kind.rbs +19/-0
sig/language_server/protocol/constant/position_encoding_kind.rbs +32/-0
sig/language_server/protocol/constant/prepare_support_default_behavior.rbs +13/-0
sig/language_server/protocol/constant/resource_operation_kind.rbs +23/-0
sig/language_server/protocol/constant/semantic_token_modifiers.rbs +18/-0
sig/language_server/protocol/constant/semantic_token_types.rbs +35/-0
sig/language_server/protocol/constant/signature_help_trigger_kind.rbs +24/-0
sig/language_server/protocol/constant/symbol_kind.rbs +37/-0
sig/language_server/protocol/constant/symbol_tag.rbs +15/-0
sig/language_server/protocol/constant/text_document_save_reason.rbs +24/-0
sig/language_server/protocol/constant/text_document_sync_kind.rbs +27/-0
sig/language_server/protocol/constant/token_format.rbs +9/-0
sig/language_server/protocol/constant/trace_values.rbs +20/-0
sig/language_server/protocol/constant/uniqueness_level.rbs +31/-0
sig/language_server/protocol/constant/watch_kind.rbs +20/-0
sig/language_server/protocol/interface/annotated_text_edit.rbs +30/-0
sig/language_server/protocol/interface/apply_workspace_edit_params.rbs +25/-0
sig/language_server/protocol/interface/base_symbol_information.rbs +31/-0
sig/language_server/protocol/interface/call_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_item.rbs +46/-0
sig/language_server/protocol/interface/call_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_call.rbs +27/-0
sig/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/call_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/cancel_params.rbs +19/-0
sig/language_server/protocol/interface/change_annotation.rbs +30/-0
sig/language_server/protocol/interface/client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/code_action.rbs +46/-0
sig/language_server/protocol/interface/code_action_client_capabilities.rbs +40/-0
sig/language_server/protocol/interface/code_action_context.rbs +29/-0
sig/language_server/protocol/interface/code_action_options.rbs +28/-0
sig/language_server/protocol/interface/code_action_params.rbs +34/-0
sig/language_server/protocol/interface/code_action_registration_options.rbs +31/-0
sig/language_server/protocol/interface/code_description.rbs +24/-0
sig/language_server/protocol/interface/code_lens.rbs +32/-0
sig/language_server/protocol/interface/code_lens_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/code_lens_options.rbs +25/-0
sig/language_server/protocol/interface/code_lens_params.rbs +28/-0
sig/language_server/protocol/interface/code_lens_registration_options.rbs +28/-0
sig/language_server/protocol/interface/code_lens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/color.rbs +31/-0
sig/language_server/protocol/interface/color_information.rbs +25/-0
sig/language_server/protocol/interface/color_presentation.rbs +25/-0
sig/language_server/protocol/interface/color_presentation_params.rbs +34/-0
sig/language_server/protocol/interface/command.rbs +31/-0
sig/language_server/protocol/interface/completion_client_capabilities.rbs +37/-0
sig/language_server/protocol/interface/completion_context.rbs +25/-0
sig/language_server/protocol/interface/completion_item.rbs +77/-0
sig/language_server/protocol/interface/completion_item_label_details.rbs +27/-0
sig/language_server/protocol/interface/completion_list.rbs +29/-0
sig/language_server/protocol/interface/completion_options.rbs +34/-0
sig/language_server/protocol/interface/completion_params.rbs +34/-0
sig/language_server/protocol/interface/completion_registration_options.rbs +37/-0
sig/language_server/protocol/interface/configuration_item.rbs +22/-0
sig/language_server/protocol/interface/configuration_params.rbs +22/-0
sig/language_server/protocol/interface/create_file.rbs +31/-0
sig/language_server/protocol/interface/create_file_options.rbs +25/-0
sig/language_server/protocol/interface/create_files_params.rbs +25/-0
sig/language_server/protocol/interface/declaration_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/declaration_options.rbs +19/-0
sig/language_server/protocol/interface/declaration_params.rbs +28/-0
sig/language_server/protocol/interface/declaration_registration_options.rbs +25/-0
sig/language_server/protocol/interface/definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/definition_options.rbs +22/-0
sig/language_server/protocol/interface/definition_params.rbs +31/-0
sig/language_server/protocol/interface/definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/delete_file.rbs +31/-0
sig/language_server/protocol/interface/delete_file_options.rbs +25/-0
sig/language_server/protocol/interface/delete_files_params.rbs +25/-0
sig/language_server/protocol/interface/diagnostic.rbs +47/-0
sig/language_server/protocol/interface/diagnostic_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_options.rbs +33/-0
sig/language_server/protocol/interface/diagnostic_registration_options.rbs +39/-0
sig/language_server/protocol/interface/diagnostic_related_information.rbs +27/-0
sig/language_server/protocol/interface/diagnostic_server_cancellation_data.rbs +24/-0
sig/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/did_change_configuration_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/did_change_configuration_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_configuration_registration_options.rbs +19/-0
sig/language_server/protocol/interface/did_change_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_change_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/did_change_watched_files_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_params.rbs +22/-0
sig/language_server/protocol/interface/did_change_watched_files_registration_options.rbs +22/-0
sig/language_server/protocol/interface/did_change_workspace_folders_params.rbs +22/-0
sig/language_server/protocol/interface/did_close_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_close_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_open_notebook_document_params.rbs +27/-0
sig/language_server/protocol/interface/did_open_text_document_params.rbs +22/-0
sig/language_server/protocol/interface/did_save_notebook_document_params.rbs +24/-0
sig/language_server/protocol/interface/did_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/document_color_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/document_color_options.rbs +19/-0
sig/language_server/protocol/interface/document_color_params.rbs +28/-0
sig/language_server/protocol/interface/document_color_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_diagnostic_params.rbs +36/-0
sig/language_server/protocol/interface/document_diagnostic_report.rbs +37/-0
sig/language_server/protocol/interface/document_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/document_filter.rbs +34/-0
sig/language_server/protocol/interface/document_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_formatting_params.rbs +28/-0
sig/language_server/protocol/interface/document_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_highlight.rbs +27/-0
sig/language_server/protocol/interface/document_highlight_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_options.rbs +22/-0
sig/language_server/protocol/interface/document_highlight_params.rbs +31/-0
sig/language_server/protocol/interface/document_highlight_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_link.rbs +32/-0
sig/language_server/protocol/interface/document_link_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/document_link_options.rbs +25/-0
sig/language_server/protocol/interface/document_link_params.rbs +28/-0
sig/language_server/protocol/interface/document_link_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_on_type_formatting_options.rbs +25/-0
sig/language_server/protocol/interface/document_on_type_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_on_type_formatting_registration_options.rbs +28/-0
sig/language_server/protocol/interface/document_range_formatting_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_options.rbs +22/-0
sig/language_server/protocol/interface/document_range_formatting_params.rbs +31/-0
sig/language_server/protocol/interface/document_range_formatting_registration_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol.rbs +46/-0
sig/language_server/protocol/interface/document_symbol_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/document_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/document_symbol_registration_options.rbs +28/-0
sig/language_server/protocol/interface/execute_command_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/execute_command_options.rbs +25/-0
sig/language_server/protocol/interface/execute_command_params.rbs +28/-0
sig/language_server/protocol/interface/execute_command_registration_options.rbs +25/-0
sig/language_server/protocol/interface/execution_summary.rbs +22/-0
sig/language_server/protocol/interface/file_create.rbs +24/-0
sig/language_server/protocol/interface/file_delete.rbs +24/-0
sig/language_server/protocol/interface/file_event.rbs +25/-0
sig/language_server/protocol/interface/file_operation_client_capabilities.rbs +45/-0
sig/language_server/protocol/interface/file_operation_filter.rbs +28/-0
sig/language_server/protocol/interface/file_operation_options.rbs +39/-0
sig/language_server/protocol/interface/file_operation_pattern.rbs +31/-0
sig/language_server/protocol/interface/file_operation_pattern_options.rbs +24/-0
sig/language_server/protocol/interface/file_operation_registration_options.rbs +24/-0
sig/language_server/protocol/interface/file_rename.rbs +27/-0
sig/language_server/protocol/interface/file_system_watcher.rbs +22/-0
sig/language_server/protocol/interface/folding_range.rbs +38/-0
sig/language_server/protocol/interface/folding_range_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/folding_range_options.rbs +19/-0
sig/language_server/protocol/interface/folding_range_params.rbs +28/-0
sig/language_server/protocol/interface/folding_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/formatting_options.rbs +34/-0
sig/language_server/protocol/interface/full_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/general_client_capabilities.rbs +33/-0
sig/language_server/protocol/interface/hover.rbs +25/-0
sig/language_server/protocol/interface/hover_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/hover_options.rbs +22/-0
sig/language_server/protocol/interface/hover_params.rbs +28/-0
sig/language_server/protocol/interface/hover_registration_options.rbs +25/-0
sig/language_server/protocol/interface/hover_result.rbs +19/-0
sig/language_server/protocol/interface/implementation_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/implementation_options.rbs +19/-0
sig/language_server/protocol/interface/implementation_params.rbs +28/-0
sig/language_server/protocol/interface/implementation_registration_options.rbs +25/-0
sig/language_server/protocol/interface/initialize_error.rbs +23/-0
sig/language_server/protocol/interface/initialize_params.rbs +46/-0
sig/language_server/protocol/interface/initialize_result.rbs +25/-0
sig/language_server/protocol/interface/initialized_params.rbs +16/-0
sig/language_server/protocol/interface/inlay_hint.rbs +45/-0
sig/language_server/protocol/interface/inlay_hint_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_label_part.rbs +34/-0
sig/language_server/protocol/interface/inlay_hint_options.rbs +27/-0
sig/language_server/protocol/interface/inlay_hint_registration_options.rbs +33/-0
sig/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value.rbs +40/-0
sig/language_server/protocol/interface/inline_value_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/inline_value_context.rbs +25/-0
sig/language_server/protocol/interface/inline_value_evaluatable_expression.rbs +29/-0
sig/language_server/protocol/interface/inline_value_options.rbs +24/-0
sig/language_server/protocol/interface/inline_value_params.rbs +33/-0
sig/language_server/protocol/interface/inline_value_registration_options.rbs +30/-0
sig/language_server/protocol/interface/inline_value_text.rbs +27/-0
sig/language_server/protocol/interface/inline_value_variable_lookup.rbs +32/-0
sig/language_server/protocol/interface/inline_value_workspace_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/insert_replace_edit.rbs +30/-0
sig/language_server/protocol/interface/linked_editing_range_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/linked_editing_range_options.rbs +19/-0
sig/language_server/protocol/interface/linked_editing_range_params.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/linked_editing_ranges.rbs +27/-0
sig/language_server/protocol/interface/location.rbs +26/-0
sig/language_server/protocol/interface/location_link.rbs +32/-0
sig/language_server/protocol/interface/log_message_params.rbs +25/-0
sig/language_server/protocol/interface/markdown_client_capabilities.rbs +30/-0
sig/language_server/protocol/interface/markup_content.rbs +46/-0
sig/language_server/protocol/interface/message.rbs +19/-0
sig/language_server/protocol/interface/message_action_item.rbs +19/-0
sig/language_server/protocol/interface/moniker.rbs +33/-0
sig/language_server/protocol/interface/moniker_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/moniker_options.rbs +19/-0
sig/language_server/protocol/interface/moniker_params.rbs +28/-0
sig/language_server/protocol/interface/moniker_registration_options.rbs +22/-0
sig/language_server/protocol/interface/notebook_cell.rbs +37/-0
sig/language_server/protocol/interface/notebook_cell_array_change.rbs +31/-0
sig/language_server/protocol/interface/notebook_cell_text_document_filter.rbs +28/-0
sig/language_server/protocol/interface/notebook_document.rbs +36/-0
sig/language_server/protocol/interface/notebook_document_change_event.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_filter.rbs +32/-0
sig/language_server/protocol/interface/notebook_document_identifier.rbs +24/-0
sig/language_server/protocol/interface/notebook_document_sync_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/notebook_document_sync_options.rbs +37/-0
sig/language_server/protocol/interface/notebook_document_sync_registration_options.rbs +30/-0
sig/language_server/protocol/interface/notification_message.rbs +25/-0
sig/language_server/protocol/interface/optional_versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/parameter_information.rbs +26/-0
sig/language_server/protocol/interface/partial_result_params.rbs +19/-0
sig/language_server/protocol/interface/position.rbs +51/-0
sig/language_server/protocol/interface/prepare_rename_params.rbs +25/-0
sig/language_server/protocol/interface/prepare_rename_result.rbs +31/-0
sig/language_server/protocol/interface/previous_result_id.rbs +27/-0
sig/language_server/protocol/interface/progress_params.rbs +22/-0
sig/language_server/protocol/interface/publish_diagnostics_client_capabilities.rbs +34/-0
sig/language_server/protocol/interface/publish_diagnostics_params.rbs +28/-0
sig/language_server/protocol/interface/range.rbs +35/-0
sig/language_server/protocol/interface/reference_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/reference_context.rbs +23/-0
sig/language_server/protocol/interface/reference_options.rbs +22/-0
sig/language_server/protocol/interface/reference_params.rbs +34/-0
sig/language_server/protocol/interface/reference_registration_options.rbs +25/-0
sig/language_server/protocol/interface/registration.rbs +28/-0
sig/language_server/protocol/interface/registration_params.rbs +19/-0
sig/language_server/protocol/interface/regular_expressions_client_capabilities.rbs +27/-0
sig/language_server/protocol/interface/related_full_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rbs +30/-0
sig/language_server/protocol/interface/relative_pattern.rbs +29/-0
sig/language_server/protocol/interface/rename_file.rbs +34/-0
sig/language_server/protocol/interface/rename_file_options.rbs +25/-0
sig/language_server/protocol/interface/rename_files_params.rbs +25/-0
sig/language_server/protocol/interface/rename_options.rbs +25/-0
sig/language_server/protocol/interface/rename_params.rbs +31/-0
sig/language_server/protocol/interface/rename_registration_options.rbs +28/-0
sig/language_server/protocol/interface/request_message.rbs +28/-0
sig/language_server/protocol/interface/resource_operation.rbs +25/-0
sig/language_server/protocol/interface/response_error.rbs +25/-0
sig/language_server/protocol/interface/response_message.rbs +28/-0
sig/language_server/protocol/interface/save_options.rbs +22/-0
sig/language_server/protocol/interface/selection_range.rbs +26/-0
sig/language_server/protocol/interface/selection_range_client_capabilities.rbs +19/-0
sig/language_server/protocol/interface/selection_range_options.rbs +19/-0
sig/language_server/protocol/interface/selection_range_params.rbs +31/-0
sig/language_server/protocol/interface/selection_range_registration_options.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_client_capabilities.rbs +46/-0
sig/language_server/protocol/interface/semantic_tokens_delta.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_delta_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_delta_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_edit.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_legend.rbs +25/-0
sig/language_server/protocol/interface/semantic_tokens_options.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_params.rbs +28/-0
sig/language_server/protocol/interface/semantic_tokens_partial_result.rbs +22/-0
sig/language_server/protocol/interface/semantic_tokens_range_params.rbs +31/-0
sig/language_server/protocol/interface/semantic_tokens_registration_options.rbs +37/-0
sig/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/server_capabilities.rbs +125/-0
sig/language_server/protocol/interface/set_trace_params.rbs +19/-0
sig/language_server/protocol/interface/show_document_client_capabilities.rbs +24/-0
sig/language_server/protocol/interface/show_document_params.rbs +33/-0
sig/language_server/protocol/interface/show_document_result.rbs +24/-0
sig/language_server/protocol/interface/show_message_params.rbs +25/-0
sig/language_server/protocol/interface/show_message_request_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/show_message_request_params.rbs +25/-0
sig/language_server/protocol/interface/signature_help.rbs +30/-0
sig/language_server/protocol/interface/signature_help_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/signature_help_context.rbs +33/-0
sig/language_server/protocol/interface/signature_help_options.rbs +28/-0
sig/language_server/protocol/interface/signature_help_params.rbs +31/-0
sig/language_server/protocol/interface/signature_help_registration_options.rbs +31/-0
sig/language_server/protocol/interface/signature_information.rbs +33/-0
sig/language_server/protocol/interface/static_registration_options.rbs +23/-0
sig/language_server/protocol/interface/symbol_information.rbs +38/-0
sig/language_server/protocol/interface/text_document_change_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_client_capabilities.rbs +109/-0
sig/language_server/protocol/interface/text_document_content_change_event.rbs +29/-0
sig/language_server/protocol/interface/text_document_edit.rbs +28/-0
sig/language_server/protocol/interface/text_document_filter.rbs +43/-0
sig/language_server/protocol/interface/text_document_identifier.rbs +22/-0
sig/language_server/protocol/interface/text_document_item.rbs +32/-0
sig/language_server/protocol/interface/text_document_position_params.rbs +26/-0
sig/language_server/protocol/interface/text_document_registration_options.rbs +22/-0
sig/language_server/protocol/interface/text_document_save_registration_options.rbs +25/-0
sig/language_server/protocol/interface/text_document_sync_client_capabilities.rbs +28/-0
sig/language_server/protocol/interface/text_document_sync_options.rbs +31/-0
sig/language_server/protocol/interface/text_edit.rbs +25/-0
sig/language_server/protocol/interface/type_definition_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/type_definition_options.rbs +19/-0
sig/language_server/protocol/interface/type_definition_params.rbs +28/-0
sig/language_server/protocol/interface/type_definition_registration_options.rbs +25/-0
sig/language_server/protocol/interface/type_hierarchy_client_capabilities.rbs +22/-0
sig/language_server/protocol/interface/type_hierarchy_item.rbs +43/-0
sig/language_server/protocol/interface/type_hierarchy_options.rbs +24/-0
sig/language_server/protocol/interface/type_hierarchy_prepare_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_registration_options.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_subtypes_params.rbs +30/-0
sig/language_server/protocol/interface/type_hierarchy_supertypes_params.rbs +30/-0
sig/language_server/protocol/interface/unchanged_document_diagnostic_report.rbs +28/-0
sig/language_server/protocol/interface/unregistration.rbs +25/-0
sig/language_server/protocol/interface/unregistration_params.rbs +19/-0
sig/language_server/protocol/interface/versioned_notebook_document_identifier.rbs +27/-0
sig/language_server/protocol/interface/versioned_text_document_identifier.rbs +25/-0
sig/language_server/protocol/interface/will_save_text_document_params.rbs +25/-0
sig/language_server/protocol/interface/window_client_capabilities.rbs +25/-0
sig/language_server/protocol/interface/work_done_progress_begin.rbs +31/-0
sig/language_server/protocol/interface/work_done_progress_cancel_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_create_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_end.rbs +22/-0
sig/language_server/protocol/interface/work_done_progress_options.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_params.rbs +19/-0
sig/language_server/protocol/interface/work_done_progress_report.rbs +28/-0
sig/language_server/protocol/interface/workspace_client_capabilities.rbs +61/-0
sig/language_server/protocol/interface/workspace_diagnostic_params.rbs +33/-0
sig/language_server/protocol/interface/workspace_diagnostic_report.rbs +24/-0
sig/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rbs +24/-0
sig/language_server/protocol/interface/workspace_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_edit.rbs +39/-0
sig/language_server/protocol/interface/workspace_edit_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_folder.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_change_event.rbs +25/-0
sig/language_server/protocol/interface/workspace_folders_initialize_params.rbs +19/-0
sig/language_server/protocol/interface/workspace_folders_server_capabilities.rbs +22/-0
sig/language_server/protocol/interface/workspace_full_document_diagnostic_report.rbs +36/-0
sig/language_server/protocol/interface/workspace_symbol.rbs +41/-0
sig/language_server/protocol/interface/workspace_symbol_client_capabilities.rbs +31/-0
sig/language_server/protocol/interface/workspace_symbol_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_symbol_params.rbs +28/-0
sig/language_server/protocol/interface/workspace_symbol_registration_options.rbs +25/-0
sig/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rbs +33/-0
sig/language_server/protocol/transport/io/reader.rbs +18/-0
sig/language_server/protocol/transport/io/writer.rbs +18/-0
sig/language_server/protocol/transport/stdio/reader.rbs +11/-0
sig/language_server/protocol/transport/stdio/writer.rbs +11/-0
sig/language_server/protocol/version.rbs +5/-0
* Changed:
lib/language_server/protocol/constant.rb +4/-0
lib/language_server/protocol/constant/initialize_error_codes.rb +2/-0
lib/language_server/protocol/interface.rb +32/-4
lib/language_server/protocol/interface/annotated_text_edit.rb +12/-10
lib/language_server/protocol/interface/apply_workspace_edit_params.rb +3/-0
lib/language_server/protocol/interface/apply_workspace_edit_result.rb +9/-5
lib/language_server/protocol/interface/call_hierarchy_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/call_hierarchy_incoming_call.rb +6/-1
lib/language_server/protocol/interface/call_hierarchy_incoming_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_item.rb +12/-8
lib/language_server/protocol/interface/call_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_outgoing_call.rb +8/-2
lib/language_server/protocol/interface/call_hierarchy_outgoing_calls_params.rb +14/-9
lib/language_server/protocol/interface/call_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/call_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/cancel_params.rb +1/-1
lib/language_server/protocol/interface/change_annotation.rb +2/-0
lib/language_server/protocol/interface/client_capabilities.rb +10/-3
lib/language_server/protocol/interface/code_action.rb +23/-21
lib/language_server/protocol/interface/code_action_client_capabilities.rb +19/-3
lib/language_server/protocol/interface/code_action_context.rb +10/-9
lib/language_server/protocol/interface/code_action_options.rb +15/-10
lib/language_server/protocol/interface/code_action_params.rb +21/-21
lib/language_server/protocol/interface/code_action_registration_options.rb +18/-13
lib/language_server/protocol/interface/code_description.rb +3/-1
lib/language_server/protocol/interface/code_lens.rb +6/-7
lib/language_server/protocol/interface/code_lens_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/code_lens_options.rb +10/-7
lib/language_server/protocol/interface/code_lens_params.rb +15/-12
lib/language_server/protocol/interface/code_lens_registration_options.rb +13/-10
lib/language_server/protocol/interface/code_lens_workspace_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/color.rb +4/-4
lib/language_server/protocol/interface/color_information.rb +3/-0
lib/language_server/protocol/interface/color_presentation.rb +7/-8
lib/language_server/protocol/interface/color_presentation_params.rb +24/-21
lib/language_server/protocol/interface/command.rb +6/-0
lib/language_server/protocol/interface/completion_client_capabilities.rb +20/-12
lib/language_server/protocol/interface/completion_context.rb +3/-5
lib/language_server/protocol/interface/completion_item.rb +45/-34
lib/language_server/protocol/interface/completion_item_label_details.rb +6/-6
lib/language_server/protocol/interface/completion_list.rb +5/-4
lib/language_server/protocol/interface/completion_options.rb +24/-24
lib/language_server/protocol/interface/completion_params.rb +16/-14
lib/language_server/protocol/interface/completion_registration_options.rb +30/-27
lib/language_server/protocol/interface/configuration_params.rb +3/-0
lib/language_server/protocol/interface/create_file.rb +5/-3
lib/language_server/protocol/interface/create_files_params.rb +4/-2
lib/language_server/protocol/interface/declaration_client_capabilities.rb +6/-3
lib/language_server/protocol/interface/declaration_params.rb +2/-2
lib/language_server/protocol/interface/declaration_registration_options.rb +3/-3
lib/language_server/protocol/interface/definition_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/definition_options.rb +3/-0
lib/language_server/protocol/interface/definition_params.rb +5/-2
lib/language_server/protocol/interface/definition_registration_options.rb +6/-3
lib/language_server/protocol/interface/delete_file.rb +4/-2
lib/language_server/protocol/interface/delete_files_params.rb +4/-2
lib/language_server/protocol/interface/diagnostic.rb +20/-9
lib/language_server/protocol/interface/diagnostic_client_capabilities.rb +5/-5
lib/language_server/protocol/interface/diagnostic_options.rb +9/-7
lib/language_server/protocol/interface/diagnostic_registration_options.rb +12/-10
lib/language_server/protocol/interface/diagnostic_related_information.rb +3/-3
lib/language_server/protocol/interface/diagnostic_server_cancellation_data.rb +2/-0
lib/language_server/protocol/interface/diagnostic_workspace_client_capabilities.rb +5/-3
lib/language_server/protocol/interface/did_change_configuration_params.rb +3/-0
lib/language_server/protocol/interface/did_change_notebook_document_params.rb +14/-8
lib/language_server/protocol/interface/did_change_text_document_params.rb +12/-11
lib/language_server/protocol/interface/did_change_watched_files_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/did_change_watched_files_params.rb +3/-0
lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +1/-1
lib/language_server/protocol/interface/did_change_workspace_folders_params.rb +3/-0
lib/language_server/protocol/interface/did_close_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_close_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_open_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_open_text_document_params.rb +3/-0
lib/language_server/protocol/interface/did_save_notebook_document_params.rb +2/-0
lib/language_server/protocol/interface/did_save_text_document_params.rb +3/-0
lib/language_server/protocol/interface/document_color_client_capabilities.rb +3/-1
lib/language_server/protocol/interface/document_color_params.rb +15/-12
lib/language_server/protocol/interface/document_color_registration_options.rb +10/-10
lib/language_server/protocol/interface/document_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/document_diagnostic_report_partial_result.rb +3/-1
lib/language_server/protocol/interface/document_filter.rb +27/-14
lib/language_server/protocol/interface/document_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_highlight.rb +1/-1
lib/language_server/protocol/interface/document_highlight_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_highlight_options.rb +3/-0
lib/language_server/protocol/interface/document_highlight_params.rb +5/-2
lib/language_server/protocol/interface/document_highlight_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_link.rb +7/-6
lib/language_server/protocol/interface/document_link_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/document_link_options.rb +10/-7
lib/language_server/protocol/interface/document_link_params.rb +15/-12
lib/language_server/protocol/interface/document_link_registration_options.rb +13/-10
lib/language_server/protocol/interface/document_on_type_formatting_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_params.rb +3/-0
lib/language_server/protocol/interface/document_on_type_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_range_formatting_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/document_range_formatting_options.rb +3/-0
lib/language_server/protocol/interface/document_range_formatting_params.rb +13/-10
lib/language_server/protocol/interface/document_range_formatting_registration_options.rb +6/-3
lib/language_server/protocol/interface/document_symbol.rb +14/-12
lib/language_server/protocol/interface/document_symbol_client_capabilities.rb +8/-1
lib/language_server/protocol/interface/document_symbol_options.rb +12/-7
lib/language_server/protocol/interface/document_symbol_params.rb +15/-12
lib/language_server/protocol/interface/document_symbol_registration_options.rb +15/-10
lib/language_server/protocol/interface/execute_command_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/execute_command_options.rb +10/-7
lib/language_server/protocol/interface/execute_command_params.rb +13/-10
lib/language_server/protocol/interface/execute_command_registration_options.rb +8/-8
lib/language_server/protocol/interface/execution_summary.rb +1/-1
lib/language_server/protocol/interface/file_create.rb +2/-0
lib/language_server/protocol/interface/file_delete.rb +2/-0
lib/language_server/protocol/interface/file_event.rb +3/-3
lib/language_server/protocol/interface/file_operation_filter.rb +4/-2
lib/language_server/protocol/interface/file_operation_pattern.rb +6/-8
lib/language_server/protocol/interface/file_operation_pattern_options.rb +2/-0
lib/language_server/protocol/interface/file_operation_registration_options.rb +2/-0
lib/language_server/protocol/interface/file_rename.rb +2/-0
lib/language_server/protocol/interface/file_system_watcher.rb +4/-3
lib/language_server/protocol/interface/folding_range.rb +18/-22
lib/language_server/protocol/interface/folding_range_client_capabilities.rb +6/-2
lib/language_server/protocol/interface/folding_range_params.rb +15/-12
lib/language_server/protocol/interface/folding_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/formatting_options.rb +7/-1
lib/language_server/protocol/interface/full_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/hover.rb +2/-2
lib/language_server/protocol/interface/hover_client_capabilities.rb +2/-3
lib/language_server/protocol/interface/hover_options.rb +3/-0
lib/language_server/protocol/interface/hover_params.rb +3/-0
lib/language_server/protocol/interface/hover_registration_options.rb +6/-3
lib/language_server/protocol/interface/implementation_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/implementation_params.rb +2/-2
lib/language_server/protocol/interface/implementation_registration_options.rb +3/-3
lib/language_server/protocol/interface/initialize_error.rb +4/-0
lib/language_server/protocol/interface/initialize_params.rb +36/-24
lib/language_server/protocol/interface/initialize_result.rb +5/-0
lib/language_server/protocol/interface/inlay_hint.rb +2/-6
lib/language_server/protocol/interface/inlay_hint_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_label_part.rb +2/-0
lib/language_server/protocol/interface/inlay_hint_options.rb +9/-7
lib/language_server/protocol/interface/inlay_hint_params.rb +13/-11
lib/language_server/protocol/interface/inlay_hint_registration_options.rb +12/-10
lib/language_server/protocol/interface/inlay_hint_workspace_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/inline_value_client_capabilities.rb +3/-2
lib/language_server/protocol/interface/inline_value_context.rb +5/-3
lib/language_server/protocol/interface/inline_value_evaluatable_expression.rb +4/-6
lib/language_server/protocol/interface/inline_value_options.rb +2/-0
lib/language_server/protocol/interface/inline_value_params.rb +12/-10
lib/language_server/protocol/interface/inline_value_registration_options.rb +5/-3
lib/language_server/protocol/interface/inline_value_text.rb +2/-0
lib/language_server/protocol/interface/inline_value_variable_lookup.rb +4/-6
lib/language_server/protocol/interface/inline_value_workspace_client_capabilities.rb +6/-4
lib/language_server/protocol/interface/insert_replace_edit.rb +2/-0
lib/language_server/protocol/interface/linked_editing_range_client_capabilities.rb +7/-3
lib/language_server/protocol/interface/linked_editing_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/linked_editing_ranges.rb +10/-6
lib/language_server/protocol/interface/location.rb +5/-1
lib/language_server/protocol/interface/location_link.rb +12/-10
lib/language_server/protocol/interface/log_message_params.rb +4/-1
lib/language_server/protocol/interface/log_trace_params.rb +0/-7
lib/language_server/protocol/interface/markup_content.rb +16/-18
lib/language_server/protocol/interface/moniker.rb +2/-0
lib/language_server/protocol/interface/moniker_client_capabilities.rb +8/-4
lib/language_server/protocol/interface/moniker_params.rb +2/-2
lib/language_server/protocol/interface/moniker_registration_options.rb +3/-3
lib/language_server/protocol/interface/notebook_cell.rb +6/-2
lib/language_server/protocol/interface/notebook_cell_array_change.rb +5/-3
lib/language_server/protocol/interface/notebook_cell_text_document_filter.rb +2/-0
lib/language_server/protocol/interface/notebook_document.rb +7/-3
lib/language_server/protocol/interface/notebook_document_change_event.rb +5/-1
lib/language_server/protocol/interface/notebook_document_client_capabilities.rb +4/-0
lib/language_server/protocol/interface/notebook_document_filter.rb +5/-26
lib/language_server/protocol/interface/notebook_document_identifier.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/notebook_document_sync_options.rb +4/-2
lib/language_server/protocol/interface/notebook_document_sync_registration_options.rb +3/-1
lib/language_server/protocol/interface/optional_versioned_text_document_identifier.rb +17/-18
lib/language_server/protocol/interface/parameter_information.rb +6/-8
lib/language_server/protocol/interface/partial_result_params.rb +2/-2
lib/language_server/protocol/interface/position.rb +40/-6
lib/language_server/protocol/interface/previous_result_id.rb +4/-2
lib/language_server/protocol/interface/progress_params.rb +1/-1
lib/language_server/protocol/interface/publish_diagnostics_client_capabilities.rb +11/-0
lib/language_server/protocol/interface/publish_diagnostics_params.rb +8/-4
lib/language_server/protocol/interface/range.rb +13/-0
lib/language_server/protocol/interface/reference_client_capabilities.rb +3/-0
lib/language_server/protocol/interface/reference_context.rb +4/-0
lib/language_server/protocol/interface/reference_options.rb +3/-0
lib/language_server/protocol/interface/reference_params.rb +12/-9
lib/language_server/protocol/interface/reference_registration_options.rb +6/-3
lib/language_server/protocol/interface/registration.rb +1/-1
lib/language_server/protocol/interface/regular_expressions_client_capabilities.rb +2/-0
lib/language_server/protocol/interface/related_full_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/related_unchanged_document_diagnostic_report.rb +19/-15
lib/language_server/protocol/interface/relative_pattern.rb +4/-2
lib/language_server/protocol/interface/rename_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/rename_file.rb +5/-3
lib/language_server/protocol/interface/rename_files_params.rb +6/-4
lib/language_server/protocol/interface/rename_options.rb +12/-7
lib/language_server/protocol/interface/rename_params.rb +16/-13
lib/language_server/protocol/interface/rename_registration_options.rb +15/-10
lib/language_server/protocol/interface/save_options.rb +3/-0
lib/language_server/protocol/interface/selection_range.rb +6/-3
lib/language_server/protocol/interface/selection_range_client_capabilities.rb +3/-4
lib/language_server/protocol/interface/selection_range_params.rb +23/-20
lib/language_server/protocol/interface/selection_range_registration_options.rb +3/-3
lib/language_server/protocol/interface/semantic_tokens.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_client_capabilities.rb +14/-8
lib/language_server/protocol/interface/semantic_tokens_delta.rb +4/-2
lib/language_server/protocol/interface/semantic_tokens_delta_params.rb +24/-21
lib/language_server/protocol/interface/semantic_tokens_delta_partial_result.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_edit.rb +6/-3
lib/language_server/protocol/interface/semantic_tokens_legend.rb +3/-0
lib/language_server/protocol/interface/semantic_tokens_options.rb +11/-8
lib/language_server/protocol/interface/semantic_tokens_params.rb +15/-12
lib/language_server/protocol/interface/semantic_tokens_partial_result.rb +4/-1
lib/language_server/protocol/interface/semantic_tokens_range_params.rb +23/-20
lib/language_server/protocol/interface/semantic_tokens_registration_options.rb +14/-11
lib/language_server/protocol/interface/semantic_tokens_workspace_client_capabilities.rb +4/-1
lib/language_server/protocol/interface/server_capabilities.rb +59/-36
lib/language_server/protocol/interface/set_trace_params.rb +1/-4
lib/language_server/protocol/interface/show_document_client_capabilities.rb +4/-2
lib/language_server/protocol/interface/show_document_params.rb +6/-4
lib/language_server/protocol/interface/show_document_result.rb +3/-1
lib/language_server/protocol/interface/show_message_params.rb +4/-1
lib/language_server/protocol/interface/show_message_request_params.rb +1/-1
lib/language_server/protocol/interface/signature_help.rb +5/-6
lib/language_server/protocol/interface/signature_help_client_capabilities.rb +5/-0
lib/language_server/protocol/interface/signature_help_context.rb +8/-9
lib/language_server/protocol/interface/signature_help_options.rb +15/-12
lib/language_server/protocol/interface/signature_help_params.rb +16/-12
lib/language_server/protocol/interface/signature_help_registration_options.rb +18/-15
lib/language_server/protocol/interface/signature_information.rb +3/-1
lib/language_server/protocol/interface/static_registration_options.rb +2/-1
lib/language_server/protocol/interface/symbol_information.rb +32/-28
lib/language_server/protocol/interface/text_document_change_registration_options.rb +12/-13
lib/language_server/protocol/interface/text_document_client_capabilities.rb +48/-19
lib/language_server/protocol/interface/text_document_content_change_event.rb +4/-2
lib/language_server/protocol/interface/text_document_edit.rb +10/-1
lib/language_server/protocol/interface/text_document_identifier.rb +5/-2
lib/language_server/protocol/interface/text_document_item.rb +7/-3
lib/language_server/protocol/interface/text_document_position_params.rb +4/-0
lib/language_server/protocol/interface/text_document_registration_options.rb +3/-3
lib/language_server/protocol/interface/text_document_save_registration_options.rb +6/-3
lib/language_server/protocol/interface/text_document_sync_options.rb +10/-14
lib/language_server/protocol/interface/text_edit.rb +3/-0
lib/language_server/protocol/interface/type_definition_client_capabilities.rb +8/-3
lib/language_server/protocol/interface/type_definition_params.rb +2/-2
lib/language_server/protocol/interface/type_definition_registration_options.rb +3/-3
lib/language_server/protocol/interface/type_hierarchy_item.rb +6/-3
lib/language_server/protocol/interface/type_hierarchy_options.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_prepare_params.rb +5/-0
lib/language_server/protocol/interface/type_hierarchy_registration_options.rb +8/-3
lib/language_server/protocol/interface/type_hierarchy_subtypes_params.rb +14/-9
lib/language_server/protocol/interface/type_hierarchy_supertypes_params.rb +14/-9
lib/language_server/protocol/interface/unchanged_document_diagnostic_report.rb +3/-1
lib/language_server/protocol/interface/unregistration.rb +2/-2
lib/language_server/protocol/interface/versioned_notebook_document_identifier.rb +5/-3
lib/language_server/protocol/interface/versioned_text_document_identifier.rb +13/-13
lib/language_server/protocol/interface/will_save_text_document_params.rb +1/-1
lib/language_server/protocol/interface/work_done_progress_begin.rb +4/-4
lib/language_server/protocol/interface/work_done_progress_report.rb +4/-5
lib/language_server/protocol/interface/workspace_diagnostic_params.rb +22/-20
lib/language_server/protocol/interface/workspace_diagnostic_report.rb +2/-0
lib/language_server/protocol/interface/workspace_diagnostic_report_partial_result.rb +2/-0
lib/language_server/protocol/interface/workspace_edit.rb +28/-17
lib/language_server/protocol/interface/workspace_edit_client_capabilities.rb +10/-1
lib/language_server/protocol/interface/workspace_folder.rb +4/-1
lib/language_server/protocol/interface/workspace_folders_server_capabilities.rb +1/-1
lib/language_server/protocol/interface/workspace_full_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/interface/workspace_symbol.rb +33/-27
lib/language_server/protocol/interface/workspace_symbol_client_capabilities.rb +10/-4
lib/language_server/protocol/interface/workspace_symbol_options.rb +12/-7
lib/language_server/protocol/interface/workspace_symbol_params.rb +14/-14
lib/language_server/protocol/interface/workspace_symbol_registration_options.rb +12/-7
lib/language_server/protocol/interface/workspace_unchanged_document_diagnostic_report.rb +23/-21
lib/language_server/protocol/version.rb +1/-1 |
Contributor
|
Contributor
gem compare --diff parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb
--- /tmp/d20260810-7012-2v7f38/parser-3.3.11.1/lib/parser/current.rb 2026-08-10 02:35:58.166760329 +0000
+++ /tmp/d20260810-7012-2v7f38/parser-3.3.12.0/lib/parser/current.rb 2026-08-10 02:35:58.278760719 +0000
@@ -114 +114 @@
- current_version = '3.3.11'
+ current_version = '3.3.12'
lib/parser/version.rb
--- /tmp/d20260810-7012-2v7f38/parser-3.3.11.1/lib/parser/version.rb 2026-08-10 02:35:58.274760705 +0000
+++ /tmp/d20260810-7012-2v7f38/parser-3.3.12.0/lib/parser/version.rb 2026-08-10 02:35:58.320760866 +0000
@@ -4 +4 @@
- VERSION = '3.3.11.1'
+ VERSION = '3.3.12.0' |
Contributor
|
Contributor
|
Contributor
gem compare parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT date:
3.3.11.1: 2026-03-27 00:00:00 UTC
3.3.12.0: 2026-07-16 00:00:00 UTC
DIFFERENT metadata:
3.3.11.1: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.11.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.11.1", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.11.1"}
3.3.12.0: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0"}
DIFFERENT version:
3.3.11.1: 3.3.11.1
3.3.12.0: 3.3.12.0
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb +1/-1
lib/parser/version.rb +1/-1 |
Contributor
gem compare rubocop 1.88.0 1.89.0Compared versions: ["1.88.0", "1.89.0"]
DIFFERENT metadata:
1.88.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.88.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.88/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
1.89.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.89.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.89/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.88.0: 1.88.0
1.89.0: 1.89.0
DIFFERENT files:
1.88.0->1.89.0:
* Added:
lib/rubocop/cop/bundler.rb +19/-0
lib/rubocop/cop/gemspec.rb +22/-0
lib/rubocop/cop/generator/registration_injector.rb +188/-0
lib/rubocop/cop/layout.rb +114/-0
lib/rubocop/cop/lazy_loader.rb +41/-0
lib/rubocop/cop/lint.rb +176/-0
lib/rubocop/cop/lint/deprecated_reference.rb +185/-0
lib/rubocop/cop/lint/name_typo.rb +223/-0
lib/rubocop/cop/lint/unused_private_method.rb +157/-0
lib/rubocop/cop/metrics.rb +31/-0
lib/rubocop/cop/migration.rb +13/-0
lib/rubocop/cop/mixin/reparsed_equivalence.rb +171/-0
lib/rubocop/cop/naming.rb +31/-0
lib/rubocop/cop/security.rb +19/-0
lib/rubocop/cop/style.rb +310/-0
* Changed:
config/default.yml +72/-12
lib/rubocop.rb +17/-626
lib/rubocop/comment_config.rb +35/-19
lib/rubocop/config.rb +53/-0
lib/rubocop/config_validator.rb +38/-1
lib/rubocop/cop/badge.rb +8/-0
lib/rubocop/cop/base.rb +19/-12
lib/rubocop/cop/bundler/gem_comment.rb +3/-1
lib/rubocop/cop/commissioner.rb +13/-11
lib/rubocop/cop/corrector.rb +1/-1
lib/rubocop/cop/correctors/alignment_corrector.rb +55/-5
lib/rubocop/cop/correctors/each_to_for_corrector.rb +1/-1
lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7/-1
lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8/-1
lib/rubocop/cop/gemspec/development_dependencies.rb +1/-1
lib/rubocop/cop/gemspec/duplicated_assignment.rb +12/-2
lib/rubocop/cop/gemspec/require_mfa.rb +4/-1
lib/rubocop/cop/generator.rb +4/-0
lib/rubocop/cop/layout/block_alignment.rb +17/-0
lib/rubocop/cop/layout/class_structure.rb +14/-4
lib/rubocop/cop/layout/comment_indentation.rb +9/-2
lib/rubocop/cop/layout/condition_position.rb +13/-3
lib/rubocop/cop/layout/else_alignment.rb +1/-14
lib/rubocop/cop/layout/empty_comment.rb +8/-10
lib/rubocop/cop/layout/empty_line_between_defs.rb +14/-1
lib/rubocop/cop/layout/first_array_element_indentation.rb +1/-1
lib/rubocop/cop/layout/first_hash_element_indentation.rb +13/-14
lib/rubocop/cop/layout/indentation_width.rb +31/-1
lib/rubocop/cop/layout/leading_comment_space.rb +27/-0
lib/rubocop/cop/layout/line_length.rb +95/-17
lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18/-3
lib/rubocop/cop/layout/redundant_line_break.rb +77/-0
lib/rubocop/cop/layout/space_around_operators.rb +6/-2
lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +33/-34
lib/rubocop/cop/lint/ambiguous_assignment.rb +9/-7
lib/rubocop/cop/lint/ambiguous_block_association.rb +71/-0
lib/rubocop/cop/lint/assignment_in_condition.rb +13/-1
lib/rubocop/cop/lint/constant_reassignment.rb +1/-10
lib/rubocop/cop/lint/constant_resolution.rb +25/-0
lib/rubocop/cop/lint/debugger.rb +13/-1
lib/rubocop/cop/lint/duplicate_methods.rb +202/-22
lib/rubocop/cop/lint/inherit_exception.rb +51/-5
lib/rubocop/cop/lint/literal_as_condition.rb +5/-0
lib/rubocop/cop/lint/literal_in_interpolation.rb +1/-1
lib/rubocop/cop/lint/missing_super.rb +31/-1
lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +7/-0
lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +0/-4
lib/rubocop/cop/lint/safe_navigation_chain.rb +7/-0
lib/rubocop/cop/lint/to_enum_arguments.rb +44/-2
lib/rubocop/cop/lint/to_json.rb +8/-1
lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +32/-8
lib/rubocop/cop/lint/unreachable_code.rb +9/-4
lib/rubocop/cop/lint/useless_numeric_operation.rb +10/-10
lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2/-0
lib/rubocop/cop/lint/void.rb +19/-8
lib/rubocop/cop/metrics/method_length.rb +1/-1
lib/rubocop/cop/metrics/perceived_complexity.rb +38/-7
lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1/-1
lib/rubocop/cop/migration/department_name.rb +0/-4
lib/rubocop/cop/mixin.rb +78/-77
lib/rubocop/cop/mixin/allowed_methods.rb +5/-5
lib/rubocop/cop/mixin/allowed_pattern.rb +5/-1
lib/rubocop/cop/mixin/check_line_breakable.rb +23/-5
lib/rubocop/cop/mixin/endless_method_rewriter.rb +13/-5
lib/rubocop/cop/mixin/forbidden_pattern.rb +5/-1
lib/rubocop/cop/mixin/hash_alignment_styles.rb +23/-6
lib/rubocop/cop/mixin/hash_subset.rb +8/-0
lib/rubocop/cop/mixin/hash_transform_method.rb +4/-0
lib/rubocop/cop/mixin/project_index_help.rb +140/-0
lib/rubocop/cop/mixin/statement_modifier.rb +43/-7
lib/rubocop/cop/naming/accessor_method_name.rb +24/-0
lib/rubocop/cop/naming/file_name.rb +4/-3
lib/rubocop/cop/naming/inclusive_language.rb +8/-2
lib/rubocop/cop/naming/memoized_instance_variable_name.rb +9/-0
lib/rubocop/cop/naming/predicate_prefix.rb +33/-5
lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +9/-3
lib/rubocop/cop/naming/variable_number.rb +3/-1
lib/rubocop/cop/offense.rb +10/-6
lib/rubocop/cop/registry.rb +153/-43
lib/rubocop/cop/security/io_methods.rb +1/-1
lib/rubocop/cop/security/marshal_load.rb +1/-1
lib/rubocop/cop/style/accessor_grouping.rb +11/-1
lib/rubocop/cop/style/arguments_forwarding.rb +1/-1
lib/rubocop/cop/style/array_intersect.rb +24/-5
lib/rubocop/cop/style/class_and_module_children.rb +78/-18
lib/rubocop/cop/style/collection_compact.rb +1/-1
lib/rubocop/cop/style/conditional_assignment.rb +22/-0
lib/rubocop/cop/style/copyright.rb +6/-1
lib/rubocop/cop/style/data_inheritance.rb +4/-0
lib/rubocop/cop/style/def_with_parentheses.rb +6/-2
lib/rubocop/cop/style/dir_empty.rb +4/-0
lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +41/-3
lib/rubocop/cop/style/documentation.rb +47/-0
lib/rubocop/cop/style/documentation_method.rb +5/-1
lib/rubocop/cop/style/empty_case_condition.rb +12/-2
lib/rubocop/cop/style/empty_class_definition.rb +8/-1
lib/rubocop/cop/style/empty_heredoc.rb +4/-0
lib/rubocop/cop/style/empty_literal.rb +7/-2
lib/rubocop/cop/style/empty_string_inside_interpolation.rb +30/-20
lib/rubocop/cop/style/endless_method.rb +0/-10
lib/rubocop/cop/style/env_home.rb +4/-0
lib/rubocop/cop/style/even_odd.rb +11/-1
lib/rubocop/cop/style/exact_regexp_match.rb +8/-1
lib/rubocop/cop/style/file_null.rb +4/-2
lib/rubocop/cop/style/format_string.rb +13/-1
lib/rubocop/cop/style/hash_conversion.rb +14/-6
lib/rubocop/cop/style/hash_lookup_method.rb +2/-6
lib/rubocop/cop/style/hash_syntax.rb +2/-0
lib/rubocop/cop/style/identical_conditional_branches.rb +15/-4
lib/rubocop/cop/style/if_unless_modifier.rb +11/-52
lib/rubocop/cop/style/if_with_semicolon.rb +9/-1
lib/rubocop/cop/style/inline_comment.rb +1/-1
lib/rubocop/cop/style/invertible_unless_condition.rb +25/-5
lib/rubocop/cop/style/keyword_arguments_merging.rb +4/-0
lib/rubocop/cop/style/keyword_parameters_order.rb +7/-3
lib/rubocop/cop/style/lambda.rb +11/-1
lib/rubocop/cop/style/lambda_call.rb +11/-0
lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11/-0
lib/rubocop/cop/style/map_into_array.rb +1/-1
lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20/-3
lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11/-5
lib/rubocop/cop/style/method_def_parentheses.rb +5/-1
lib/rubocop/cop/style/min_max_comparison.rb +3/-0
lib/rubocop/cop/style/missing_respond_to_missing.rb +40/-7
lib/rubocop/cop/style/mixin_usage.rb +1/-1
lib/rubocop/cop/style/module_function.rb +4/-2
lib/rubocop/cop/style/multiline_if_then.rb +7/-1
lib/rubocop/cop/style/multiline_memoization.rb +7/-1
lib/rubocop/cop/style/multiline_method_signature.rb +11/-4
lib/rubocop/cop/style/multiple_comparison.rb +33/-22
lib/rubocop/cop/style/mutable_constant.rb +5/-0
lib/rubocop/cop/style/negative_array_index.rb +3/-1
lib/rubocop/cop/style/nil_lambda.rb +8/-0
lib/rubocop/cop/style/numeric_predicate.rb +1/-1
lib/rubocop/cop/style/open_struct_use.rb +1/-1
lib/rubocop/cop/style/option_hash.rb +1/-1
lib/rubocop/cop/style/optional_arguments.rb +1/-0
lib/rubocop/cop/style/parallel_assignment.rb +11/-2
lib/rubocop/cop/style/percent_literal_delimiters.rb +2/-0
lib/rubocop/cop/style/perl_backrefs.rb +5/-3
lib/rubocop/cop/style/redundant_assignment.rb +11/-0
lib/rubocop/cop/style/redundant_constant_base.rb +37/-1
lib/rubocop/cop/style/redundant_current_directory_in_path.rb +13/-1
lib/rubocop/cop/style/redundant_exception.rb +6/-0
lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9/-0
lib/rubocop/cop/style/redundant_filter_chain.rb +1/-1
lib/rubocop/cop/style/redundant_format.rb +40/-3
lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6/-1
lib/rubocop/cop/style/redundant_line_continuation.rb +80/-129
lib/rubocop/cop/style/redundant_parentheses.rb +63/-63
lib/rubocop/cop/style/redundant_regexp_escape.rb +8/-4
lib/rubocop/cop/style/redundant_self.rb +9/-0
lib/rubocop/cop/style/redundant_struct_keyword_init.rb +23/-4
lib/rubocop/cop/style/safe_navigation.rb +10/-0
lib/rubocop/cop/style/semicolon.rb +4/-4
lib/rubocop/cop/style/single_line_do_end_block.rb +17/-4
lib/rubocop/cop/style/sole_nested_conditional.rb +20/-3
lib/rubocop/cop/style/static_class.rb +21/-0
lib/rubocop/cop/style/string_hash_keys.rb +1/-0
lib/rubocop/cop/style/struct_inheritance.rb +3/-1
lib/rubocop/cop/style/ternary_parentheses.rb +11/-0
lib/rubocop/cop/style/trailing_underscore_variable.rb +7/-8
lib/rubocop/cop/style/trivial_accessors.rb +1/-1
lib/rubocop/cop/team.rb +66/-7
lib/rubocop/cop/variable_force/variable.rb +18/-6
lib/rubocop/cops_documentation_generator.rb +1/-1
lib/rubocop/directive_comment.rb +2/-0
lib/rubocop/feature_loader.rb +0/-6
lib/rubocop/lsp/routes.rb +41/-3
lib/rubocop/lsp/runtime.rb +4/-0
lib/rubocop/lsp/server.rb +4/-0
lib/rubocop/lsp/stdin_runner.rb +20/-0
lib/rubocop/pending_cops_reporter.rb +1/-6
lib/rubocop/project_index_loader.rb +16/-0
lib/rubocop/result_cache.rb +6/-4
lib/rubocop/rspec/shared_contexts.rb +14/-2
lib/rubocop/runner.rb +100/-33
lib/rubocop/server/cache.rb +10/-5
lib/rubocop/target_ruby.rb +1/-1
lib/rubocop/version.rb +1/-1 |
Contributor
gem compare parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT date:
3.3.11.1: 2026-03-27 00:00:00 UTC
3.3.12.0: 2026-07-16 00:00:00 UTC
DIFFERENT metadata:
3.3.11.1: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.11.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.11.1", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.11.1"}
3.3.12.0: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0"}
DIFFERENT version:
3.3.11.1: 3.3.11.1
3.3.12.0: 3.3.12.0
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb +1/-1
lib/parser/version.rb +1/-1 |
1 similar comment
Contributor
gem compare parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT date:
3.3.11.1: 2026-03-27 00:00:00 UTC
3.3.12.0: 2026-07-16 00:00:00 UTC
DIFFERENT metadata:
3.3.11.1: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.11.1/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.11.1", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.11.1"}
3.3.12.0: {"bug_tracker_uri" => "https://github.com/whitequark/parser/issues", "changelog_uri" => "https://github.com/whitequark/parser/blob/v3.3.12.0/CHANGELOG.md", "documentation_uri" => "https://www.rubydoc.info/gems/parser/3.3.12.0", "source_code_uri" => "https://github.com/whitequark/parser/tree/v3.3.12.0"}
DIFFERENT version:
3.3.11.1: 3.3.11.1
3.3.12.0: 3.3.12.0
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb +1/-1
lib/parser/version.rb +1/-1 |
Contributor
|
Contributor
gem compare --diff parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb
--- /tmp/d20260810-7011-x621oj/parser-3.3.11.1/lib/parser/current.rb 2026-08-10 02:36:29.078353653 +0000
+++ /tmp/d20260810-7011-x621oj/parser-3.3.12.0/lib/parser/current.rb 2026-08-10 02:36:29.160353780 +0000
@@ -114 +114 @@
- current_version = '3.3.11'
+ current_version = '3.3.12'
lib/parser/version.rb
--- /tmp/d20260810-7011-x621oj/parser-3.3.11.1/lib/parser/version.rb 2026-08-10 02:36:29.155353772 +0000
+++ /tmp/d20260810-7011-x621oj/parser-3.3.12.0/lib/parser/version.rb 2026-08-10 02:36:29.284353973 +0000
@@ -4 +4 @@
- VERSION = '3.3.11.1'
+ VERSION = '3.3.12.0' |
Contributor
gem compare --diff parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb
--- /tmp/d20260810-7211-twxpil/parser-3.3.11.1/lib/parser/current.rb 2026-08-10 02:36:37.517643677 +0000
+++ /tmp/d20260810-7211-twxpil/parser-3.3.12.0/lib/parser/current.rb 2026-08-10 02:36:37.663644269 +0000
@@ -114 +114 @@
- current_version = '3.3.11'
+ current_version = '3.3.12'
lib/parser/version.rb
--- /tmp/d20260810-7211-twxpil/parser-3.3.11.1/lib/parser/version.rb 2026-08-10 02:36:37.659644253 +0000
+++ /tmp/d20260810-7211-twxpil/parser-3.3.12.0/lib/parser/version.rb 2026-08-10 02:36:37.718644492 +0000
@@ -4 +4 @@
- VERSION = '3.3.11.1'
+ VERSION = '3.3.12.0' |
Contributor
gem compare --diff parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb
--- /tmp/d20260810-7010-whw9c6/parser-3.3.11.1/lib/parser/current.rb 2026-08-10 02:36:39.758623256 +0000
+++ /tmp/d20260810-7010-whw9c6/parser-3.3.12.0/lib/parser/current.rb 2026-08-10 02:36:39.888622259 +0000
@@ -114 +114 @@
- current_version = '3.3.11'
+ current_version = '3.3.12'
lib/parser/version.rb
--- /tmp/d20260810-7010-whw9c6/parser-3.3.11.1/lib/parser/version.rb 2026-08-10 02:36:39.884622290 +0000
+++ /tmp/d20260810-7010-whw9c6/parser-3.3.12.0/lib/parser/version.rb 2026-08-10 02:36:39.933621914 +0000
@@ -4 +4 @@
- VERSION = '3.3.11.1'
+ VERSION = '3.3.12.0' |
Contributor
gem compare rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT version:
1.49.1: 1.49.1
1.50.0: 1.50.0
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb +30/-7
lib/rubocop/ast/node/and_node.rb +2/-2
lib/rubocop/ast/node/case_match_node.rb +1/-1
lib/rubocop/ast/node/case_node.rb +1/-1
lib/rubocop/ast/node/for_node.rb +1/-1
lib/rubocop/ast/node/hash_node.rb +6/-6
lib/rubocop/ast/node/if_node.rb +1/-1
lib/rubocop/ast/node/mixin/descendence.rb +21/-4
lib/rubocop/ast/node/mixin/method_dispatch_node.rb +1/-1
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5/-5
lib/rubocop/ast/node/mixin/numeric_node.rb +1/-1
lib/rubocop/ast/node/pair_node.rb +1/-1
lib/rubocop/ast/node/symbol_node.rb +1/-1
lib/rubocop/ast/node/when_node.rb +1/-1
lib/rubocop/ast/node/while_node.rb +2/-2
lib/rubocop/ast/processed_source.rb +133/-21
lib/rubocop/ast/version.rb +1/-1 |
Contributor
gem compare --diff parser 3.3.11.1 3.3.12.0Compared versions: ["3.3.11.1", "3.3.12.0"]
DIFFERENT files:
3.3.11.1->3.3.12.0:
* Changed:
lib/parser/current.rb
--- /tmp/d20260810-7050-jvsoim/parser-3.3.11.1/lib/parser/current.rb 2026-08-10 02:36:41.060832922 +0000
+++ /tmp/d20260810-7050-jvsoim/parser-3.3.12.0/lib/parser/current.rb 2026-08-10 02:36:41.111833213 +0000
@@ -114 +114 @@
- current_version = '3.3.11'
+ current_version = '3.3.12'
lib/parser/version.rb
--- /tmp/d20260810-7050-jvsoim/parser-3.3.11.1/lib/parser/version.rb 2026-08-10 02:36:41.108833195 +0000
+++ /tmp/d20260810-7050-jvsoim/parser-3.3.12.0/lib/parser/version.rb 2026-08-10 02:36:41.225833863 +0000
@@ -4 +4 @@
- VERSION = '3.3.11.1'
+ VERSION = '3.3.12.0' |
Contributor
gem compare --diff rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node.rb 2026-08-10 02:36:52.702945589 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node.rb 2026-08-10 02:36:52.722945656 +0000
@@ -78,0 +79,7 @@
+ # The node types which could have a source matching `SPECIAL_KEYWORDS`:
+ # `__FILE__` parses as `str`, `__LINE__` as `int` and `__ENCODING__` as
+ # `const` (or as their own node types when the builder emits them);
+ # `str` and `sym` also cover word/symbol array elements, string parts
+ # and hash labels spelling out one of these keywords.
+ SPECIAL_KEYWORD_TYPES = %i[str sym int const __FILE__ __LINE__ __ENCODING__].to_set.freeze
+ private_constant :SPECIAL_KEYWORD_TYPES
@@ -174,0 +182,7 @@
+ type_in?(types)
+ end
+
+ # Non-splatting variant of `type?`, used by the traversal hot paths to
+ # avoid allocating an array per visited node.
+ # @api private
+ def type_in?(types)
@@ -290 +304 @@
- # @return [Array<Node>] the different parts of the ndde
+ # @return [Array<Node>] the different parts of the node
@@ -506 +520 @@
- SPECIAL_KEYWORDS.include?(source)
+ SPECIAL_KEYWORD_TYPES.include?(type) && SPECIAL_KEYWORDS.include?(source)
@@ -522 +536 @@
- parent&.call_type? && eql?(parent.receiver)
+ parent&.call_type? && equal?(parent.receiver)
@@ -526 +540,3 @@
- parent&.send_type? && parent.arguments.include?(self)
+ return false unless parent&.send_type?
+
+ parent.arguments.any? { |argument| argument.equal?(self) }
@@ -698,3 +714,10 @@
- while (current_node = last_node.parent)
- yield current_node if types.empty? || current_node.type?(*types)
- last_node = current_node
+ if types.empty?
+ while (current_node = last_node.parent)
+ yield current_node
+ last_node = current_node
+ end
+ else
+ while (current_node = last_node.parent)
+ yield current_node if current_node.type_in?(types)
+ last_node = current_node
+ end
lib/rubocop/ast/node/and_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:36:52.703945592 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:36:52.723945659 +0000
@@ -5 +5 @@
- # A node extension for `until` nodes. This will be used in place of a plain
+ # A node extension for `and` nodes. This will be used in place of a plain
@@ -7 +7 @@
- # to all `until` nodes within RuboCop.
+ # to all `and` nodes within RuboCop.
lib/rubocop/ast/node/case_match_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:36:52.705945599 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:36:52.724945663 +0000
@@ -20 +20 @@
- return in_pattern_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/case_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:36:52.705945599 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:36:52.724945663 +0000
@@ -20 +20 @@
- return when_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/for_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:36:52.707945605 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:36:52.726945669 +0000
@@ -11 +11 @@
- # @return [String] the keyword of the `until` statement
+ # @return [String] the keyword of the `for` statement
lib/rubocop/ast/node/hash_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:36:52.707945605 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:36:52.726945669 +0000
@@ -59,2 +59,2 @@
- def each_key(&block)
- return pairs.map(&:key).to_enum unless block
+ def each_key
+ return to_enum(__method__) unless block_given?
@@ -62 +62 @@
- pairs.map(&:key).each(&block)
+ each_child_node(:pair) { |pair| yield pair.key }
@@ -83,2 +83,2 @@
- def each_value(&block)
- return pairs.map(&:value).to_enum unless block
+ def each_value
+ return to_enum(__method__) unless block_given?
@@ -86 +86 @@
- pairs.map(&:value).each(&block)
+ each_child_node(:pair) { |pair| yield pair.value }
lib/rubocop/ast/node/if_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:36:52.707945605 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:36:52.726945669 +0000
@@ -172 +172 @@
- return branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/mixin/descendence.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:36:52.710945616 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:36:52.729945679 +0000
@@ -28 +28 @@
- yield child if types.empty? || child.type?(*types)
+ yield child if types.empty? || child.type_in?(types)
@@ -98 +98 @@
- yield self if types.empty? || type?(*types)
+ yield self if types.empty? || type_in?(types)
@@ -107,0 +108,17 @@
+ if types.empty?
+ visit_all_descendants(&block)
+ else
+ visit_descendants_of_types(types, &block)
+ end
+ end
+
+ def visit_all_descendants(&block)
+ children.each do |child|
+ next unless child.is_a?(::AST::Node)
+
+ yield child
+ child.visit_all_descendants(&block)
+ end
+ end
+
+ def visit_descendants_of_types(types, &block)
@@ -111,2 +128,2 @@
- yield child if types.empty? || child.type?(*types)
- child.visit_descendants(types, &block)
+ yield child if child.type_in?(types)
+ child.visit_descendants_of_types(types, &block)
lib/rubocop/ast/node/mixin/method_dispatch_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:36:52.710945616 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:36:52.729945679 +0000
@@ -168 +168 @@
- parent&.any_block_type? && eql?(parent.send_node)
+ parent&.any_block_type? && equal?(parent.send_node)
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:36:52.710945616 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:36:52.729945679 +0000
@@ -143 +143 @@
- !comparison_method? && method_name.to_s.end_with?('=')
+ !comparison_method? && method_name.end_with?('=')
@@ -151 +151 @@
- method_name.to_s.start_with?('each_')
+ method_name.start_with?('each_')
@@ -165 +165 @@
- method_name.to_s.end_with?('?')
+ method_name.end_with?('?')
@@ -172 +172 @@
- method_name.to_s.end_with?('!')
+ method_name.end_with?('!')
@@ -180 +180 @@
- method_name.to_s =~ /\A[A-Z]/
+ method_name.match?(/\A[A-Z]/)
lib/rubocop/ast/node/mixin/numeric_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:36:52.710945616 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:36:52.729945679 +0000
@@ -10 +10 @@
- # Checks whether this is literal has a sign.
+ # Checks whether this literal has a sign.
lib/rubocop/ast/node/pair_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:36:52.712945622 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:36:52.731945686 +0000
@@ -35 +35 @@
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
+ # hash rocket delimited `pair` and `:` for a colon delimited `pair`.
lib/rubocop/ast/node/symbol_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:36:52.714945629 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:36:52.733945693 +0000
@@ -5 +5 @@
- # A node extension for `sym` nodes. This will be used in place of a
+ # A node extension for `sym` nodes. This will be used in place of a
lib/rubocop/ast/node/when_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:36:52.714945629 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:36:52.733945693 +0000
@@ -18 +18 @@
- return conditions.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/while_node.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:36:52.714945629 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:36:52.733945693 +0000
@@ -27 +27 @@
- # Checks whether the `until` node has a `do` keyword.
+ # Checks whether the `while` node has a `do` keyword.
@@ -29 +29 @@
- # @return [Boolean] whether the `until` node has a `do` keyword
+ # @return [Boolean] whether the `while` node has a `do` keyword
lib/rubocop/ast/processed_source.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/processed_source.rb 2026-08-10 02:36:52.719945646 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/processed_source.rb 2026-08-10 02:36:52.737945706 +0000
@@ -27,0 +28,38 @@
+ # Extends the prism translation parsers so that the conversion of tokens
+ # into the `parser` gem's format is deferred until the tokens are first
+ # accessed. Building the tokens is a significant part of the translation
+ # cost, and not every caller needs them.
+ # @api private
+ module PrismLazyTokens
+ # Same contract as `Parser::Base#tokenize`, except the tokens are
+ # returned as a callable that performs the conversion when invoked.
+ def tokenize_deferred(source_buffer)
+ @source_buffer = source_buffer
+ source = source_buffer.source
+
+ offset_cache = build_offset_cache(source)
+ result = unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
+
+ program, tokens = result.value
+ ast = build_ast(program, offset_cache) if result.success?
+ comments = build_comments(result.comments, offset_cache)
+
+ [ast, comments, deferred_tokens(source_buffer, tokens, offset_cache)]
+ ensure
+ @source_buffer = nil
+ end
+
+ private
+
+ def deferred_tokens(source_buffer, tokens, offset_cache)
+ lambda do
+ @source_buffer = source_buffer
+ begin
+ build_tokens(tokens, offset_cache)
+ ensure
+ @source_buffer = nil
+ end
+ end
+ end
+ end
+
@@ -41 +79 @@
- attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
+ attr_reader :path, :buffer, :ast, :comments, :diagnostics,
@@ -48,0 +87,7 @@
+ # Subclasses of the prism translation parsers with lazily built tokens.
+ # @api private
+ def self.lazy_tokens_parser_class(base)
+ @lazy_tokens_parser_classes ||= {}
+ @lazy_tokens_parser_classes[base] ||= Class.new(base) { include PrismLazyTokens }
+ end
+
@@ -57 +102 @@
- (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
+ source = (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
@@ -80,6 +125,6 @@
- last_token_line = tokens.any? ? tokens.last.line : all_lines.size
- result = []
- all_lines.each_with_index do |line, ix|
- break if ix >= last_token_line && line == '__END__'
-
- result << line
+ if all_lines.include?('__END__')
+ trim_lines_after_data_marker(all_lines)
+ else
+ # Don't consult the tokens (which may have to be built first) when
+ # the source can't contain a data section.
+ all_lines.dup
@@ -87 +131,0 @@
- result
@@ -103 +147 @@
- Digest::SHA1.hexdigest(@raw_source)
+ @checksum ||= Digest::SHA1.hexdigest(@raw_source)
@@ -175,0 +220,2 @@
+ return nil if token.line < 2
+
@@ -193,0 +240,13 @@
+ # The tokens of the source. With the prism engine the tokens are built
+ # lazily on first access, since their conversion is costly and not
+ # every caller needs them.
+ def tokens
+ @tokens ||= begin
+ tokens = parser_tokens.map { |t| Token.from_parser_token(t) }
+ # The parser tokens are no longer needed, and the deferred conversion
+ # holds on to the parser instance, so release both.
+ @parser_tokens = nil
+ tokens
+ end
+ end
+
@@ -212,2 +271,9 @@
- # Use stable sort.
- @sorted_tokens ||= tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ # Most sources have their tokens already in order, in which case
+ # sorting can be skipped entirely. Callers only ever read from the
+ # returned array, so it is safe to reuse `tokens` as is.
+ @sorted_tokens ||= if tokens_sorted?
+ tokens
+ else
+ # Use stable sort.
+ tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ end
@@ -217,0 +284,17 @@
+ def tokens_sorted?
+ tokens.each_cons(2).all? { |a, b| a.begin_pos <= b.begin_pos }
+ end
+
+ # `__END__` only starts a data section when it isn't nested inside a
+ # string or heredoc, which is what the last token's line disambiguates.
+ def trim_lines_after_data_marker(all_lines)
+ last_token_line = tokens.any? ? tokens.last.line : all_lines.size
+ result = []
+ all_lines.each_with_index do |line, ix|
+ break if ix >= last_token_line && line == '__END__'
+
+ result << line
+ end
+ result
+ end
+
@@ -225,2 +308 @@
- buffer_name = @path || STRING_SOURCE_NAME
- @buffer = Parser::Source::Buffer.new(buffer_name, 1)
+ @buffer = Parser::Source::Buffer.new(@path || STRING_SOURCE_NAME, 1)
@@ -240 +322,12 @@
- @ast, @comments, @tokens = tokenize(parser)
+ @ast, @comments, tokens = tokenize(parser)
+ store_tokens(tokens)
+ end
+
+ # The tokens may be an already converted array, or a deferred conversion
+ # to be performed when the tokens are first accessed.
+ def store_tokens(tokens)
+ if tokens.is_a?(Proc)
+ @deferred_parser_tokens = tokens
+ else
+ @parser_tokens = tokens
+ end
@@ -245 +338 @@
- ast, comments, tokens = parser.tokenize(@buffer)
+ ast, comments, tokens = parse_and_lex(parser)
@@ -254 +346,0 @@
- tokens.map! { |t| Token.from_parser_token(t) }
@@ -258,0 +351,17 @@
+ def parse_and_lex(parser)
+ if parser.respond_to?(:tokenize_deferred)
+ parser.tokenize_deferred(@buffer)
+ else
+ parser.tokenize(@buffer)
+ end
+ end
+
+ def parser_tokens
+ if @deferred_parser_tokens
+ @parser_tokens = @deferred_parser_tokens.call
+ @deferred_parser_tokens = nil
+ end
+
+ @parser_tokens
+ end
+
@@ -342,0 +452,3 @@
+ parser_class = self.class.lazy_tokens_parser_class(parser_class) if
+ parser_engine == :parser_prism
+
@@ -381,3 +493,3 @@
- # The Parser gem does not support Ruby 3.5 or later.
- # It is also not fully compatible with Ruby 3.4 but for
- # now respects using parser for backwards compatibility.
+ # Prism is used for all Ruby versions it can parse (3.3 and later);
+ # the Parser gem does not support Ruby 3.5 or later and is not fully
+ # compatible with Ruby 3.4.
@@ -385 +497 @@
- if ruby_version >= 3.4
+ if ruby_version >= 3.3
lib/rubocop/ast/version.rb
--- /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.49.1/lib/rubocop/ast/version.rb 2026-08-10 02:36:52.720945649 +0000
+++ /tmp/d20260810-15411-gxdyfc/rubocop-ast-1.50.0/lib/rubocop/ast/version.rb 2026-08-10 02:36:52.739945713 +0000
@@ -6 +6 @@
- STRING = '1.49.1'
+ STRING = '1.50.0' |
Contributor
gem compare rubocop 1.88.0 1.89.0Compared versions: ["1.88.0", "1.89.0"]
DIFFERENT metadata:
1.88.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.88.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.88/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
1.89.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.89.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.89/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.88.0: 1.88.0
1.89.0: 1.89.0
DIFFERENT files:
1.88.0->1.89.0:
* Added:
lib/rubocop/cop/bundler.rb +19/-0
lib/rubocop/cop/gemspec.rb +22/-0
lib/rubocop/cop/generator/registration_injector.rb +188/-0
lib/rubocop/cop/layout.rb +114/-0
lib/rubocop/cop/lazy_loader.rb +41/-0
lib/rubocop/cop/lint.rb +176/-0
lib/rubocop/cop/lint/deprecated_reference.rb +185/-0
lib/rubocop/cop/lint/name_typo.rb +223/-0
lib/rubocop/cop/lint/unused_private_method.rb +157/-0
lib/rubocop/cop/metrics.rb +31/-0
lib/rubocop/cop/migration.rb +13/-0
lib/rubocop/cop/mixin/reparsed_equivalence.rb +171/-0
lib/rubocop/cop/naming.rb +31/-0
lib/rubocop/cop/security.rb +19/-0
lib/rubocop/cop/style.rb +310/-0
* Changed:
config/default.yml +72/-12
lib/rubocop.rb +17/-626
lib/rubocop/comment_config.rb +35/-19
lib/rubocop/config.rb +53/-0
lib/rubocop/config_validator.rb +38/-1
lib/rubocop/cop/badge.rb +8/-0
lib/rubocop/cop/base.rb +19/-12
lib/rubocop/cop/bundler/gem_comment.rb +3/-1
lib/rubocop/cop/commissioner.rb +13/-11
lib/rubocop/cop/corrector.rb +1/-1
lib/rubocop/cop/correctors/alignment_corrector.rb +55/-5
lib/rubocop/cop/correctors/each_to_for_corrector.rb +1/-1
lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7/-1
lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8/-1
lib/rubocop/cop/gemspec/development_dependencies.rb +1/-1
lib/rubocop/cop/gemspec/duplicated_assignment.rb +12/-2
lib/rubocop/cop/gemspec/require_mfa.rb +4/-1
lib/rubocop/cop/generator.rb +4/-0
lib/rubocop/cop/layout/block_alignment.rb +17/-0
lib/rubocop/cop/layout/class_structure.rb +14/-4
lib/rubocop/cop/layout/comment_indentation.rb +9/-2
lib/rubocop/cop/layout/condition_position.rb +13/-3
lib/rubocop/cop/layout/else_alignment.rb +1/-14
lib/rubocop/cop/layout/empty_comment.rb +8/-10
lib/rubocop/cop/layout/empty_line_between_defs.rb +14/-1
lib/rubocop/cop/layout/first_array_element_indentation.rb +1/-1
lib/rubocop/cop/layout/first_hash_element_indentation.rb +13/-14
lib/rubocop/cop/layout/indentation_width.rb +31/-1
lib/rubocop/cop/layout/leading_comment_space.rb +27/-0
lib/rubocop/cop/layout/line_length.rb +95/-17
lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18/-3
lib/rubocop/cop/layout/redundant_line_break.rb +77/-0
lib/rubocop/cop/layout/space_around_operators.rb +6/-2
lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +33/-34
lib/rubocop/cop/lint/ambiguous_assignment.rb +9/-7
lib/rubocop/cop/lint/ambiguous_block_association.rb +71/-0
lib/rubocop/cop/lint/assignment_in_condition.rb +13/-1
lib/rubocop/cop/lint/constant_reassignment.rb +1/-10
lib/rubocop/cop/lint/constant_resolution.rb +25/-0
lib/rubocop/cop/lint/debugger.rb +13/-1
lib/rubocop/cop/lint/duplicate_methods.rb +202/-22
lib/rubocop/cop/lint/inherit_exception.rb +51/-5
lib/rubocop/cop/lint/literal_as_condition.rb +5/-0
lib/rubocop/cop/lint/literal_in_interpolation.rb +1/-1
lib/rubocop/cop/lint/missing_super.rb +31/-1
lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +7/-0
lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +0/-4
lib/rubocop/cop/lint/safe_navigation_chain.rb +7/-0
lib/rubocop/cop/lint/to_enum_arguments.rb +44/-2
lib/rubocop/cop/lint/to_json.rb +8/-1
lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +32/-8
lib/rubocop/cop/lint/unreachable_code.rb +9/-4
lib/rubocop/cop/lint/useless_numeric_operation.rb +10/-10
lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2/-0
lib/rubocop/cop/lint/void.rb +19/-8
lib/rubocop/cop/metrics/method_length.rb +1/-1
lib/rubocop/cop/metrics/perceived_complexity.rb +38/-7
lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1/-1
lib/rubocop/cop/migration/department_name.rb +0/-4
lib/rubocop/cop/mixin.rb +78/-77
lib/rubocop/cop/mixin/allowed_methods.rb +5/-5
lib/rubocop/cop/mixin/allowed_pattern.rb +5/-1
lib/rubocop/cop/mixin/check_line_breakable.rb +23/-5
lib/rubocop/cop/mixin/endless_method_rewriter.rb +13/-5
lib/rubocop/cop/mixin/forbidden_pattern.rb +5/-1
lib/rubocop/cop/mixin/hash_alignment_styles.rb +23/-6
lib/rubocop/cop/mixin/hash_subset.rb +8/-0
lib/rubocop/cop/mixin/hash_transform_method.rb +4/-0
lib/rubocop/cop/mixin/project_index_help.rb +140/-0
lib/rubocop/cop/mixin/statement_modifier.rb +43/-7
lib/rubocop/cop/naming/accessor_method_name.rb +24/-0
lib/rubocop/cop/naming/file_name.rb +4/-3
lib/rubocop/cop/naming/inclusive_language.rb +8/-2
lib/rubocop/cop/naming/memoized_instance_variable_name.rb +9/-0
lib/rubocop/cop/naming/predicate_prefix.rb +33/-5
lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +9/-3
lib/rubocop/cop/naming/variable_number.rb +3/-1
lib/rubocop/cop/offense.rb +10/-6
lib/rubocop/cop/registry.rb +153/-43
lib/rubocop/cop/security/io_methods.rb +1/-1
lib/rubocop/cop/security/marshal_load.rb +1/-1
lib/rubocop/cop/style/accessor_grouping.rb +11/-1
lib/rubocop/cop/style/arguments_forwarding.rb +1/-1
lib/rubocop/cop/style/array_intersect.rb +24/-5
lib/rubocop/cop/style/class_and_module_children.rb +78/-18
lib/rubocop/cop/style/collection_compact.rb +1/-1
lib/rubocop/cop/style/conditional_assignment.rb +22/-0
lib/rubocop/cop/style/copyright.rb +6/-1
lib/rubocop/cop/style/data_inheritance.rb +4/-0
lib/rubocop/cop/style/def_with_parentheses.rb +6/-2
lib/rubocop/cop/style/dir_empty.rb +4/-0
lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +41/-3
lib/rubocop/cop/style/documentation.rb +47/-0
lib/rubocop/cop/style/documentation_method.rb +5/-1
lib/rubocop/cop/style/empty_case_condition.rb +12/-2
lib/rubocop/cop/style/empty_class_definition.rb +8/-1
lib/rubocop/cop/style/empty_heredoc.rb +4/-0
lib/rubocop/cop/style/empty_literal.rb +7/-2
lib/rubocop/cop/style/empty_string_inside_interpolation.rb +30/-20
lib/rubocop/cop/style/endless_method.rb +0/-10
lib/rubocop/cop/style/env_home.rb +4/-0
lib/rubocop/cop/style/even_odd.rb +11/-1
lib/rubocop/cop/style/exact_regexp_match.rb +8/-1
lib/rubocop/cop/style/file_null.rb +4/-2
lib/rubocop/cop/style/format_string.rb +13/-1
lib/rubocop/cop/style/hash_conversion.rb +14/-6
lib/rubocop/cop/style/hash_lookup_method.rb +2/-6
lib/rubocop/cop/style/hash_syntax.rb +2/-0
lib/rubocop/cop/style/identical_conditional_branches.rb +15/-4
lib/rubocop/cop/style/if_unless_modifier.rb +11/-52
lib/rubocop/cop/style/if_with_semicolon.rb +9/-1
lib/rubocop/cop/style/inline_comment.rb +1/-1
lib/rubocop/cop/style/invertible_unless_condition.rb +25/-5
lib/rubocop/cop/style/keyword_arguments_merging.rb +4/-0
lib/rubocop/cop/style/keyword_parameters_order.rb +7/-3
lib/rubocop/cop/style/lambda.rb +11/-1
lib/rubocop/cop/style/lambda_call.rb +11/-0
lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11/-0
lib/rubocop/cop/style/map_into_array.rb +1/-1
lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20/-3
lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11/-5
lib/rubocop/cop/style/method_def_parentheses.rb +5/-1
lib/rubocop/cop/style/min_max_comparison.rb +3/-0
lib/rubocop/cop/style/missing_respond_to_missing.rb +40/-7
lib/rubocop/cop/style/mixin_usage.rb +1/-1
lib/rubocop/cop/style/module_function.rb +4/-2
lib/rubocop/cop/style/multiline_if_then.rb +7/-1
lib/rubocop/cop/style/multiline_memoization.rb +7/-1
lib/rubocop/cop/style/multiline_method_signature.rb +11/-4
lib/rubocop/cop/style/multiple_comparison.rb +33/-22
lib/rubocop/cop/style/mutable_constant.rb +5/-0
lib/rubocop/cop/style/negative_array_index.rb +3/-1
lib/rubocop/cop/style/nil_lambda.rb +8/-0
lib/rubocop/cop/style/numeric_predicate.rb +1/-1
lib/rubocop/cop/style/open_struct_use.rb +1/-1
lib/rubocop/cop/style/option_hash.rb +1/-1
lib/rubocop/cop/style/optional_arguments.rb +1/-0
lib/rubocop/cop/style/parallel_assignment.rb +11/-2
lib/rubocop/cop/style/percent_literal_delimiters.rb +2/-0
lib/rubocop/cop/style/perl_backrefs.rb +5/-3
lib/rubocop/cop/style/redundant_assignment.rb +11/-0
lib/rubocop/cop/style/redundant_constant_base.rb +37/-1
lib/rubocop/cop/style/redundant_current_directory_in_path.rb +13/-1
lib/rubocop/cop/style/redundant_exception.rb +6/-0
lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9/-0
lib/rubocop/cop/style/redundant_filter_chain.rb +1/-1
lib/rubocop/cop/style/redundant_format.rb +40/-3
lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6/-1
lib/rubocop/cop/style/redundant_line_continuation.rb +80/-129
lib/rubocop/cop/style/redundant_parentheses.rb +63/-63
lib/rubocop/cop/style/redundant_regexp_escape.rb +8/-4
lib/rubocop/cop/style/redundant_self.rb +9/-0
lib/rubocop/cop/style/redundant_struct_keyword_init.rb +23/-4
lib/rubocop/cop/style/safe_navigation.rb +10/-0
lib/rubocop/cop/style/semicolon.rb +4/-4
lib/rubocop/cop/style/single_line_do_end_block.rb +17/-4
lib/rubocop/cop/style/sole_nested_conditional.rb +20/-3
lib/rubocop/cop/style/static_class.rb +21/-0
lib/rubocop/cop/style/string_hash_keys.rb +1/-0
lib/rubocop/cop/style/struct_inheritance.rb +3/-1
lib/rubocop/cop/style/ternary_parentheses.rb +11/-0
lib/rubocop/cop/style/trailing_underscore_variable.rb +7/-8
lib/rubocop/cop/style/trivial_accessors.rb +1/-1
lib/rubocop/cop/team.rb +66/-7
lib/rubocop/cop/variable_force/variable.rb +18/-6
lib/rubocop/cops_documentation_generator.rb +1/-1
lib/rubocop/directive_comment.rb +2/-0
lib/rubocop/feature_loader.rb +0/-6
lib/rubocop/lsp/routes.rb +41/-3
lib/rubocop/lsp/runtime.rb +4/-0
lib/rubocop/lsp/server.rb +4/-0
lib/rubocop/lsp/stdin_runner.rb +20/-0
lib/rubocop/pending_cops_reporter.rb +1/-6
lib/rubocop/project_index_loader.rb +16/-0
lib/rubocop/result_cache.rb +6/-4
lib/rubocop/rspec/shared_contexts.rb +14/-2
lib/rubocop/runner.rb +100/-33
lib/rubocop/server/cache.rb +10/-5
lib/rubocop/target_ruby.rb +1/-1
lib/rubocop/version.rb +1/-1 |
2 similar comments
Contributor
gem compare rubocop 1.88.0 1.89.0Compared versions: ["1.88.0", "1.89.0"]
DIFFERENT metadata:
1.88.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.88.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.88/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
1.89.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.89.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.89/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.88.0: 1.88.0
1.89.0: 1.89.0
DIFFERENT files:
1.88.0->1.89.0:
* Added:
lib/rubocop/cop/bundler.rb +19/-0
lib/rubocop/cop/gemspec.rb +22/-0
lib/rubocop/cop/generator/registration_injector.rb +188/-0
lib/rubocop/cop/layout.rb +114/-0
lib/rubocop/cop/lazy_loader.rb +41/-0
lib/rubocop/cop/lint.rb +176/-0
lib/rubocop/cop/lint/deprecated_reference.rb +185/-0
lib/rubocop/cop/lint/name_typo.rb +223/-0
lib/rubocop/cop/lint/unused_private_method.rb +157/-0
lib/rubocop/cop/metrics.rb +31/-0
lib/rubocop/cop/migration.rb +13/-0
lib/rubocop/cop/mixin/reparsed_equivalence.rb +171/-0
lib/rubocop/cop/naming.rb +31/-0
lib/rubocop/cop/security.rb +19/-0
lib/rubocop/cop/style.rb +310/-0
* Changed:
config/default.yml +72/-12
lib/rubocop.rb +17/-626
lib/rubocop/comment_config.rb +35/-19
lib/rubocop/config.rb +53/-0
lib/rubocop/config_validator.rb +38/-1
lib/rubocop/cop/badge.rb +8/-0
lib/rubocop/cop/base.rb +19/-12
lib/rubocop/cop/bundler/gem_comment.rb +3/-1
lib/rubocop/cop/commissioner.rb +13/-11
lib/rubocop/cop/corrector.rb +1/-1
lib/rubocop/cop/correctors/alignment_corrector.rb +55/-5
lib/rubocop/cop/correctors/each_to_for_corrector.rb +1/-1
lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7/-1
lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8/-1
lib/rubocop/cop/gemspec/development_dependencies.rb +1/-1
lib/rubocop/cop/gemspec/duplicated_assignment.rb +12/-2
lib/rubocop/cop/gemspec/require_mfa.rb +4/-1
lib/rubocop/cop/generator.rb +4/-0
lib/rubocop/cop/layout/block_alignment.rb +17/-0
lib/rubocop/cop/layout/class_structure.rb +14/-4
lib/rubocop/cop/layout/comment_indentation.rb +9/-2
lib/rubocop/cop/layout/condition_position.rb +13/-3
lib/rubocop/cop/layout/else_alignment.rb +1/-14
lib/rubocop/cop/layout/empty_comment.rb +8/-10
lib/rubocop/cop/layout/empty_line_between_defs.rb +14/-1
lib/rubocop/cop/layout/first_array_element_indentation.rb +1/-1
lib/rubocop/cop/layout/first_hash_element_indentation.rb +13/-14
lib/rubocop/cop/layout/indentation_width.rb +31/-1
lib/rubocop/cop/layout/leading_comment_space.rb +27/-0
lib/rubocop/cop/layout/line_length.rb +95/-17
lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18/-3
lib/rubocop/cop/layout/redundant_line_break.rb +77/-0
lib/rubocop/cop/layout/space_around_operators.rb +6/-2
lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +33/-34
lib/rubocop/cop/lint/ambiguous_assignment.rb +9/-7
lib/rubocop/cop/lint/ambiguous_block_association.rb +71/-0
lib/rubocop/cop/lint/assignment_in_condition.rb +13/-1
lib/rubocop/cop/lint/constant_reassignment.rb +1/-10
lib/rubocop/cop/lint/constant_resolution.rb +25/-0
lib/rubocop/cop/lint/debugger.rb +13/-1
lib/rubocop/cop/lint/duplicate_methods.rb +202/-22
lib/rubocop/cop/lint/inherit_exception.rb +51/-5
lib/rubocop/cop/lint/literal_as_condition.rb +5/-0
lib/rubocop/cop/lint/literal_in_interpolation.rb +1/-1
lib/rubocop/cop/lint/missing_super.rb +31/-1
lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +7/-0
lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +0/-4
lib/rubocop/cop/lint/safe_navigation_chain.rb +7/-0
lib/rubocop/cop/lint/to_enum_arguments.rb +44/-2
lib/rubocop/cop/lint/to_json.rb +8/-1
lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +32/-8
lib/rubocop/cop/lint/unreachable_code.rb +9/-4
lib/rubocop/cop/lint/useless_numeric_operation.rb +10/-10
lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2/-0
lib/rubocop/cop/lint/void.rb +19/-8
lib/rubocop/cop/metrics/method_length.rb +1/-1
lib/rubocop/cop/metrics/perceived_complexity.rb +38/-7
lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1/-1
lib/rubocop/cop/migration/department_name.rb +0/-4
lib/rubocop/cop/mixin.rb +78/-77
lib/rubocop/cop/mixin/allowed_methods.rb +5/-5
lib/rubocop/cop/mixin/allowed_pattern.rb +5/-1
lib/rubocop/cop/mixin/check_line_breakable.rb +23/-5
lib/rubocop/cop/mixin/endless_method_rewriter.rb +13/-5
lib/rubocop/cop/mixin/forbidden_pattern.rb +5/-1
lib/rubocop/cop/mixin/hash_alignment_styles.rb +23/-6
lib/rubocop/cop/mixin/hash_subset.rb +8/-0
lib/rubocop/cop/mixin/hash_transform_method.rb +4/-0
lib/rubocop/cop/mixin/project_index_help.rb +140/-0
lib/rubocop/cop/mixin/statement_modifier.rb +43/-7
lib/rubocop/cop/naming/accessor_method_name.rb +24/-0
lib/rubocop/cop/naming/file_name.rb +4/-3
lib/rubocop/cop/naming/inclusive_language.rb +8/-2
lib/rubocop/cop/naming/memoized_instance_variable_name.rb +9/-0
lib/rubocop/cop/naming/predicate_prefix.rb +33/-5
lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +9/-3
lib/rubocop/cop/naming/variable_number.rb +3/-1
lib/rubocop/cop/offense.rb +10/-6
lib/rubocop/cop/registry.rb +153/-43
lib/rubocop/cop/security/io_methods.rb +1/-1
lib/rubocop/cop/security/marshal_load.rb +1/-1
lib/rubocop/cop/style/accessor_grouping.rb +11/-1
lib/rubocop/cop/style/arguments_forwarding.rb +1/-1
lib/rubocop/cop/style/array_intersect.rb +24/-5
lib/rubocop/cop/style/class_and_module_children.rb +78/-18
lib/rubocop/cop/style/collection_compact.rb +1/-1
lib/rubocop/cop/style/conditional_assignment.rb +22/-0
lib/rubocop/cop/style/copyright.rb +6/-1
lib/rubocop/cop/style/data_inheritance.rb +4/-0
lib/rubocop/cop/style/def_with_parentheses.rb +6/-2
lib/rubocop/cop/style/dir_empty.rb +4/-0
lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +41/-3
lib/rubocop/cop/style/documentation.rb +47/-0
lib/rubocop/cop/style/documentation_method.rb +5/-1
lib/rubocop/cop/style/empty_case_condition.rb +12/-2
lib/rubocop/cop/style/empty_class_definition.rb +8/-1
lib/rubocop/cop/style/empty_heredoc.rb +4/-0
lib/rubocop/cop/style/empty_literal.rb +7/-2
lib/rubocop/cop/style/empty_string_inside_interpolation.rb +30/-20
lib/rubocop/cop/style/endless_method.rb +0/-10
lib/rubocop/cop/style/env_home.rb +4/-0
lib/rubocop/cop/style/even_odd.rb +11/-1
lib/rubocop/cop/style/exact_regexp_match.rb +8/-1
lib/rubocop/cop/style/file_null.rb +4/-2
lib/rubocop/cop/style/format_string.rb +13/-1
lib/rubocop/cop/style/hash_conversion.rb +14/-6
lib/rubocop/cop/style/hash_lookup_method.rb +2/-6
lib/rubocop/cop/style/hash_syntax.rb +2/-0
lib/rubocop/cop/style/identical_conditional_branches.rb +15/-4
lib/rubocop/cop/style/if_unless_modifier.rb +11/-52
lib/rubocop/cop/style/if_with_semicolon.rb +9/-1
lib/rubocop/cop/style/inline_comment.rb +1/-1
lib/rubocop/cop/style/invertible_unless_condition.rb +25/-5
lib/rubocop/cop/style/keyword_arguments_merging.rb +4/-0
lib/rubocop/cop/style/keyword_parameters_order.rb +7/-3
lib/rubocop/cop/style/lambda.rb +11/-1
lib/rubocop/cop/style/lambda_call.rb +11/-0
lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11/-0
lib/rubocop/cop/style/map_into_array.rb +1/-1
lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20/-3
lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11/-5
lib/rubocop/cop/style/method_def_parentheses.rb +5/-1
lib/rubocop/cop/style/min_max_comparison.rb +3/-0
lib/rubocop/cop/style/missing_respond_to_missing.rb +40/-7
lib/rubocop/cop/style/mixin_usage.rb +1/-1
lib/rubocop/cop/style/module_function.rb +4/-2
lib/rubocop/cop/style/multiline_if_then.rb +7/-1
lib/rubocop/cop/style/multiline_memoization.rb +7/-1
lib/rubocop/cop/style/multiline_method_signature.rb +11/-4
lib/rubocop/cop/style/multiple_comparison.rb +33/-22
lib/rubocop/cop/style/mutable_constant.rb +5/-0
lib/rubocop/cop/style/negative_array_index.rb +3/-1
lib/rubocop/cop/style/nil_lambda.rb +8/-0
lib/rubocop/cop/style/numeric_predicate.rb +1/-1
lib/rubocop/cop/style/open_struct_use.rb +1/-1
lib/rubocop/cop/style/option_hash.rb +1/-1
lib/rubocop/cop/style/optional_arguments.rb +1/-0
lib/rubocop/cop/style/parallel_assignment.rb +11/-2
lib/rubocop/cop/style/percent_literal_delimiters.rb +2/-0
lib/rubocop/cop/style/perl_backrefs.rb +5/-3
lib/rubocop/cop/style/redundant_assignment.rb +11/-0
lib/rubocop/cop/style/redundant_constant_base.rb +37/-1
lib/rubocop/cop/style/redundant_current_directory_in_path.rb +13/-1
lib/rubocop/cop/style/redundant_exception.rb +6/-0
lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9/-0
lib/rubocop/cop/style/redundant_filter_chain.rb +1/-1
lib/rubocop/cop/style/redundant_format.rb +40/-3
lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6/-1
lib/rubocop/cop/style/redundant_line_continuation.rb +80/-129
lib/rubocop/cop/style/redundant_parentheses.rb +63/-63
lib/rubocop/cop/style/redundant_regexp_escape.rb +8/-4
lib/rubocop/cop/style/redundant_self.rb +9/-0
lib/rubocop/cop/style/redundant_struct_keyword_init.rb +23/-4
lib/rubocop/cop/style/safe_navigation.rb +10/-0
lib/rubocop/cop/style/semicolon.rb +4/-4
lib/rubocop/cop/style/single_line_do_end_block.rb +17/-4
lib/rubocop/cop/style/sole_nested_conditional.rb +20/-3
lib/rubocop/cop/style/static_class.rb +21/-0
lib/rubocop/cop/style/string_hash_keys.rb +1/-0
lib/rubocop/cop/style/struct_inheritance.rb +3/-1
lib/rubocop/cop/style/ternary_parentheses.rb +11/-0
lib/rubocop/cop/style/trailing_underscore_variable.rb +7/-8
lib/rubocop/cop/style/trivial_accessors.rb +1/-1
lib/rubocop/cop/team.rb +66/-7
lib/rubocop/cop/variable_force/variable.rb +18/-6
lib/rubocop/cops_documentation_generator.rb +1/-1
lib/rubocop/directive_comment.rb +2/-0
lib/rubocop/feature_loader.rb +0/-6
lib/rubocop/lsp/routes.rb +41/-3
lib/rubocop/lsp/runtime.rb +4/-0
lib/rubocop/lsp/server.rb +4/-0
lib/rubocop/lsp/stdin_runner.rb +20/-0
lib/rubocop/pending_cops_reporter.rb +1/-6
lib/rubocop/project_index_loader.rb +16/-0
lib/rubocop/result_cache.rb +6/-4
lib/rubocop/rspec/shared_contexts.rb +14/-2
lib/rubocop/runner.rb +100/-33
lib/rubocop/server/cache.rb +10/-5
lib/rubocop/target_ruby.rb +1/-1
lib/rubocop/version.rb +1/-1 |
Contributor
gem compare rubocop 1.88.0 1.89.0Compared versions: ["1.88.0", "1.89.0"]
DIFFERENT metadata:
1.88.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.88.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.88/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
1.89.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.89.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.89/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.88.0: 1.88.0
1.89.0: 1.89.0
DIFFERENT files:
1.88.0->1.89.0:
* Added:
lib/rubocop/cop/bundler.rb +19/-0
lib/rubocop/cop/gemspec.rb +22/-0
lib/rubocop/cop/generator/registration_injector.rb +188/-0
lib/rubocop/cop/layout.rb +114/-0
lib/rubocop/cop/lazy_loader.rb +41/-0
lib/rubocop/cop/lint.rb +176/-0
lib/rubocop/cop/lint/deprecated_reference.rb +185/-0
lib/rubocop/cop/lint/name_typo.rb +223/-0
lib/rubocop/cop/lint/unused_private_method.rb +157/-0
lib/rubocop/cop/metrics.rb +31/-0
lib/rubocop/cop/migration.rb +13/-0
lib/rubocop/cop/mixin/reparsed_equivalence.rb +171/-0
lib/rubocop/cop/naming.rb +31/-0
lib/rubocop/cop/security.rb +19/-0
lib/rubocop/cop/style.rb +310/-0
* Changed:
config/default.yml +72/-12
lib/rubocop.rb +17/-626
lib/rubocop/comment_config.rb +35/-19
lib/rubocop/config.rb +53/-0
lib/rubocop/config_validator.rb +38/-1
lib/rubocop/cop/badge.rb +8/-0
lib/rubocop/cop/base.rb +19/-12
lib/rubocop/cop/bundler/gem_comment.rb +3/-1
lib/rubocop/cop/commissioner.rb +13/-11
lib/rubocop/cop/corrector.rb +1/-1
lib/rubocop/cop/correctors/alignment_corrector.rb +55/-5
lib/rubocop/cop/correctors/each_to_for_corrector.rb +1/-1
lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7/-1
lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8/-1
lib/rubocop/cop/gemspec/development_dependencies.rb +1/-1
lib/rubocop/cop/gemspec/duplicated_assignment.rb +12/-2
lib/rubocop/cop/gemspec/require_mfa.rb +4/-1
lib/rubocop/cop/generator.rb +4/-0
lib/rubocop/cop/layout/block_alignment.rb +17/-0
lib/rubocop/cop/layout/class_structure.rb +14/-4
lib/rubocop/cop/layout/comment_indentation.rb +9/-2
lib/rubocop/cop/layout/condition_position.rb +13/-3
lib/rubocop/cop/layout/else_alignment.rb +1/-14
lib/rubocop/cop/layout/empty_comment.rb +8/-10
lib/rubocop/cop/layout/empty_line_between_defs.rb +14/-1
lib/rubocop/cop/layout/first_array_element_indentation.rb +1/-1
lib/rubocop/cop/layout/first_hash_element_indentation.rb +13/-14
lib/rubocop/cop/layout/indentation_width.rb +31/-1
lib/rubocop/cop/layout/leading_comment_space.rb +27/-0
lib/rubocop/cop/layout/line_length.rb +95/-17
lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18/-3
lib/rubocop/cop/layout/redundant_line_break.rb +77/-0
lib/rubocop/cop/layout/space_around_operators.rb +6/-2
lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +33/-34
lib/rubocop/cop/lint/ambiguous_assignment.rb +9/-7
lib/rubocop/cop/lint/ambiguous_block_association.rb +71/-0
lib/rubocop/cop/lint/assignment_in_condition.rb +13/-1
lib/rubocop/cop/lint/constant_reassignment.rb +1/-10
lib/rubocop/cop/lint/constant_resolution.rb +25/-0
lib/rubocop/cop/lint/debugger.rb +13/-1
lib/rubocop/cop/lint/duplicate_methods.rb +202/-22
lib/rubocop/cop/lint/inherit_exception.rb +51/-5
lib/rubocop/cop/lint/literal_as_condition.rb +5/-0
lib/rubocop/cop/lint/literal_in_interpolation.rb +1/-1
lib/rubocop/cop/lint/missing_super.rb +31/-1
lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +7/-0
lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +0/-4
lib/rubocop/cop/lint/safe_navigation_chain.rb +7/-0
lib/rubocop/cop/lint/to_enum_arguments.rb +44/-2
lib/rubocop/cop/lint/to_json.rb +8/-1
lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +32/-8
lib/rubocop/cop/lint/unreachable_code.rb +9/-4
lib/rubocop/cop/lint/useless_numeric_operation.rb +10/-10
lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2/-0
lib/rubocop/cop/lint/void.rb +19/-8
lib/rubocop/cop/metrics/method_length.rb +1/-1
lib/rubocop/cop/metrics/perceived_complexity.rb +38/-7
lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1/-1
lib/rubocop/cop/migration/department_name.rb +0/-4
lib/rubocop/cop/mixin.rb +78/-77
lib/rubocop/cop/mixin/allowed_methods.rb +5/-5
lib/rubocop/cop/mixin/allowed_pattern.rb +5/-1
lib/rubocop/cop/mixin/check_line_breakable.rb +23/-5
lib/rubocop/cop/mixin/endless_method_rewriter.rb +13/-5
lib/rubocop/cop/mixin/forbidden_pattern.rb +5/-1
lib/rubocop/cop/mixin/hash_alignment_styles.rb +23/-6
lib/rubocop/cop/mixin/hash_subset.rb +8/-0
lib/rubocop/cop/mixin/hash_transform_method.rb +4/-0
lib/rubocop/cop/mixin/project_index_help.rb +140/-0
lib/rubocop/cop/mixin/statement_modifier.rb +43/-7
lib/rubocop/cop/naming/accessor_method_name.rb +24/-0
lib/rubocop/cop/naming/file_name.rb +4/-3
lib/rubocop/cop/naming/inclusive_language.rb +8/-2
lib/rubocop/cop/naming/memoized_instance_variable_name.rb +9/-0
lib/rubocop/cop/naming/predicate_prefix.rb +33/-5
lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +9/-3
lib/rubocop/cop/naming/variable_number.rb +3/-1
lib/rubocop/cop/offense.rb +10/-6
lib/rubocop/cop/registry.rb +153/-43
lib/rubocop/cop/security/io_methods.rb +1/-1
lib/rubocop/cop/security/marshal_load.rb +1/-1
lib/rubocop/cop/style/accessor_grouping.rb +11/-1
lib/rubocop/cop/style/arguments_forwarding.rb +1/-1
lib/rubocop/cop/style/array_intersect.rb +24/-5
lib/rubocop/cop/style/class_and_module_children.rb +78/-18
lib/rubocop/cop/style/collection_compact.rb +1/-1
lib/rubocop/cop/style/conditional_assignment.rb +22/-0
lib/rubocop/cop/style/copyright.rb +6/-1
lib/rubocop/cop/style/data_inheritance.rb +4/-0
lib/rubocop/cop/style/def_with_parentheses.rb +6/-2
lib/rubocop/cop/style/dir_empty.rb +4/-0
lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +41/-3
lib/rubocop/cop/style/documentation.rb +47/-0
lib/rubocop/cop/style/documentation_method.rb +5/-1
lib/rubocop/cop/style/empty_case_condition.rb +12/-2
lib/rubocop/cop/style/empty_class_definition.rb +8/-1
lib/rubocop/cop/style/empty_heredoc.rb +4/-0
lib/rubocop/cop/style/empty_literal.rb +7/-2
lib/rubocop/cop/style/empty_string_inside_interpolation.rb +30/-20
lib/rubocop/cop/style/endless_method.rb +0/-10
lib/rubocop/cop/style/env_home.rb +4/-0
lib/rubocop/cop/style/even_odd.rb +11/-1
lib/rubocop/cop/style/exact_regexp_match.rb +8/-1
lib/rubocop/cop/style/file_null.rb +4/-2
lib/rubocop/cop/style/format_string.rb +13/-1
lib/rubocop/cop/style/hash_conversion.rb +14/-6
lib/rubocop/cop/style/hash_lookup_method.rb +2/-6
lib/rubocop/cop/style/hash_syntax.rb +2/-0
lib/rubocop/cop/style/identical_conditional_branches.rb +15/-4
lib/rubocop/cop/style/if_unless_modifier.rb +11/-52
lib/rubocop/cop/style/if_with_semicolon.rb +9/-1
lib/rubocop/cop/style/inline_comment.rb +1/-1
lib/rubocop/cop/style/invertible_unless_condition.rb +25/-5
lib/rubocop/cop/style/keyword_arguments_merging.rb +4/-0
lib/rubocop/cop/style/keyword_parameters_order.rb +7/-3
lib/rubocop/cop/style/lambda.rb +11/-1
lib/rubocop/cop/style/lambda_call.rb +11/-0
lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11/-0
lib/rubocop/cop/style/map_into_array.rb +1/-1
lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20/-3
lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11/-5
lib/rubocop/cop/style/method_def_parentheses.rb +5/-1
lib/rubocop/cop/style/min_max_comparison.rb +3/-0
lib/rubocop/cop/style/missing_respond_to_missing.rb +40/-7
lib/rubocop/cop/style/mixin_usage.rb +1/-1
lib/rubocop/cop/style/module_function.rb +4/-2
lib/rubocop/cop/style/multiline_if_then.rb +7/-1
lib/rubocop/cop/style/multiline_memoization.rb +7/-1
lib/rubocop/cop/style/multiline_method_signature.rb +11/-4
lib/rubocop/cop/style/multiple_comparison.rb +33/-22
lib/rubocop/cop/style/mutable_constant.rb +5/-0
lib/rubocop/cop/style/negative_array_index.rb +3/-1
lib/rubocop/cop/style/nil_lambda.rb +8/-0
lib/rubocop/cop/style/numeric_predicate.rb +1/-1
lib/rubocop/cop/style/open_struct_use.rb +1/-1
lib/rubocop/cop/style/option_hash.rb +1/-1
lib/rubocop/cop/style/optional_arguments.rb +1/-0
lib/rubocop/cop/style/parallel_assignment.rb +11/-2
lib/rubocop/cop/style/percent_literal_delimiters.rb +2/-0
lib/rubocop/cop/style/perl_backrefs.rb +5/-3
lib/rubocop/cop/style/redundant_assignment.rb +11/-0
lib/rubocop/cop/style/redundant_constant_base.rb +37/-1
lib/rubocop/cop/style/redundant_current_directory_in_path.rb +13/-1
lib/rubocop/cop/style/redundant_exception.rb +6/-0
lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9/-0
lib/rubocop/cop/style/redundant_filter_chain.rb +1/-1
lib/rubocop/cop/style/redundant_format.rb +40/-3
lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6/-1
lib/rubocop/cop/style/redundant_line_continuation.rb +80/-129
lib/rubocop/cop/style/redundant_parentheses.rb +63/-63
lib/rubocop/cop/style/redundant_regexp_escape.rb +8/-4
lib/rubocop/cop/style/redundant_self.rb +9/-0
lib/rubocop/cop/style/redundant_struct_keyword_init.rb +23/-4
lib/rubocop/cop/style/safe_navigation.rb +10/-0
lib/rubocop/cop/style/semicolon.rb +4/-4
lib/rubocop/cop/style/single_line_do_end_block.rb +17/-4
lib/rubocop/cop/style/sole_nested_conditional.rb +20/-3
lib/rubocop/cop/style/static_class.rb +21/-0
lib/rubocop/cop/style/string_hash_keys.rb +1/-0
lib/rubocop/cop/style/struct_inheritance.rb +3/-1
lib/rubocop/cop/style/ternary_parentheses.rb +11/-0
lib/rubocop/cop/style/trailing_underscore_variable.rb +7/-8
lib/rubocop/cop/style/trivial_accessors.rb +1/-1
lib/rubocop/cop/team.rb +66/-7
lib/rubocop/cop/variable_force/variable.rb +18/-6
lib/rubocop/cops_documentation_generator.rb +1/-1
lib/rubocop/directive_comment.rb +2/-0
lib/rubocop/feature_loader.rb +0/-6
lib/rubocop/lsp/routes.rb +41/-3
lib/rubocop/lsp/runtime.rb +4/-0
lib/rubocop/lsp/server.rb +4/-0
lib/rubocop/lsp/stdin_runner.rb +20/-0
lib/rubocop/pending_cops_reporter.rb +1/-6
lib/rubocop/project_index_loader.rb +16/-0
lib/rubocop/result_cache.rb +6/-4
lib/rubocop/rspec/shared_contexts.rb +14/-2
lib/rubocop/runner.rb +100/-33
lib/rubocop/server/cache.rb +10/-5
lib/rubocop/target_ruby.rb +1/-1
lib/rubocop/version.rb +1/-1 |
Contributor
|
1 similar comment
Contributor
|
Contributor
gem compare rubocop 1.88.0 1.89.0Compared versions: ["1.88.0", "1.89.0"]
DIFFERENT metadata:
1.88.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.88.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.88/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
1.89.0: {"homepage_uri" => "https://rubocop.org/", "changelog_uri" => "https://github.com/rubocop/rubocop/releases/tag/v1.89.0", "source_code_uri" => "https://github.com/rubocop/rubocop/", "documentation_uri" => "https://docs.rubocop.org/rubocop/1.89/", "bug_tracker_uri" => "https://github.com/rubocop/rubocop/issues", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.88.0: 1.88.0
1.89.0: 1.89.0
DIFFERENT files:
1.88.0->1.89.0:
* Added:
lib/rubocop/cop/bundler.rb +19/-0
lib/rubocop/cop/gemspec.rb +22/-0
lib/rubocop/cop/generator/registration_injector.rb +188/-0
lib/rubocop/cop/layout.rb +114/-0
lib/rubocop/cop/lazy_loader.rb +41/-0
lib/rubocop/cop/lint.rb +176/-0
lib/rubocop/cop/lint/deprecated_reference.rb +185/-0
lib/rubocop/cop/lint/name_typo.rb +223/-0
lib/rubocop/cop/lint/unused_private_method.rb +157/-0
lib/rubocop/cop/metrics.rb +31/-0
lib/rubocop/cop/migration.rb +13/-0
lib/rubocop/cop/mixin/reparsed_equivalence.rb +171/-0
lib/rubocop/cop/naming.rb +31/-0
lib/rubocop/cop/security.rb +19/-0
lib/rubocop/cop/style.rb +310/-0
* Changed:
config/default.yml +72/-12
lib/rubocop.rb +17/-626
lib/rubocop/comment_config.rb +35/-19
lib/rubocop/config.rb +53/-0
lib/rubocop/config_validator.rb +38/-1
lib/rubocop/cop/badge.rb +8/-0
lib/rubocop/cop/base.rb +19/-12
lib/rubocop/cop/bundler/gem_comment.rb +3/-1
lib/rubocop/cop/commissioner.rb +13/-11
lib/rubocop/cop/corrector.rb +1/-1
lib/rubocop/cop/correctors/alignment_corrector.rb +55/-5
lib/rubocop/cop/correctors/each_to_for_corrector.rb +1/-1
lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +7/-1
lib/rubocop/cop/correctors/ordered_gem_corrector.rb +8/-1
lib/rubocop/cop/gemspec/development_dependencies.rb +1/-1
lib/rubocop/cop/gemspec/duplicated_assignment.rb +12/-2
lib/rubocop/cop/gemspec/require_mfa.rb +4/-1
lib/rubocop/cop/generator.rb +4/-0
lib/rubocop/cop/layout/block_alignment.rb +17/-0
lib/rubocop/cop/layout/class_structure.rb +14/-4
lib/rubocop/cop/layout/comment_indentation.rb +9/-2
lib/rubocop/cop/layout/condition_position.rb +13/-3
lib/rubocop/cop/layout/else_alignment.rb +1/-14
lib/rubocop/cop/layout/empty_comment.rb +8/-10
lib/rubocop/cop/layout/empty_line_between_defs.rb +14/-1
lib/rubocop/cop/layout/first_array_element_indentation.rb +1/-1
lib/rubocop/cop/layout/first_hash_element_indentation.rb +13/-14
lib/rubocop/cop/layout/indentation_width.rb +31/-1
lib/rubocop/cop/layout/leading_comment_space.rb +27/-0
lib/rubocop/cop/layout/line_length.rb +95/-17
lib/rubocop/cop/layout/multiline_method_call_indentation.rb +18/-3
lib/rubocop/cop/layout/redundant_line_break.rb +77/-0
lib/rubocop/cop/layout/space_around_operators.rb +6/-2
lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +33/-34
lib/rubocop/cop/lint/ambiguous_assignment.rb +9/-7
lib/rubocop/cop/lint/ambiguous_block_association.rb +71/-0
lib/rubocop/cop/lint/assignment_in_condition.rb +13/-1
lib/rubocop/cop/lint/constant_reassignment.rb +1/-10
lib/rubocop/cop/lint/constant_resolution.rb +25/-0
lib/rubocop/cop/lint/debugger.rb +13/-1
lib/rubocop/cop/lint/duplicate_methods.rb +202/-22
lib/rubocop/cop/lint/inherit_exception.rb +51/-5
lib/rubocop/cop/lint/literal_as_condition.rb +5/-0
lib/rubocop/cop/lint/literal_in_interpolation.rb +1/-1
lib/rubocop/cop/lint/missing_super.rb +31/-1
lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +7/-0
lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +0/-4
lib/rubocop/cop/lint/safe_navigation_chain.rb +7/-0
lib/rubocop/cop/lint/to_enum_arguments.rb +44/-2
lib/rubocop/cop/lint/to_json.rb +8/-1
lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +32/-8
lib/rubocop/cop/lint/unreachable_code.rb +9/-4
lib/rubocop/cop/lint/useless_numeric_operation.rb +10/-10
lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2/-0
lib/rubocop/cop/lint/void.rb +19/-8
lib/rubocop/cop/metrics/method_length.rb +1/-1
lib/rubocop/cop/metrics/perceived_complexity.rb +38/-7
lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1/-1
lib/rubocop/cop/migration/department_name.rb +0/-4
lib/rubocop/cop/mixin.rb +78/-77
lib/rubocop/cop/mixin/allowed_methods.rb +5/-5
lib/rubocop/cop/mixin/allowed_pattern.rb +5/-1
lib/rubocop/cop/mixin/check_line_breakable.rb +23/-5
lib/rubocop/cop/mixin/endless_method_rewriter.rb +13/-5
lib/rubocop/cop/mixin/forbidden_pattern.rb +5/-1
lib/rubocop/cop/mixin/hash_alignment_styles.rb +23/-6
lib/rubocop/cop/mixin/hash_subset.rb +8/-0
lib/rubocop/cop/mixin/hash_transform_method.rb +4/-0
lib/rubocop/cop/mixin/project_index_help.rb +140/-0
lib/rubocop/cop/mixin/statement_modifier.rb +43/-7
lib/rubocop/cop/naming/accessor_method_name.rb +24/-0
lib/rubocop/cop/naming/file_name.rb +4/-3
lib/rubocop/cop/naming/inclusive_language.rb +8/-2
lib/rubocop/cop/naming/memoized_instance_variable_name.rb +9/-0
lib/rubocop/cop/naming/predicate_prefix.rb +33/-5
lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +9/-3
lib/rubocop/cop/naming/variable_number.rb +3/-1
lib/rubocop/cop/offense.rb +10/-6
lib/rubocop/cop/registry.rb +153/-43
lib/rubocop/cop/security/io_methods.rb +1/-1
lib/rubocop/cop/security/marshal_load.rb +1/-1
lib/rubocop/cop/style/accessor_grouping.rb +11/-1
lib/rubocop/cop/style/arguments_forwarding.rb +1/-1
lib/rubocop/cop/style/array_intersect.rb +24/-5
lib/rubocop/cop/style/class_and_module_children.rb +78/-18
lib/rubocop/cop/style/collection_compact.rb +1/-1
lib/rubocop/cop/style/conditional_assignment.rb +22/-0
lib/rubocop/cop/style/copyright.rb +6/-1
lib/rubocop/cop/style/data_inheritance.rb +4/-0
lib/rubocop/cop/style/def_with_parentheses.rb +6/-2
lib/rubocop/cop/style/dir_empty.rb +4/-0
lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +41/-3
lib/rubocop/cop/style/documentation.rb +47/-0
lib/rubocop/cop/style/documentation_method.rb +5/-1
lib/rubocop/cop/style/empty_case_condition.rb +12/-2
lib/rubocop/cop/style/empty_class_definition.rb +8/-1
lib/rubocop/cop/style/empty_heredoc.rb +4/-0
lib/rubocop/cop/style/empty_literal.rb +7/-2
lib/rubocop/cop/style/empty_string_inside_interpolation.rb +30/-20
lib/rubocop/cop/style/endless_method.rb +0/-10
lib/rubocop/cop/style/env_home.rb +4/-0
lib/rubocop/cop/style/even_odd.rb +11/-1
lib/rubocop/cop/style/exact_regexp_match.rb +8/-1
lib/rubocop/cop/style/file_null.rb +4/-2
lib/rubocop/cop/style/format_string.rb +13/-1
lib/rubocop/cop/style/hash_conversion.rb +14/-6
lib/rubocop/cop/style/hash_lookup_method.rb +2/-6
lib/rubocop/cop/style/hash_syntax.rb +2/-0
lib/rubocop/cop/style/identical_conditional_branches.rb +15/-4
lib/rubocop/cop/style/if_unless_modifier.rb +11/-52
lib/rubocop/cop/style/if_with_semicolon.rb +9/-1
lib/rubocop/cop/style/inline_comment.rb +1/-1
lib/rubocop/cop/style/invertible_unless_condition.rb +25/-5
lib/rubocop/cop/style/keyword_arguments_merging.rb +4/-0
lib/rubocop/cop/style/keyword_parameters_order.rb +7/-3
lib/rubocop/cop/style/lambda.rb +11/-1
lib/rubocop/cop/style/lambda_call.rb +11/-0
lib/rubocop/cop/style/map_compact_with_conditional_block.rb +11/-0
lib/rubocop/cop/style/map_into_array.rb +1/-1
lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +20/-3
lib/rubocop/cop/style/method_call_without_args_parentheses.rb +11/-5
lib/rubocop/cop/style/method_def_parentheses.rb +5/-1
lib/rubocop/cop/style/min_max_comparison.rb +3/-0
lib/rubocop/cop/style/missing_respond_to_missing.rb +40/-7
lib/rubocop/cop/style/mixin_usage.rb +1/-1
lib/rubocop/cop/style/module_function.rb +4/-2
lib/rubocop/cop/style/multiline_if_then.rb +7/-1
lib/rubocop/cop/style/multiline_memoization.rb +7/-1
lib/rubocop/cop/style/multiline_method_signature.rb +11/-4
lib/rubocop/cop/style/multiple_comparison.rb +33/-22
lib/rubocop/cop/style/mutable_constant.rb +5/-0
lib/rubocop/cop/style/negative_array_index.rb +3/-1
lib/rubocop/cop/style/nil_lambda.rb +8/-0
lib/rubocop/cop/style/numeric_predicate.rb +1/-1
lib/rubocop/cop/style/open_struct_use.rb +1/-1
lib/rubocop/cop/style/option_hash.rb +1/-1
lib/rubocop/cop/style/optional_arguments.rb +1/-0
lib/rubocop/cop/style/parallel_assignment.rb +11/-2
lib/rubocop/cop/style/percent_literal_delimiters.rb +2/-0
lib/rubocop/cop/style/perl_backrefs.rb +5/-3
lib/rubocop/cop/style/redundant_assignment.rb +11/-0
lib/rubocop/cop/style/redundant_constant_base.rb +37/-1
lib/rubocop/cop/style/redundant_current_directory_in_path.rb +13/-1
lib/rubocop/cop/style/redundant_exception.rb +6/-0
lib/rubocop/cop/style/redundant_file_extension_in_require.rb +9/-0
lib/rubocop/cop/style/redundant_filter_chain.rb +1/-1
lib/rubocop/cop/style/redundant_format.rb +40/-3
lib/rubocop/cop/style/redundant_heredoc_delimiter_quotes.rb +6/-1
lib/rubocop/cop/style/redundant_line_continuation.rb +80/-129
lib/rubocop/cop/style/redundant_parentheses.rb +63/-63
lib/rubocop/cop/style/redundant_regexp_escape.rb +8/-4
lib/rubocop/cop/style/redundant_self.rb +9/-0
lib/rubocop/cop/style/redundant_struct_keyword_init.rb +23/-4
lib/rubocop/cop/style/safe_navigation.rb +10/-0
lib/rubocop/cop/style/semicolon.rb +4/-4
lib/rubocop/cop/style/single_line_do_end_block.rb +17/-4
lib/rubocop/cop/style/sole_nested_conditional.rb +20/-3
lib/rubocop/cop/style/static_class.rb +21/-0
lib/rubocop/cop/style/string_hash_keys.rb +1/-0
lib/rubocop/cop/style/struct_inheritance.rb +3/-1
lib/rubocop/cop/style/ternary_parentheses.rb +11/-0
lib/rubocop/cop/style/trailing_underscore_variable.rb +7/-8
lib/rubocop/cop/style/trivial_accessors.rb +1/-1
lib/rubocop/cop/team.rb +66/-7
lib/rubocop/cop/variable_force/variable.rb +18/-6
lib/rubocop/cops_documentation_generator.rb +1/-1
lib/rubocop/directive_comment.rb +2/-0
lib/rubocop/feature_loader.rb +0/-6
lib/rubocop/lsp/routes.rb +41/-3
lib/rubocop/lsp/runtime.rb +4/-0
lib/rubocop/lsp/server.rb +4/-0
lib/rubocop/lsp/stdin_runner.rb +20/-0
lib/rubocop/pending_cops_reporter.rb +1/-6
lib/rubocop/project_index_loader.rb +16/-0
lib/rubocop/result_cache.rb +6/-4
lib/rubocop/rspec/shared_contexts.rb +14/-2
lib/rubocop/runner.rb +100/-33
lib/rubocop/server/cache.rb +10/-5
lib/rubocop/target_ruby.rb +1/-1
lib/rubocop/version.rb +1/-1 |
Contributor
gem compare rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT version:
1.49.1: 1.49.1
1.50.0: 1.50.0
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb +30/-7
lib/rubocop/ast/node/and_node.rb +2/-2
lib/rubocop/ast/node/case_match_node.rb +1/-1
lib/rubocop/ast/node/case_node.rb +1/-1
lib/rubocop/ast/node/for_node.rb +1/-1
lib/rubocop/ast/node/hash_node.rb +6/-6
lib/rubocop/ast/node/if_node.rb +1/-1
lib/rubocop/ast/node/mixin/descendence.rb +21/-4
lib/rubocop/ast/node/mixin/method_dispatch_node.rb +1/-1
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5/-5
lib/rubocop/ast/node/mixin/numeric_node.rb +1/-1
lib/rubocop/ast/node/pair_node.rb +1/-1
lib/rubocop/ast/node/symbol_node.rb +1/-1
lib/rubocop/ast/node/when_node.rb +1/-1
lib/rubocop/ast/node/while_node.rb +2/-2
lib/rubocop/ast/processed_source.rb +133/-21
lib/rubocop/ast/version.rb +1/-1 |
1 similar comment
Contributor
gem compare rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT version:
1.49.1: 1.49.1
1.50.0: 1.50.0
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb +30/-7
lib/rubocop/ast/node/and_node.rb +2/-2
lib/rubocop/ast/node/case_match_node.rb +1/-1
lib/rubocop/ast/node/case_node.rb +1/-1
lib/rubocop/ast/node/for_node.rb +1/-1
lib/rubocop/ast/node/hash_node.rb +6/-6
lib/rubocop/ast/node/if_node.rb +1/-1
lib/rubocop/ast/node/mixin/descendence.rb +21/-4
lib/rubocop/ast/node/mixin/method_dispatch_node.rb +1/-1
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5/-5
lib/rubocop/ast/node/mixin/numeric_node.rb +1/-1
lib/rubocop/ast/node/pair_node.rb +1/-1
lib/rubocop/ast/node/symbol_node.rb +1/-1
lib/rubocop/ast/node/when_node.rb +1/-1
lib/rubocop/ast/node/while_node.rb +2/-2
lib/rubocop/ast/processed_source.rb +133/-21
lib/rubocop/ast/version.rb +1/-1 |
Contributor
|
Contributor
gem compare --diff rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node.rb 2026-08-10 02:37:39.565925701 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node.rb 2026-08-10 02:37:39.588925803 +0000
@@ -78,0 +79,7 @@
+ # The node types which could have a source matching `SPECIAL_KEYWORDS`:
+ # `__FILE__` parses as `str`, `__LINE__` as `int` and `__ENCODING__` as
+ # `const` (or as their own node types when the builder emits them);
+ # `str` and `sym` also cover word/symbol array elements, string parts
+ # and hash labels spelling out one of these keywords.
+ SPECIAL_KEYWORD_TYPES = %i[str sym int const __FILE__ __LINE__ __ENCODING__].to_set.freeze
+ private_constant :SPECIAL_KEYWORD_TYPES
@@ -174,0 +182,7 @@
+ type_in?(types)
+ end
+
+ # Non-splatting variant of `type?`, used by the traversal hot paths to
+ # avoid allocating an array per visited node.
+ # @api private
+ def type_in?(types)
@@ -290 +304 @@
- # @return [Array<Node>] the different parts of the ndde
+ # @return [Array<Node>] the different parts of the node
@@ -506 +520 @@
- SPECIAL_KEYWORDS.include?(source)
+ SPECIAL_KEYWORD_TYPES.include?(type) && SPECIAL_KEYWORDS.include?(source)
@@ -522 +536 @@
- parent&.call_type? && eql?(parent.receiver)
+ parent&.call_type? && equal?(parent.receiver)
@@ -526 +540,3 @@
- parent&.send_type? && parent.arguments.include?(self)
+ return false unless parent&.send_type?
+
+ parent.arguments.any? { |argument| argument.equal?(self) }
@@ -698,3 +714,10 @@
- while (current_node = last_node.parent)
- yield current_node if types.empty? || current_node.type?(*types)
- last_node = current_node
+ if types.empty?
+ while (current_node = last_node.parent)
+ yield current_node
+ last_node = current_node
+ end
+ else
+ while (current_node = last_node.parent)
+ yield current_node if current_node.type_in?(types)
+ last_node = current_node
+ end
lib/rubocop/ast/node/and_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:37:39.566925706 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:37:39.589925807 +0000
@@ -5 +5 @@
- # A node extension for `until` nodes. This will be used in place of a plain
+ # A node extension for `and` nodes. This will be used in place of a plain
@@ -7 +7 @@
- # to all `until` nodes within RuboCop.
+ # to all `and` nodes within RuboCop.
lib/rubocop/ast/node/case_match_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:37:39.568925715 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:37:39.590925811 +0000
@@ -20 +20 @@
- return in_pattern_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/case_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:37:39.568925715 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:37:39.590925811 +0000
@@ -20 +20 @@
- return when_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/for_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:37:39.570925723 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:37:39.592925820 +0000
@@ -11 +11 @@
- # @return [String] the keyword of the `until` statement
+ # @return [String] the keyword of the `for` statement
lib/rubocop/ast/node/hash_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:37:39.571925728 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:37:39.592925820 +0000
@@ -59,2 +59,2 @@
- def each_key(&block)
- return pairs.map(&:key).to_enum unless block
+ def each_key
+ return to_enum(__method__) unless block_given?
@@ -62 +62 @@
- pairs.map(&:key).each(&block)
+ each_child_node(:pair) { |pair| yield pair.key }
@@ -83,2 +83,2 @@
- def each_value(&block)
- return pairs.map(&:value).to_enum unless block
+ def each_value
+ return to_enum(__method__) unless block_given?
@@ -86 +86 @@
- pairs.map(&:value).each(&block)
+ each_child_node(:pair) { |pair| yield pair.value }
lib/rubocop/ast/node/if_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:37:39.571925728 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:37:39.592925820 +0000
@@ -172 +172 @@
- return branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/mixin/descendence.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:37:39.574925741 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:37:39.595925833 +0000
@@ -28 +28 @@
- yield child if types.empty? || child.type?(*types)
+ yield child if types.empty? || child.type_in?(types)
@@ -98 +98 @@
- yield self if types.empty? || type?(*types)
+ yield self if types.empty? || type_in?(types)
@@ -107,0 +108,17 @@
+ if types.empty?
+ visit_all_descendants(&block)
+ else
+ visit_descendants_of_types(types, &block)
+ end
+ end
+
+ def visit_all_descendants(&block)
+ children.each do |child|
+ next unless child.is_a?(::AST::Node)
+
+ yield child
+ child.visit_all_descendants(&block)
+ end
+ end
+
+ def visit_descendants_of_types(types, &block)
@@ -111,2 +128,2 @@
- yield child if types.empty? || child.type?(*types)
- child.visit_descendants(types, &block)
+ yield child if child.type_in?(types)
+ child.visit_descendants_of_types(types, &block)
lib/rubocop/ast/node/mixin/method_dispatch_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:37:39.574925741 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:37:39.595925833 +0000
@@ -168 +168 @@
- parent&.any_block_type? && eql?(parent.send_node)
+ parent&.any_block_type? && equal?(parent.send_node)
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:37:39.574925741 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:37:39.595925833 +0000
@@ -143 +143 @@
- !comparison_method? && method_name.to_s.end_with?('=')
+ !comparison_method? && method_name.end_with?('=')
@@ -151 +151 @@
- method_name.to_s.start_with?('each_')
+ method_name.start_with?('each_')
@@ -165 +165 @@
- method_name.to_s.end_with?('?')
+ method_name.end_with?('?')
@@ -172 +172 @@
- method_name.to_s.end_with?('!')
+ method_name.end_with?('!')
@@ -180 +180 @@
- method_name.to_s =~ /\A[A-Z]/
+ method_name.match?(/\A[A-Z]/)
lib/rubocop/ast/node/mixin/numeric_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:37:39.575925745 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:37:39.596925838 +0000
@@ -10 +10 @@
- # Checks whether this is literal has a sign.
+ # Checks whether this literal has a sign.
lib/rubocop/ast/node/pair_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:37:39.576925750 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:37:39.597925842 +0000
@@ -35 +35 @@
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
+ # hash rocket delimited `pair` and `:` for a colon delimited `pair`.
lib/rubocop/ast/node/symbol_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:37:39.579925763 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:37:39.599925851 +0000
@@ -5 +5 @@
- # A node extension for `sym` nodes. This will be used in place of a
+ # A node extension for `sym` nodes. This will be used in place of a
lib/rubocop/ast/node/when_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:37:39.580925767 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:37:39.600925855 +0000
@@ -18 +18 @@
- return conditions.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/while_node.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:37:39.580925767 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:37:39.600925855 +0000
@@ -27 +27 @@
- # Checks whether the `until` node has a `do` keyword.
+ # Checks whether the `while` node has a `do` keyword.
@@ -29 +29 @@
- # @return [Boolean] whether the `until` node has a `do` keyword
+ # @return [Boolean] whether the `while` node has a `do` keyword
lib/rubocop/ast/processed_source.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/processed_source.rb 2026-08-10 02:37:39.584925785 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/processed_source.rb 2026-08-10 02:37:39.605925877 +0000
@@ -27,0 +28,38 @@
+ # Extends the prism translation parsers so that the conversion of tokens
+ # into the `parser` gem's format is deferred until the tokens are first
+ # accessed. Building the tokens is a significant part of the translation
+ # cost, and not every caller needs them.
+ # @api private
+ module PrismLazyTokens
+ # Same contract as `Parser::Base#tokenize`, except the tokens are
+ # returned as a callable that performs the conversion when invoked.
+ def tokenize_deferred(source_buffer)
+ @source_buffer = source_buffer
+ source = source_buffer.source
+
+ offset_cache = build_offset_cache(source)
+ result = unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
+
+ program, tokens = result.value
+ ast = build_ast(program, offset_cache) if result.success?
+ comments = build_comments(result.comments, offset_cache)
+
+ [ast, comments, deferred_tokens(source_buffer, tokens, offset_cache)]
+ ensure
+ @source_buffer = nil
+ end
+
+ private
+
+ def deferred_tokens(source_buffer, tokens, offset_cache)
+ lambda do
+ @source_buffer = source_buffer
+ begin
+ build_tokens(tokens, offset_cache)
+ ensure
+ @source_buffer = nil
+ end
+ end
+ end
+ end
+
@@ -41 +79 @@
- attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
+ attr_reader :path, :buffer, :ast, :comments, :diagnostics,
@@ -48,0 +87,7 @@
+ # Subclasses of the prism translation parsers with lazily built tokens.
+ # @api private
+ def self.lazy_tokens_parser_class(base)
+ @lazy_tokens_parser_classes ||= {}
+ @lazy_tokens_parser_classes[base] ||= Class.new(base) { include PrismLazyTokens }
+ end
+
@@ -57 +102 @@
- (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
+ source = (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
@@ -80,6 +125,6 @@
- last_token_line = tokens.any? ? tokens.last.line : all_lines.size
- result = []
- all_lines.each_with_index do |line, ix|
- break if ix >= last_token_line && line == '__END__'
-
- result << line
+ if all_lines.include?('__END__')
+ trim_lines_after_data_marker(all_lines)
+ else
+ # Don't consult the tokens (which may have to be built first) when
+ # the source can't contain a data section.
+ all_lines.dup
@@ -87 +131,0 @@
- result
@@ -103 +147 @@
- Digest::SHA1.hexdigest(@raw_source)
+ @checksum ||= Digest::SHA1.hexdigest(@raw_source)
@@ -175,0 +220,2 @@
+ return nil if token.line < 2
+
@@ -193,0 +240,13 @@
+ # The tokens of the source. With the prism engine the tokens are built
+ # lazily on first access, since their conversion is costly and not
+ # every caller needs them.
+ def tokens
+ @tokens ||= begin
+ tokens = parser_tokens.map { |t| Token.from_parser_token(t) }
+ # The parser tokens are no longer needed, and the deferred conversion
+ # holds on to the parser instance, so release both.
+ @parser_tokens = nil
+ tokens
+ end
+ end
+
@@ -212,2 +271,9 @@
- # Use stable sort.
- @sorted_tokens ||= tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ # Most sources have their tokens already in order, in which case
+ # sorting can be skipped entirely. Callers only ever read from the
+ # returned array, so it is safe to reuse `tokens` as is.
+ @sorted_tokens ||= if tokens_sorted?
+ tokens
+ else
+ # Use stable sort.
+ tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ end
@@ -217,0 +284,17 @@
+ def tokens_sorted?
+ tokens.each_cons(2).all? { |a, b| a.begin_pos <= b.begin_pos }
+ end
+
+ # `__END__` only starts a data section when it isn't nested inside a
+ # string or heredoc, which is what the last token's line disambiguates.
+ def trim_lines_after_data_marker(all_lines)
+ last_token_line = tokens.any? ? tokens.last.line : all_lines.size
+ result = []
+ all_lines.each_with_index do |line, ix|
+ break if ix >= last_token_line && line == '__END__'
+
+ result << line
+ end
+ result
+ end
+
@@ -225,2 +308 @@
- buffer_name = @path || STRING_SOURCE_NAME
- @buffer = Parser::Source::Buffer.new(buffer_name, 1)
+ @buffer = Parser::Source::Buffer.new(@path || STRING_SOURCE_NAME, 1)
@@ -240 +322,12 @@
- @ast, @comments, @tokens = tokenize(parser)
+ @ast, @comments, tokens = tokenize(parser)
+ store_tokens(tokens)
+ end
+
+ # The tokens may be an already converted array, or a deferred conversion
+ # to be performed when the tokens are first accessed.
+ def store_tokens(tokens)
+ if tokens.is_a?(Proc)
+ @deferred_parser_tokens = tokens
+ else
+ @parser_tokens = tokens
+ end
@@ -245 +338 @@
- ast, comments, tokens = parser.tokenize(@buffer)
+ ast, comments, tokens = parse_and_lex(parser)
@@ -254 +346,0 @@
- tokens.map! { |t| Token.from_parser_token(t) }
@@ -258,0 +351,17 @@
+ def parse_and_lex(parser)
+ if parser.respond_to?(:tokenize_deferred)
+ parser.tokenize_deferred(@buffer)
+ else
+ parser.tokenize(@buffer)
+ end
+ end
+
+ def parser_tokens
+ if @deferred_parser_tokens
+ @parser_tokens = @deferred_parser_tokens.call
+ @deferred_parser_tokens = nil
+ end
+
+ @parser_tokens
+ end
+
@@ -342,0 +452,3 @@
+ parser_class = self.class.lazy_tokens_parser_class(parser_class) if
+ parser_engine == :parser_prism
+
@@ -381,3 +493,3 @@
- # The Parser gem does not support Ruby 3.5 or later.
- # It is also not fully compatible with Ruby 3.4 but for
- # now respects using parser for backwards compatibility.
+ # Prism is used for all Ruby versions it can parse (3.3 and later);
+ # the Parser gem does not support Ruby 3.5 or later and is not fully
+ # compatible with Ruby 3.4.
@@ -385 +497 @@
- if ruby_version >= 3.4
+ if ruby_version >= 3.3
lib/rubocop/ast/version.rb
--- /tmp/d20260810-15618-awf7a6/rubocop-ast-1.49.1/lib/rubocop/ast/version.rb 2026-08-10 02:37:39.585925789 +0000
+++ /tmp/d20260810-15618-awf7a6/rubocop-ast-1.50.0/lib/rubocop/ast/version.rb 2026-08-10 02:37:39.606925882 +0000
@@ -6 +6 @@
- STRING = '1.49.1'
+ STRING = '1.50.0' |
Contributor
gem compare rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT version:
1.49.1: 1.49.1
1.50.0: 1.50.0
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb +30/-7
lib/rubocop/ast/node/and_node.rb +2/-2
lib/rubocop/ast/node/case_match_node.rb +1/-1
lib/rubocop/ast/node/case_node.rb +1/-1
lib/rubocop/ast/node/for_node.rb +1/-1
lib/rubocop/ast/node/hash_node.rb +6/-6
lib/rubocop/ast/node/if_node.rb +1/-1
lib/rubocop/ast/node/mixin/descendence.rb +21/-4
lib/rubocop/ast/node/mixin/method_dispatch_node.rb +1/-1
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5/-5
lib/rubocop/ast/node/mixin/numeric_node.rb +1/-1
lib/rubocop/ast/node/pair_node.rb +1/-1
lib/rubocop/ast/node/symbol_node.rb +1/-1
lib/rubocop/ast/node/when_node.rb +1/-1
lib/rubocop/ast/node/while_node.rb +2/-2
lib/rubocop/ast/processed_source.rb +133/-21
lib/rubocop/ast/version.rb +1/-1 |
Contributor
gem compare --diff rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node.rb 2026-08-10 02:38:04.270972173 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node.rb 2026-08-10 02:38:04.285972054 +0000
@@ -78,0 +79,7 @@
+ # The node types which could have a source matching `SPECIAL_KEYWORDS`:
+ # `__FILE__` parses as `str`, `__LINE__` as `int` and `__ENCODING__` as
+ # `const` (or as their own node types when the builder emits them);
+ # `str` and `sym` also cover word/symbol array elements, string parts
+ # and hash labels spelling out one of these keywords.
+ SPECIAL_KEYWORD_TYPES = %i[str sym int const __FILE__ __LINE__ __ENCODING__].to_set.freeze
+ private_constant :SPECIAL_KEYWORD_TYPES
@@ -174,0 +182,7 @@
+ type_in?(types)
+ end
+
+ # Non-splatting variant of `type?`, used by the traversal hot paths to
+ # avoid allocating an array per visited node.
+ # @api private
+ def type_in?(types)
@@ -290 +304 @@
- # @return [Array<Node>] the different parts of the ndde
+ # @return [Array<Node>] the different parts of the node
@@ -506 +520 @@
- SPECIAL_KEYWORDS.include?(source)
+ SPECIAL_KEYWORD_TYPES.include?(type) && SPECIAL_KEYWORDS.include?(source)
@@ -522 +536 @@
- parent&.call_type? && eql?(parent.receiver)
+ parent&.call_type? && equal?(parent.receiver)
@@ -526 +540,3 @@
- parent&.send_type? && parent.arguments.include?(self)
+ return false unless parent&.send_type?
+
+ parent.arguments.any? { |argument| argument.equal?(self) }
@@ -698,3 +714,10 @@
- while (current_node = last_node.parent)
- yield current_node if types.empty? || current_node.type?(*types)
- last_node = current_node
+ if types.empty?
+ while (current_node = last_node.parent)
+ yield current_node
+ last_node = current_node
+ end
+ else
+ while (current_node = last_node.parent)
+ yield current_node if current_node.type_in?(types)
+ last_node = current_node
+ end
lib/rubocop/ast/node/and_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:04.270972173 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:04.285972054 +0000
@@ -5 +5 @@
- # A node extension for `until` nodes. This will be used in place of a plain
+ # A node extension for `and` nodes. This will be used in place of a plain
@@ -7 +7 @@
- # to all `until` nodes within RuboCop.
+ # to all `and` nodes within RuboCop.
lib/rubocop/ast/node/case_match_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:04.271972165 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:04.287972038 +0000
@@ -20 +20 @@
- return in_pattern_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/case_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:04.271972165 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:04.287972038 +0000
@@ -20 +20 @@
- return when_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/for_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:04.273972149 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:04.290972015 +0000
@@ -11 +11 @@
- # @return [String] the keyword of the `until` statement
+ # @return [String] the keyword of the `for` statement
lib/rubocop/ast/node/hash_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:04.274972141 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:04.290972015 +0000
@@ -59,2 +59,2 @@
- def each_key(&block)
- return pairs.map(&:key).to_enum unless block
+ def each_key
+ return to_enum(__method__) unless block_given?
@@ -62 +62 @@
- pairs.map(&:key).each(&block)
+ each_child_node(:pair) { |pair| yield pair.key }
@@ -83,2 +83,2 @@
- def each_value(&block)
- return pairs.map(&:value).to_enum unless block
+ def each_value
+ return to_enum(__method__) unless block_given?
@@ -86 +86 @@
- pairs.map(&:value).each(&block)
+ each_child_node(:pair) { |pair| yield pair.value }
lib/rubocop/ast/node/if_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:04.274972141 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:04.290972015 +0000
@@ -172 +172 @@
- return branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/mixin/descendence.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:04.275972134 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:04.294971983 +0000
@@ -28 +28 @@
- yield child if types.empty? || child.type?(*types)
+ yield child if types.empty? || child.type_in?(types)
@@ -98 +98 @@
- yield self if types.empty? || type?(*types)
+ yield self if types.empty? || type_in?(types)
@@ -107,0 +108,17 @@
+ if types.empty?
+ visit_all_descendants(&block)
+ else
+ visit_descendants_of_types(types, &block)
+ end
+ end
+
+ def visit_all_descendants(&block)
+ children.each do |child|
+ next unless child.is_a?(::AST::Node)
+
+ yield child
+ child.visit_all_descendants(&block)
+ end
+ end
+
+ def visit_descendants_of_types(types, &block)
@@ -111,2 +128,2 @@
- yield child if types.empty? || child.type?(*types)
- child.visit_descendants(types, &block)
+ yield child if child.type_in?(types)
+ child.visit_descendants_of_types(types, &block)
lib/rubocop/ast/node/mixin/method_dispatch_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:04.275972134 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:04.294971983 +0000
@@ -168 +168 @@
- parent&.any_block_type? && eql?(parent.send_node)
+ parent&.any_block_type? && equal?(parent.send_node)
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:04.275972134 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:04.294971983 +0000
@@ -143 +143 @@
- !comparison_method? && method_name.to_s.end_with?('=')
+ !comparison_method? && method_name.end_with?('=')
@@ -151 +151 @@
- method_name.to_s.start_with?('each_')
+ method_name.start_with?('each_')
@@ -165 +165 @@
- method_name.to_s.end_with?('?')
+ method_name.end_with?('?')
@@ -172 +172 @@
- method_name.to_s.end_with?('!')
+ method_name.end_with?('!')
@@ -180 +180 @@
- method_name.to_s =~ /\A[A-Z]/
+ method_name.match?(/\A[A-Z]/)
lib/rubocop/ast/node/mixin/numeric_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:04.276972126 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:04.295971975 +0000
@@ -10 +10 @@
- # Checks whether this is literal has a sign.
+ # Checks whether this literal has a sign.
lib/rubocop/ast/node/pair_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:04.276972126 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:04.296971967 +0000
@@ -35 +35 @@
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
+ # hash rocket delimited `pair` and `:` for a colon delimited `pair`.
lib/rubocop/ast/node/symbol_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:04.277972118 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:04.298971951 +0000
@@ -5 +5 @@
- # A node extension for `sym` nodes. This will be used in place of a
+ # A node extension for `sym` nodes. This will be used in place of a
lib/rubocop/ast/node/when_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:04.278972110 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:04.299971943 +0000
@@ -18 +18 @@
- return conditions.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/while_node.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:04.278972110 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:04.299971943 +0000
@@ -27 +27 @@
- # Checks whether the `until` node has a `do` keyword.
+ # Checks whether the `while` node has a `do` keyword.
@@ -29 +29 @@
- # @return [Boolean] whether the `until` node has a `do` keyword
+ # @return [Boolean] whether the `while` node has a `do` keyword
lib/rubocop/ast/processed_source.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:04.281972086 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:04.302971920 +0000
@@ -27,0 +28,38 @@
+ # Extends the prism translation parsers so that the conversion of tokens
+ # into the `parser` gem's format is deferred until the tokens are first
+ # accessed. Building the tokens is a significant part of the translation
+ # cost, and not every caller needs them.
+ # @api private
+ module PrismLazyTokens
+ # Same contract as `Parser::Base#tokenize`, except the tokens are
+ # returned as a callable that performs the conversion when invoked.
+ def tokenize_deferred(source_buffer)
+ @source_buffer = source_buffer
+ source = source_buffer.source
+
+ offset_cache = build_offset_cache(source)
+ result = unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
+
+ program, tokens = result.value
+ ast = build_ast(program, offset_cache) if result.success?
+ comments = build_comments(result.comments, offset_cache)
+
+ [ast, comments, deferred_tokens(source_buffer, tokens, offset_cache)]
+ ensure
+ @source_buffer = nil
+ end
+
+ private
+
+ def deferred_tokens(source_buffer, tokens, offset_cache)
+ lambda do
+ @source_buffer = source_buffer
+ begin
+ build_tokens(tokens, offset_cache)
+ ensure
+ @source_buffer = nil
+ end
+ end
+ end
+ end
+
@@ -41 +79 @@
- attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
+ attr_reader :path, :buffer, :ast, :comments, :diagnostics,
@@ -48,0 +87,7 @@
+ # Subclasses of the prism translation parsers with lazily built tokens.
+ # @api private
+ def self.lazy_tokens_parser_class(base)
+ @lazy_tokens_parser_classes ||= {}
+ @lazy_tokens_parser_classes[base] ||= Class.new(base) { include PrismLazyTokens }
+ end
+
@@ -57 +102 @@
- (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
+ source = (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
@@ -80,6 +125,6 @@
- last_token_line = tokens.any? ? tokens.last.line : all_lines.size
- result = []
- all_lines.each_with_index do |line, ix|
- break if ix >= last_token_line && line == '__END__'
-
- result << line
+ if all_lines.include?('__END__')
+ trim_lines_after_data_marker(all_lines)
+ else
+ # Don't consult the tokens (which may have to be built first) when
+ # the source can't contain a data section.
+ all_lines.dup
@@ -87 +131,0 @@
- result
@@ -103 +147 @@
- Digest::SHA1.hexdigest(@raw_source)
+ @checksum ||= Digest::SHA1.hexdigest(@raw_source)
@@ -175,0 +220,2 @@
+ return nil if token.line < 2
+
@@ -193,0 +240,13 @@
+ # The tokens of the source. With the prism engine the tokens are built
+ # lazily on first access, since their conversion is costly and not
+ # every caller needs them.
+ def tokens
+ @tokens ||= begin
+ tokens = parser_tokens.map { |t| Token.from_parser_token(t) }
+ # The parser tokens are no longer needed, and the deferred conversion
+ # holds on to the parser instance, so release both.
+ @parser_tokens = nil
+ tokens
+ end
+ end
+
@@ -212,2 +271,9 @@
- # Use stable sort.
- @sorted_tokens ||= tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ # Most sources have their tokens already in order, in which case
+ # sorting can be skipped entirely. Callers only ever read from the
+ # returned array, so it is safe to reuse `tokens` as is.
+ @sorted_tokens ||= if tokens_sorted?
+ tokens
+ else
+ # Use stable sort.
+ tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ end
@@ -217,0 +284,17 @@
+ def tokens_sorted?
+ tokens.each_cons(2).all? { |a, b| a.begin_pos <= b.begin_pos }
+ end
+
+ # `__END__` only starts a data section when it isn't nested inside a
+ # string or heredoc, which is what the last token's line disambiguates.
+ def trim_lines_after_data_marker(all_lines)
+ last_token_line = tokens.any? ? tokens.last.line : all_lines.size
+ result = []
+ all_lines.each_with_index do |line, ix|
+ break if ix >= last_token_line && line == '__END__'
+
+ result << line
+ end
+ result
+ end
+
@@ -225,2 +308 @@
- buffer_name = @path || STRING_SOURCE_NAME
- @buffer = Parser::Source::Buffer.new(buffer_name, 1)
+ @buffer = Parser::Source::Buffer.new(@path || STRING_SOURCE_NAME, 1)
@@ -240 +322,12 @@
- @ast, @comments, @tokens = tokenize(parser)
+ @ast, @comments, tokens = tokenize(parser)
+ store_tokens(tokens)
+ end
+
+ # The tokens may be an already converted array, or a deferred conversion
+ # to be performed when the tokens are first accessed.
+ def store_tokens(tokens)
+ if tokens.is_a?(Proc)
+ @deferred_parser_tokens = tokens
+ else
+ @parser_tokens = tokens
+ end
@@ -245 +338 @@
- ast, comments, tokens = parser.tokenize(@buffer)
+ ast, comments, tokens = parse_and_lex(parser)
@@ -254 +346,0 @@
- tokens.map! { |t| Token.from_parser_token(t) }
@@ -258,0 +351,17 @@
+ def parse_and_lex(parser)
+ if parser.respond_to?(:tokenize_deferred)
+ parser.tokenize_deferred(@buffer)
+ else
+ parser.tokenize(@buffer)
+ end
+ end
+
+ def parser_tokens
+ if @deferred_parser_tokens
+ @parser_tokens = @deferred_parser_tokens.call
+ @deferred_parser_tokens = nil
+ end
+
+ @parser_tokens
+ end
+
@@ -342,0 +452,3 @@
+ parser_class = self.class.lazy_tokens_parser_class(parser_class) if
+ parser_engine == :parser_prism
+
@@ -381,3 +493,3 @@
- # The Parser gem does not support Ruby 3.5 or later.
- # It is also not fully compatible with Ruby 3.4 but for
- # now respects using parser for backwards compatibility.
+ # Prism is used for all Ruby versions it can parse (3.3 and later);
+ # the Parser gem does not support Ruby 3.5 or later and is not fully
+ # compatible with Ruby 3.4.
@@ -385 +497 @@
- if ruby_version >= 3.4
+ if ruby_version >= 3.3
lib/rubocop/ast/version.rb
--- /tmp/d20260810-15439-phgvy1/rubocop-ast-1.49.1/lib/rubocop/ast/version.rb 2026-08-10 02:38:04.282972078 +0000
+++ /tmp/d20260810-15439-phgvy1/rubocop-ast-1.50.0/lib/rubocop/ast/version.rb 2026-08-10 02:38:04.303971912 +0000
@@ -6 +6 @@
- STRING = '1.49.1'
+ STRING = '1.50.0' |
Contributor
|
Contributor
gem compare --diff rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node.rb 2026-08-10 02:38:07.815536625 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node.rb 2026-08-10 02:38:07.846536651 +0000
@@ -78,0 +79,7 @@
+ # The node types which could have a source matching `SPECIAL_KEYWORDS`:
+ # `__FILE__` parses as `str`, `__LINE__` as `int` and `__ENCODING__` as
+ # `const` (or as their own node types when the builder emits them);
+ # `str` and `sym` also cover word/symbol array elements, string parts
+ # and hash labels spelling out one of these keywords.
+ SPECIAL_KEYWORD_TYPES = %i[str sym int const __FILE__ __LINE__ __ENCODING__].to_set.freeze
+ private_constant :SPECIAL_KEYWORD_TYPES
@@ -174,0 +182,7 @@
+ type_in?(types)
+ end
+
+ # Non-splatting variant of `type?`, used by the traversal hot paths to
+ # avoid allocating an array per visited node.
+ # @api private
+ def type_in?(types)
@@ -290 +304 @@
- # @return [Array<Node>] the different parts of the ndde
+ # @return [Array<Node>] the different parts of the node
@@ -506 +520 @@
- SPECIAL_KEYWORDS.include?(source)
+ SPECIAL_KEYWORD_TYPES.include?(type) && SPECIAL_KEYWORDS.include?(source)
@@ -522 +536 @@
- parent&.call_type? && eql?(parent.receiver)
+ parent&.call_type? && equal?(parent.receiver)
@@ -526 +540,3 @@
- parent&.send_type? && parent.arguments.include?(self)
+ return false unless parent&.send_type?
+
+ parent.arguments.any? { |argument| argument.equal?(self) }
@@ -698,3 +714,10 @@
- while (current_node = last_node.parent)
- yield current_node if types.empty? || current_node.type?(*types)
- last_node = current_node
+ if types.empty?
+ while (current_node = last_node.parent)
+ yield current_node
+ last_node = current_node
+ end
+ else
+ while (current_node = last_node.parent)
+ yield current_node if current_node.type_in?(types)
+ last_node = current_node
+ end
lib/rubocop/ast/node/and_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:07.816536626 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:07.847536652 +0000
@@ -5 +5 @@
- # A node extension for `until` nodes. This will be used in place of a plain
+ # A node extension for `and` nodes. This will be used in place of a plain
@@ -7 +7 @@
- # to all `until` nodes within RuboCop.
+ # to all `and` nodes within RuboCop.
lib/rubocop/ast/node/case_match_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:07.818536627 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:07.849536654 +0000
@@ -20 +20 @@
- return in_pattern_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/case_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:07.818536627 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:07.849536654 +0000
@@ -20 +20 @@
- return when_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/for_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:07.821536630 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:07.852536656 +0000
@@ -11 +11 @@
- # @return [String] the keyword of the `until` statement
+ # @return [String] the keyword of the `for` statement
lib/rubocop/ast/node/hash_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:07.822536631 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:07.852536656 +0000
@@ -59,2 +59,2 @@
- def each_key(&block)
- return pairs.map(&:key).to_enum unless block
+ def each_key
+ return to_enum(__method__) unless block_given?
@@ -62 +62 @@
- pairs.map(&:key).each(&block)
+ each_child_node(:pair) { |pair| yield pair.key }
@@ -83,2 +83,2 @@
- def each_value(&block)
- return pairs.map(&:value).to_enum unless block
+ def each_value
+ return to_enum(__method__) unless block_given?
@@ -86 +86 @@
- pairs.map(&:value).each(&block)
+ each_child_node(:pair) { |pair| yield pair.value }
lib/rubocop/ast/node/if_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:07.822536631 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:07.852536656 +0000
@@ -172 +172 @@
- return branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/mixin/descendence.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:07.826536634 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:07.856536660 +0000
@@ -28 +28 @@
- yield child if types.empty? || child.type?(*types)
+ yield child if types.empty? || child.type_in?(types)
@@ -98 +98 @@
- yield self if types.empty? || type?(*types)
+ yield self if types.empty? || type_in?(types)
@@ -107,0 +108,17 @@
+ if types.empty?
+ visit_all_descendants(&block)
+ else
+ visit_descendants_of_types(types, &block)
+ end
+ end
+
+ def visit_all_descendants(&block)
+ children.each do |child|
+ next unless child.is_a?(::AST::Node)
+
+ yield child
+ child.visit_all_descendants(&block)
+ end
+ end
+
+ def visit_descendants_of_types(types, &block)
@@ -111,2 +128,2 @@
- yield child if types.empty? || child.type?(*types)
- child.visit_descendants(types, &block)
+ yield child if child.type_in?(types)
+ child.visit_descendants_of_types(types, &block)
lib/rubocop/ast/node/mixin/method_dispatch_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:07.827536635 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:07.857536661 +0000
@@ -168 +168 @@
- parent&.any_block_type? && eql?(parent.send_node)
+ parent&.any_block_type? && equal?(parent.send_node)
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:07.827536635 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:07.857536661 +0000
@@ -143 +143 @@
- !comparison_method? && method_name.to_s.end_with?('=')
+ !comparison_method? && method_name.end_with?('=')
@@ -151 +151 @@
- method_name.to_s.start_with?('each_')
+ method_name.start_with?('each_')
@@ -165 +165 @@
- method_name.to_s.end_with?('?')
+ method_name.end_with?('?')
@@ -172 +172 @@
- method_name.to_s.end_with?('!')
+ method_name.end_with?('!')
@@ -180 +180 @@
- method_name.to_s =~ /\A[A-Z]/
+ method_name.match?(/\A[A-Z]/)
lib/rubocop/ast/node/mixin/numeric_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:07.828536636 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:07.858536662 +0000
@@ -10 +10 @@
- # Checks whether this is literal has a sign.
+ # Checks whether this literal has a sign.
lib/rubocop/ast/node/pair_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:07.830536637 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:07.860536663 +0000
@@ -35 +35 @@
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
+ # hash rocket delimited `pair` and `:` for a colon delimited `pair`.
lib/rubocop/ast/node/symbol_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:07.833536640 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:07.864536667 +0000
@@ -5 +5 @@
- # A node extension for `sym` nodes. This will be used in place of a
+ # A node extension for `sym` nodes. This will be used in place of a
lib/rubocop/ast/node/when_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:07.834536641 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:07.864536667 +0000
@@ -18 +18 @@
- return conditions.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/while_node.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:07.834536641 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:07.865536667 +0000
@@ -27 +27 @@
- # Checks whether the `until` node has a `do` keyword.
+ # Checks whether the `while` node has a `do` keyword.
@@ -29 +29 @@
- # @return [Boolean] whether the `until` node has a `do` keyword
+ # @return [Boolean] whether the `while` node has a `do` keyword
lib/rubocop/ast/processed_source.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:07.842536648 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:07.871536673 +0000
@@ -27,0 +28,38 @@
+ # Extends the prism translation parsers so that the conversion of tokens
+ # into the `parser` gem's format is deferred until the tokens are first
+ # accessed. Building the tokens is a significant part of the translation
+ # cost, and not every caller needs them.
+ # @api private
+ module PrismLazyTokens
+ # Same contract as `Parser::Base#tokenize`, except the tokens are
+ # returned as a callable that performs the conversion when invoked.
+ def tokenize_deferred(source_buffer)
+ @source_buffer = source_buffer
+ source = source_buffer.source
+
+ offset_cache = build_offset_cache(source)
+ result = unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
+
+ program, tokens = result.value
+ ast = build_ast(program, offset_cache) if result.success?
+ comments = build_comments(result.comments, offset_cache)
+
+ [ast, comments, deferred_tokens(source_buffer, tokens, offset_cache)]
+ ensure
+ @source_buffer = nil
+ end
+
+ private
+
+ def deferred_tokens(source_buffer, tokens, offset_cache)
+ lambda do
+ @source_buffer = source_buffer
+ begin
+ build_tokens(tokens, offset_cache)
+ ensure
+ @source_buffer = nil
+ end
+ end
+ end
+ end
+
@@ -41 +79 @@
- attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
+ attr_reader :path, :buffer, :ast, :comments, :diagnostics,
@@ -48,0 +87,7 @@
+ # Subclasses of the prism translation parsers with lazily built tokens.
+ # @api private
+ def self.lazy_tokens_parser_class(base)
+ @lazy_tokens_parser_classes ||= {}
+ @lazy_tokens_parser_classes[base] ||= Class.new(base) { include PrismLazyTokens }
+ end
+
@@ -57 +102 @@
- (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
+ source = (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
@@ -80,6 +125,6 @@
- last_token_line = tokens.any? ? tokens.last.line : all_lines.size
- result = []
- all_lines.each_with_index do |line, ix|
- break if ix >= last_token_line && line == '__END__'
-
- result << line
+ if all_lines.include?('__END__')
+ trim_lines_after_data_marker(all_lines)
+ else
+ # Don't consult the tokens (which may have to be built first) when
+ # the source can't contain a data section.
+ all_lines.dup
@@ -87 +131,0 @@
- result
@@ -103 +147 @@
- Digest::SHA1.hexdigest(@raw_source)
+ @checksum ||= Digest::SHA1.hexdigest(@raw_source)
@@ -175,0 +220,2 @@
+ return nil if token.line < 2
+
@@ -193,0 +240,13 @@
+ # The tokens of the source. With the prism engine the tokens are built
+ # lazily on first access, since their conversion is costly and not
+ # every caller needs them.
+ def tokens
+ @tokens ||= begin
+ tokens = parser_tokens.map { |t| Token.from_parser_token(t) }
+ # The parser tokens are no longer needed, and the deferred conversion
+ # holds on to the parser instance, so release both.
+ @parser_tokens = nil
+ tokens
+ end
+ end
+
@@ -212,2 +271,9 @@
- # Use stable sort.
- @sorted_tokens ||= tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ # Most sources have their tokens already in order, in which case
+ # sorting can be skipped entirely. Callers only ever read from the
+ # returned array, so it is safe to reuse `tokens` as is.
+ @sorted_tokens ||= if tokens_sorted?
+ tokens
+ else
+ # Use stable sort.
+ tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ end
@@ -217,0 +284,17 @@
+ def tokens_sorted?
+ tokens.each_cons(2).all? { |a, b| a.begin_pos <= b.begin_pos }
+ end
+
+ # `__END__` only starts a data section when it isn't nested inside a
+ # string or heredoc, which is what the last token's line disambiguates.
+ def trim_lines_after_data_marker(all_lines)
+ last_token_line = tokens.any? ? tokens.last.line : all_lines.size
+ result = []
+ all_lines.each_with_index do |line, ix|
+ break if ix >= last_token_line && line == '__END__'
+
+ result << line
+ end
+ result
+ end
+
@@ -225,2 +308 @@
- buffer_name = @path || STRING_SOURCE_NAME
- @buffer = Parser::Source::Buffer.new(buffer_name, 1)
+ @buffer = Parser::Source::Buffer.new(@path || STRING_SOURCE_NAME, 1)
@@ -240 +322,12 @@
- @ast, @comments, @tokens = tokenize(parser)
+ @ast, @comments, tokens = tokenize(parser)
+ store_tokens(tokens)
+ end
+
+ # The tokens may be an already converted array, or a deferred conversion
+ # to be performed when the tokens are first accessed.
+ def store_tokens(tokens)
+ if tokens.is_a?(Proc)
+ @deferred_parser_tokens = tokens
+ else
+ @parser_tokens = tokens
+ end
@@ -245 +338 @@
- ast, comments, tokens = parser.tokenize(@buffer)
+ ast, comments, tokens = parse_and_lex(parser)
@@ -254 +346,0 @@
- tokens.map! { |t| Token.from_parser_token(t) }
@@ -258,0 +351,17 @@
+ def parse_and_lex(parser)
+ if parser.respond_to?(:tokenize_deferred)
+ parser.tokenize_deferred(@buffer)
+ else
+ parser.tokenize(@buffer)
+ end
+ end
+
+ def parser_tokens
+ if @deferred_parser_tokens
+ @parser_tokens = @deferred_parser_tokens.call
+ @deferred_parser_tokens = nil
+ end
+
+ @parser_tokens
+ end
+
@@ -342,0 +452,3 @@
+ parser_class = self.class.lazy_tokens_parser_class(parser_class) if
+ parser_engine == :parser_prism
+
@@ -381,3 +493,3 @@
- # The Parser gem does not support Ruby 3.5 or later.
- # It is also not fully compatible with Ruby 3.4 but for
- # now respects using parser for backwards compatibility.
+ # Prism is used for all Ruby versions it can parse (3.3 and later);
+ # the Parser gem does not support Ruby 3.5 or later and is not fully
+ # compatible with Ruby 3.4.
@@ -385 +497 @@
- if ruby_version >= 3.4
+ if ruby_version >= 3.3
lib/rubocop/ast/version.rb
--- /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.49.1/lib/rubocop/ast/version.rb 2026-08-10 02:38:07.843536649 +0000
+++ /tmp/d20260810-15446-o1tvwe/rubocop-ast-1.50.0/lib/rubocop/ast/version.rb 2026-08-10 02:38:07.873536674 +0000
@@ -6 +6 @@
- STRING = '1.49.1'
+ STRING = '1.50.0' |
Contributor
gem compare rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT version:
1.49.1: 1.49.1
1.50.0: 1.50.0
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb +30/-7
lib/rubocop/ast/node/and_node.rb +2/-2
lib/rubocop/ast/node/case_match_node.rb +1/-1
lib/rubocop/ast/node/case_node.rb +1/-1
lib/rubocop/ast/node/for_node.rb +1/-1
lib/rubocop/ast/node/hash_node.rb +6/-6
lib/rubocop/ast/node/if_node.rb +1/-1
lib/rubocop/ast/node/mixin/descendence.rb +21/-4
lib/rubocop/ast/node/mixin/method_dispatch_node.rb +1/-1
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +5/-5
lib/rubocop/ast/node/mixin/numeric_node.rb +1/-1
lib/rubocop/ast/node/pair_node.rb +1/-1
lib/rubocop/ast/node/symbol_node.rb +1/-1
lib/rubocop/ast/node/when_node.rb +1/-1
lib/rubocop/ast/node/while_node.rb +2/-2
lib/rubocop/ast/processed_source.rb +133/-21
lib/rubocop/ast/version.rb +1/-1 |
Contributor
gem compare --diff rubocop-ast 1.49.1 1.50.0Compared versions: ["1.49.1", "1.50.0"]
DIFFERENT files:
1.49.1->1.50.0:
* Changed:
lib/rubocop/ast/node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node.rb 2026-08-10 02:38:35.616491690 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node.rb 2026-08-10 02:38:35.633491788 +0000
@@ -78,0 +79,7 @@
+ # The node types which could have a source matching `SPECIAL_KEYWORDS`:
+ # `__FILE__` parses as `str`, `__LINE__` as `int` and `__ENCODING__` as
+ # `const` (or as their own node types when the builder emits them);
+ # `str` and `sym` also cover word/symbol array elements, string parts
+ # and hash labels spelling out one of these keywords.
+ SPECIAL_KEYWORD_TYPES = %i[str sym int const __FILE__ __LINE__ __ENCODING__].to_set.freeze
+ private_constant :SPECIAL_KEYWORD_TYPES
@@ -174,0 +182,7 @@
+ type_in?(types)
+ end
+
+ # Non-splatting variant of `type?`, used by the traversal hot paths to
+ # avoid allocating an array per visited node.
+ # @api private
+ def type_in?(types)
@@ -290 +304 @@
- # @return [Array<Node>] the different parts of the ndde
+ # @return [Array<Node>] the different parts of the node
@@ -506 +520 @@
- SPECIAL_KEYWORDS.include?(source)
+ SPECIAL_KEYWORD_TYPES.include?(type) && SPECIAL_KEYWORDS.include?(source)
@@ -522 +536 @@
- parent&.call_type? && eql?(parent.receiver)
+ parent&.call_type? && equal?(parent.receiver)
@@ -526 +540,3 @@
- parent&.send_type? && parent.arguments.include?(self)
+ return false unless parent&.send_type?
+
+ parent.arguments.any? { |argument| argument.equal?(self) }
@@ -698,3 +714,10 @@
- while (current_node = last_node.parent)
- yield current_node if types.empty? || current_node.type?(*types)
- last_node = current_node
+ if types.empty?
+ while (current_node = last_node.parent)
+ yield current_node
+ last_node = current_node
+ end
+ else
+ while (current_node = last_node.parent)
+ yield current_node if current_node.type_in?(types)
+ last_node = current_node
+ end
lib/rubocop/ast/node/and_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:35.617491695 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/and_node.rb 2026-08-10 02:38:35.633491788 +0000
@@ -5 +5 @@
- # A node extension for `until` nodes. This will be used in place of a plain
+ # A node extension for `and` nodes. This will be used in place of a plain
@@ -7 +7 @@
- # to all `until` nodes within RuboCop.
+ # to all `and` nodes within RuboCop.
lib/rubocop/ast/node/case_match_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:35.618491701 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_match_node.rb 2026-08-10 02:38:35.635491799 +0000
@@ -20 +20 @@
- return in_pattern_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/case_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:35.618491701 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/case_node.rb 2026-08-10 02:38:35.635491799 +0000
@@ -20 +20 @@
- return when_branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/for_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:35.619491707 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/for_node.rb 2026-08-10 02:38:35.637491811 +0000
@@ -11 +11 @@
- # @return [String] the keyword of the `until` statement
+ # @return [String] the keyword of the `for` statement
lib/rubocop/ast/node/hash_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:35.620491713 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/hash_node.rb 2026-08-10 02:38:35.637491811 +0000
@@ -59,2 +59,2 @@
- def each_key(&block)
- return pairs.map(&:key).to_enum unless block
+ def each_key
+ return to_enum(__method__) unless block_given?
@@ -62 +62 @@
- pairs.map(&:key).each(&block)
+ each_child_node(:pair) { |pair| yield pair.key }
@@ -83,2 +83,2 @@
- def each_value(&block)
- return pairs.map(&:value).to_enum unless block
+ def each_value
+ return to_enum(__method__) unless block_given?
@@ -86 +86 @@
- pairs.map(&:value).each(&block)
+ each_child_node(:pair) { |pair| yield pair.value }
lib/rubocop/ast/node/if_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:35.620491713 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/if_node.rb 2026-08-10 02:38:35.637491811 +0000
@@ -172 +172 @@
- return branches.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/mixin/descendence.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:35.621491718 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/descendence.rb 2026-08-10 02:38:35.640491828 +0000
@@ -28 +28 @@
- yield child if types.empty? || child.type?(*types)
+ yield child if types.empty? || child.type_in?(types)
@@ -98 +98 @@
- yield self if types.empty? || type?(*types)
+ yield self if types.empty? || type_in?(types)
@@ -107,0 +108,17 @@
+ if types.empty?
+ visit_all_descendants(&block)
+ else
+ visit_descendants_of_types(types, &block)
+ end
+ end
+
+ def visit_all_descendants(&block)
+ children.each do |child|
+ next unless child.is_a?(::AST::Node)
+
+ yield child
+ child.visit_all_descendants(&block)
+ end
+ end
+
+ def visit_descendants_of_types(types, &block)
@@ -111,2 +128,2 @@
- yield child if types.empty? || child.type?(*types)
- child.visit_descendants(types, &block)
+ yield child if child.type_in?(types)
+ child.visit_descendants_of_types(types, &block)
lib/rubocop/ast/node/mixin/method_dispatch_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:35.621491718 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_dispatch_node.rb 2026-08-10 02:38:35.640491828 +0000
@@ -168 +168 @@
- parent&.any_block_type? && eql?(parent.send_node)
+ parent&.any_block_type? && equal?(parent.send_node)
lib/rubocop/ast/node/mixin/method_identifier_predicates.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:35.622491724 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb 2026-08-10 02:38:35.640491828 +0000
@@ -143 +143 @@
- !comparison_method? && method_name.to_s.end_with?('=')
+ !comparison_method? && method_name.end_with?('=')
@@ -151 +151 @@
- method_name.to_s.start_with?('each_')
+ method_name.start_with?('each_')
@@ -165 +165 @@
- method_name.to_s.end_with?('?')
+ method_name.end_with?('?')
@@ -172 +172 @@
- method_name.to_s.end_with?('!')
+ method_name.end_with?('!')
@@ -180 +180 @@
- method_name.to_s =~ /\A[A-Z]/
+ method_name.match?(/\A[A-Z]/)
lib/rubocop/ast/node/mixin/numeric_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:35.622491724 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/mixin/numeric_node.rb 2026-08-10 02:38:35.641491834 +0000
@@ -10 +10 @@
- # Checks whether this is literal has a sign.
+ # Checks whether this literal has a sign.
lib/rubocop/ast/node/pair_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:35.623491730 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/pair_node.rb 2026-08-10 02:38:35.642491839 +0000
@@ -35 +35 @@
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
+ # hash rocket delimited `pair` and `:` for a colon delimited `pair`.
lib/rubocop/ast/node/symbol_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:35.624491736 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/symbol_node.rb 2026-08-10 02:38:35.644491851 +0000
@@ -5 +5 @@
- # A node extension for `sym` nodes. This will be used in place of a
+ # A node extension for `sym` nodes. This will be used in place of a
lib/rubocop/ast/node/when_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:35.624491736 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/when_node.rb 2026-08-10 02:38:35.644491851 +0000
@@ -18 +18 @@
- return conditions.to_enum(__method__) unless block
+ return to_enum(__method__) unless block
lib/rubocop/ast/node/while_node.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:35.624491736 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/node/while_node.rb 2026-08-10 02:38:35.645491857 +0000
@@ -27 +27 @@
- # Checks whether the `until` node has a `do` keyword.
+ # Checks whether the `while` node has a `do` keyword.
@@ -29 +29 @@
- # @return [Boolean] whether the `until` node has a `do` keyword
+ # @return [Boolean] whether the `while` node has a `do` keyword
lib/rubocop/ast/processed_source.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:35.629491765 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/processed_source.rb 2026-08-10 02:38:35.654491909 +0000
@@ -27,0 +28,38 @@
+ # Extends the prism translation parsers so that the conversion of tokens
+ # into the `parser` gem's format is deferred until the tokens are first
+ # accessed. Building the tokens is a significant part of the translation
+ # cost, and not every caller needs them.
+ # @api private
+ module PrismLazyTokens
+ # Same contract as `Parser::Base#tokenize`, except the tokens are
+ # returned as a callable that performs the conversion when invoked.
+ def tokenize_deferred(source_buffer)
+ @source_buffer = source_buffer
+ source = source_buffer.source
+
+ offset_cache = build_offset_cache(source)
+ result = unwrap(@parser.parse_lex(source, **prism_options), offset_cache)
+
+ program, tokens = result.value
+ ast = build_ast(program, offset_cache) if result.success?
+ comments = build_comments(result.comments, offset_cache)
+
+ [ast, comments, deferred_tokens(source_buffer, tokens, offset_cache)]
+ ensure
+ @source_buffer = nil
+ end
+
+ private
+
+ def deferred_tokens(source_buffer, tokens, offset_cache)
+ lambda do
+ @source_buffer = source_buffer
+ begin
+ build_tokens(tokens, offset_cache)
+ ensure
+ @source_buffer = nil
+ end
+ end
+ end
+ end
+
@@ -41 +79 @@
- attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
+ attr_reader :path, :buffer, :ast, :comments, :diagnostics,
@@ -48,0 +87,7 @@
+ # Subclasses of the prism translation parsers with lazily built tokens.
+ # @api private
+ def self.lazy_tokens_parser_class(base)
+ @lazy_tokens_parser_classes ||= {}
+ @lazy_tokens_parser_classes[base] ||= Class.new(base) { include PrismLazyTokens }
+ end
+
@@ -57 +102 @@
- (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
+ source = (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
@@ -80,6 +125,6 @@
- last_token_line = tokens.any? ? tokens.last.line : all_lines.size
- result = []
- all_lines.each_with_index do |line, ix|
- break if ix >= last_token_line && line == '__END__'
-
- result << line
+ if all_lines.include?('__END__')
+ trim_lines_after_data_marker(all_lines)
+ else
+ # Don't consult the tokens (which may have to be built first) when
+ # the source can't contain a data section.
+ all_lines.dup
@@ -87 +131,0 @@
- result
@@ -103 +147 @@
- Digest::SHA1.hexdigest(@raw_source)
+ @checksum ||= Digest::SHA1.hexdigest(@raw_source)
@@ -175,0 +220,2 @@
+ return nil if token.line < 2
+
@@ -193,0 +240,13 @@
+ # The tokens of the source. With the prism engine the tokens are built
+ # lazily on first access, since their conversion is costly and not
+ # every caller needs them.
+ def tokens
+ @tokens ||= begin
+ tokens = parser_tokens.map { |t| Token.from_parser_token(t) }
+ # The parser tokens are no longer needed, and the deferred conversion
+ # holds on to the parser instance, so release both.
+ @parser_tokens = nil
+ tokens
+ end
+ end
+
@@ -212,2 +271,9 @@
- # Use stable sort.
- @sorted_tokens ||= tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ # Most sources have their tokens already in order, in which case
+ # sorting can be skipped entirely. Callers only ever read from the
+ # returned array, so it is safe to reuse `tokens` as is.
+ @sorted_tokens ||= if tokens_sorted?
+ tokens
+ else
+ # Use stable sort.
+ tokens.sort_by.with_index { |token, i| [token.begin_pos, i] }
+ end
@@ -217,0 +284,17 @@
+ def tokens_sorted?
+ tokens.each_cons(2).all? { |a, b| a.begin_pos <= b.begin_pos }
+ end
+
+ # `__END__` only starts a data section when it isn't nested inside a
+ # string or heredoc, which is what the last token's line disambiguates.
+ def trim_lines_after_data_marker(all_lines)
+ last_token_line = tokens.any? ? tokens.last.line : all_lines.size
+ result = []
+ all_lines.each_with_index do |line, ix|
+ break if ix >= last_token_line && line == '__END__'
+
+ result << line
+ end
+ result
+ end
+
@@ -225,2 +308 @@
- buffer_name = @path || STRING_SOURCE_NAME
- @buffer = Parser::Source::Buffer.new(buffer_name, 1)
+ @buffer = Parser::Source::Buffer.new(@path || STRING_SOURCE_NAME, 1)
@@ -240 +322,12 @@
- @ast, @comments, @tokens = tokenize(parser)
+ @ast, @comments, tokens = tokenize(parser)
+ store_tokens(tokens)
+ end
+
+ # The tokens may be an already converted array, or a deferred conversion
+ # to be performed when the tokens are first accessed.
+ def store_tokens(tokens)
+ if tokens.is_a?(Proc)
+ @deferred_parser_tokens = tokens
+ else
+ @parser_tokens = tokens
+ end
@@ -245 +338 @@
- ast, comments, tokens = parser.tokenize(@buffer)
+ ast, comments, tokens = parse_and_lex(parser)
@@ -254 +346,0 @@
- tokens.map! { |t| Token.from_parser_token(t) }
@@ -258,0 +351,17 @@
+ def parse_and_lex(parser)
+ if parser.respond_to?(:tokenize_deferred)
+ parser.tokenize_deferred(@buffer)
+ else
+ parser.tokenize(@buffer)
+ end
+ end
+
+ def parser_tokens
+ if @deferred_parser_tokens
+ @parser_tokens = @deferred_parser_tokens.call
+ @deferred_parser_tokens = nil
+ end
+
+ @parser_tokens
+ end
+
@@ -342,0 +452,3 @@
+ parser_class = self.class.lazy_tokens_parser_class(parser_class) if
+ parser_engine == :parser_prism
+
@@ -381,3 +493,3 @@
- # The Parser gem does not support Ruby 3.5 or later.
- # It is also not fully compatible with Ruby 3.4 but for
- # now respects using parser for backwards compatibility.
+ # Prism is used for all Ruby versions it can parse (3.3 and later);
+ # the Parser gem does not support Ruby 3.5 or later and is not fully
+ # compatible with Ruby 3.4.
@@ -385 +497 @@
- if ruby_version >= 3.4
+ if ruby_version >= 3.3
lib/rubocop/ast/version.rb
--- /tmp/d20260810-15498-hdnidz/rubocop-ast-1.49.1/lib/rubocop/ast/version.rb 2026-08-10 02:38:35.630491770 +0000
+++ /tmp/d20260810-15498-hdnidz/rubocop-ast-1.50.0/lib/rubocop/ast/version.rb 2026-08-10 02:38:35.655491915 +0000
@@ -6 +6 @@
- STRING = '1.49.1'
+ STRING = '1.50.0' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps rubocop from 1.88.0 to 1.89.0.
Release notes
Sourced from rubocop's releases.
... (truncated)
Changelog
Sourced from rubocop's changelog.
... (truncated)
Commits
65854e6Cut 1.89f5dbd74Update Changelog2f96cd7Add new Lint/NameTypo cop9a91e2bPromote the resolved-ancestry guard to ProjectIndexHelpe917b65Merge pull request #15522 from joklek-vinted/fix/mise-toml-with-single-quotes619e3d2Fix Ruby version detection from mise.toml with single quotes7999d1a[Fix #15501] ImproveStyle/RedundantLineContinuationperformance on adjacen...63d9361Advertise executeCommandProvider in the language server893a02fCache the LSP project index across requests3b9755fMerge pull request #15516 from koic/fix_a_flaky_line_length_spec_timeout_on_j...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)