Skip to content

Commit

Permalink
nuevo no longer clobbers protoboeuf's output
Browse files Browse the repository at this point in the history
  • Loading branch information
davebenvenuti committed Feb 6, 2025
1 parent ee36aa6 commit 715db99
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
16 changes: 8 additions & 8 deletions lib/protoboeuf/codegen.rb
Original file line number Diff line number Diff line change
Expand Up @@ -941,12 +941,12 @@ def initialize_oneof(field, msg)
oneof = CodeGen::Field.new(message: msg, field: msg.oneof_decl[field.oneof_index], syntax:)

<<~RUBY
if #{field.lvar_read} == nil
if #{field.kwarg_read} == nil
#{field.iv_name} = #{default_for(field)}
else
#{bounds_check(field, field.lvar_read)}
#{bounds_check(field, field.kwarg_read)}
#{oneof.iv_name} = :#{field.name}
#{field.iv_name} = #{field.lvar_read}
#{field.iv_name} = #{field.kwarg_read}
end
RUBY
end
Expand All @@ -965,14 +965,14 @@ def initialize_optional_field(field)
set_field_to_var = if field.type == :TYPE_ENUM
initialize_enum_field(field)
else
"#{field.iv_name} = #{field.lvar_read}"
"#{field.iv_name} = #{field.kwarg_read}"
end

<<~RUBY
if #{field.lvar_read} == nil
#{field.iv_name} = #{default_for(field)}
else
#{bounds_check(field, field.lvar_read).chomp}
#{bounds_check(field, field.kwarg_read).chomp}
#{set_bitmask(field)}
#{set_field_to_var}
end
Expand All @@ -987,7 +987,7 @@ def initialize_required_field(field)
end

def initialize_enum_field(field)
"#{field.iv_name} = #{enum_name(field)}.resolve(#{field.name}) || #{field.lvar_read}"
"#{field.iv_name} = #{enum_name(field)}.resolve(#{field.name}) || #{field.kwarg_read}"
end

def extra_api
Expand Down Expand Up @@ -1317,9 +1317,9 @@ def default_for(field)
def initialize_signature
fields.flat_map do |f|
if f.has_oneof_index? || f.optional?
"#{f.lvar_name}: nil"
"#{f.kwarg_name}: nil"
else
"#{f.lvar_name}: #{default_for(f)}"
"#{f.kwarg_name}: #{default_for(f)}"
end
end.join(", ")
end
Expand Down
12 changes: 12 additions & 0 deletions lib/protoboeuf/codegen/field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ def lvar_name
end
end

def kwarg_name
name
end

def kwarg_read
if RUBY_KEYWORDS.include?(name)
"binding.local_variable_get(:#{name})"
else
name
end
end

def predicate_method_name
"has_#{name}?"
end
Expand Down

0 comments on commit 715db99

Please sign in to comment.