Skip to content

[pull] master from ruby:master#111

Merged
pull[bot] merged 2 commits intosysfce2:masterfrom
ruby:master
Dec 24, 2025
Merged

[pull] master from ruby:master#111
pull[bot] merged 2 commits intosysfce2:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Dec 24, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Fixes #1523 

The issue is likely caused by RDoc generating documentation using data
from marshal load (used by `ri`), which has different types than if the
generation happen directly.

This code can reproduce the same error:

```rb
require 'rdoc'
require 'tmpdir'

# Setup store
options = RDoc::Options.new
store = RDoc::Store.new(options, path: Dir.tmpdir)

# Create a class with a comment
tl = store.add_file 'file.rb'
ns = tl.add_module RDoc::NormalModule, 'Namespace'
cm = ns.add_class RDoc::NormalClass, 'Klass', 'Super'
cm.add_comment 'This is a class comment', tl

# Before marshalling - works fine
puts "Before marshal: #{cm.search_snippet.inspect}"

# Marshal round-trip (simulates loading from .ri cache)
loaded = Marshal.load(Marshal.dump(cm))
loaded.store = store

# After marshalling - fails with NoMethodError
puts "After marshal: #{loaded.search_snippet.inspect}"
```

Similar to other code objects' marshalling behaviour,
`ClassModule#comment_location`'s content type would change before/after
marshalling. But it should still be an array of pairs that respond to
the same set of methods.

This commit also adds documentation about the marshalling behaviour of
`ClassModule#comment_location`.

I don't like the fact that data types & shapes could change before/after
marshalling. But changing this design will be a breaking change and
require some careful planning. So for now the change it to make sure the
type change is less surprising
@pull pull bot locked and limited conversation to collaborators Dec 24, 2025
@pull pull bot added the ⤵️ pull label Dec 24, 2025
@pull pull bot merged commit d676630 into sysfce2:master Dec 24, 2025
4 of 5 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant