Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Nil tag with implicit: false raises error on SnakeYAML

未关闭
#500 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
java, ruby
领域
tooling

调研方向

从 lib/psych/visitors/yaml_tree.rb 大约第 520 行开始,跟踪 nil 标签和隐式值进入 emitter 的过程,包括 org/jruby/ext/psych/PsychEmitter.java。复现 #475 中的测试或 JRuby PR #6680 中剩余的失败,然后验证转储受影响的 mapping 不再触发 SnakeYAML 的标签错误。

由索引模型根据 Issue 内容生成。

描述

JRuby

The following line, when reached by the tests from #475, triggers SnakeYAML to raise an error:

https://github.com/ruby/psych/blob/546154ddb71b125794c5eed36817ad27ac373dd5/lib/psych/visitors/yaml_tree.rb#L520

The error:

RuntimeError: org.yaml.snakeyaml.emitter.EmitterException: tag is not specified
                      scalar at org/jruby/ext/psych/PsychEmitter.java:206
    visit_Psych_Nodes_Scalar at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:32
                       visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
                      accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
   visit_Psych_Nodes_Mapping at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:43
                        each at org/jruby/RubyArray.java:1864
   visit_Psych_Nodes_Mapping at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:43
                       visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
                      accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
  visit_Psych_Nodes_Document at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:27
                        each at org/jruby/RubyArray.java:1864
  visit_Psych_Nodes_Document at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:27
                       visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
                      accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
    visit_Psych_Nodes_Stream at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:21
                        each at org/jruby/RubyArray.java:1864
    visit_Psych_Nodes_Stream at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/emitter.rb:21
                       visit at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:30
                      accept at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/visitors/visitor.rb:6
                        yaml at /Users/headius/projects/jruby/lib/ruby/stdlib/psych/nodes/node.rb:61
                        dump at /Users/headius/projects/jruby/lib/ruby/stdlib/psych.rb:515
                      <main> at blah.rb:13

As far as I can tell, the issue is that the tag is nil and implicit is false, which is prohibited in SnakeYAML for a mapping.

This is somewhat outside my understanding of YAML and I am not sure whether this constitutes an improper behavioral difference in SnakeYAML or not.

The implicit value comes from the default @implicit of Coder, and is never set to true in the logic hit by the tests mentioned above. As it stands I do not know how to reconcile the values being passed in with the SnakeYAML hard error.

This leads to the remaining failures in https://github.com/jruby/jruby/pull/6680, which I will exclude to proceed with the Psych update.

主要语言
Ruby
星标
597
派生
223
平均合并
6 小时 8 分钟
30 天内合并 PR
2

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ruby/psych 的其他 Issue

查看 ruby/psych 的全部 Issue

相似的 Issue

更多 Ruby Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。