Skip to content

Commit 81d9fc0

Browse files
authored
fix: prevent YARD failures on enum keywords (#1287)
I previously addressed these keyword collisions in PR #1061 and #1072. However, the previous syntax still generates YARD proxy warnings that cause strict builds to fail (i.e. `fail-on-warning`), an issue observed during CI for `google-apps-card-v1`. This update utilizes `const_set` to successfully bypass the warnings. I verified directly on the gem via manual edits and running `toys yard`.
1 parent 62aece1 commit 81d9fc0

4 files changed

Lines changed: 22 additions & 3 deletions

File tree

gapic-generator/lib/gapic/presenters/enum_value_presenter.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,18 @@ def initialize value
2828

2929
# @return [String] The enum value name without keyword collision.
3030
def name
31-
Gapic::RubyInfo.keywords.include?(@value.name) ? "#{@value.parent.name}::#{@value.name}" : @value.name
31+
keyword_collision? ? "#{@value.parent.name}::#{@value.name}" : @value.name
32+
end
33+
34+
# @return [Boolean] Whether the enum name collides with a Ruby keyword.
35+
def keyword_collision?
36+
Gapic::RubyInfo.keywords.include? @value.name
37+
end
38+
39+
# @return [String] The doc stub string for the enum value. Prevents YARD warnings in cases of keyword
40+
# collision.
41+
def doc_line
42+
keyword_collision? ? "const_set :#{@value.name}, #{@value.number}" : "#{@value.name} = #{@value.number}"
3243
end
3344

3445
def doc_description

gapic-generator/templates/default/proto_docs/_enum.text.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ module <%= enum.name %>
99
<%- if value.doc_description -%>
1010
<%= indent value.doc_description, " # " %>
1111
<%- end -%>
12-
<%= value.name %> = <%= value.number %>
12+
<%= value.doc_line %>
1313
<%- end -%>
1414
end

gapic-generator/test/gapic/presenters/enum_presenter_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,13 @@ def test_enum_value_name_no_keyword_collision
2929
def test_enum_value_name_with_keyword_collision
3030
evp = typical_garbage_enum_value 4
3131
assert_equal "GarbageEnum::END", evp.name
32+
assert evp.keyword_collision?
33+
assert_equal "const_set :END, 4", evp.doc_line
34+
end
35+
36+
def test_enum_value_doc_line_no_keyword_collision
37+
evp = typical_garbage_enum_value 3
38+
refute evp.keyword_collision?
39+
assert_equal "DUMPSTER = 3", evp.doc_line
3240
end
3341
end

shared/output/gapic/templates/garbage/proto_docs/garbage/garbage.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ module GarbageEnum
477477
DUMPSTER = 3
478478

479479
# The end of garbage.
480-
GarbageEnum::END = 4
480+
const_set :END, 4
481481
end
482482
end
483483
end

0 commit comments

Comments
 (0)