From 1e3aac8e5cf4e701ac59864a0db869e1c72754ef Mon Sep 17 00:00:00 2001 From: Margret Riegert Date: Sat, 25 Jan 2025 21:34:33 -0500 Subject: [PATCH] Copy docs from enum members to their helper methods (#11333) --- spec/compiler/semantic/enum_spec.cr | 12 ++++++++++++ src/compiler/crystal/semantic/top_level_visitor.cr | 1 + 2 files changed, 13 insertions(+) diff --git a/spec/compiler/semantic/enum_spec.cr b/spec/compiler/semantic/enum_spec.cr index 876694b99821..f8d94f031139 100644 --- a/spec/compiler/semantic/enum_spec.cr +++ b/spec/compiler/semantic/enum_spec.cr @@ -613,4 +613,16 @@ describe "Semantic: enum" do a_def = result.program.types["Foo"].lookup_defs("foo").first a_def.previous.should be_nil end + + it "copies docs from member to helper method (#11333)" do + result = top_level_semantic <<-CRYSTAL, wants_doc: true + enum Foo + # These are the docs for `Bar` + Bar = 1 + end + CRYSTAL + + a_defs = result.program.types["Foo"].lookup_defs("bar?") + a_defs.first.doc.should eq("These are the docs for `Bar`") + end end diff --git a/src/compiler/crystal/semantic/top_level_visitor.cr b/src/compiler/crystal/semantic/top_level_visitor.cr index 3654e24ff7a5..b2722f454e17 100644 --- a/src/compiler/crystal/semantic/top_level_visitor.cr +++ b/src/compiler/crystal/semantic/top_level_visitor.cr @@ -824,6 +824,7 @@ class Crystal::TopLevelVisitor < Crystal::SemanticVisitor method_name = is_flags ? "includes?" : "==" body = Call.new(Var.new("self").at(member), method_name, Path.new(member.name).at(member)).at(member) a_def = Def.new("#{member.name.underscore}?", body: body).at(member) + a_def.doc = member.doc enum_type.add_def a_def end