mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-20 13:54:36 +01:00
bolt-gen: make optional 'assignable' fields work
make assignable 'optional' fields work, add test for them
This commit is contained in:
parent
ff82c918a5
commit
236d26308f
3 changed files with 8 additions and 6 deletions
|
@ -303,7 +303,7 @@ bool fromwire_${msg.name}(${'const tal_t *ctx, ' if msg.needs_context() else ''}
|
|||
% if not varsized:
|
||||
*${f.name} = tal(ctx, ${typename});
|
||||
% endif
|
||||
${fromwire_phrase(f, type_, varsized)}\
|
||||
${'*' if f.type_obj.is_assignable() else ''}${fromwire_phrase(f, type_, varsized)}\
|
||||
}
|
||||
% endif ## End optional
|
||||
% endif
|
||||
|
|
|
@ -75,9 +75,6 @@ class Field(object):
|
|||
def is_varlen(self):
|
||||
return not self.count
|
||||
|
||||
def is_optional(self):
|
||||
return self.is_optional
|
||||
|
||||
def is_extension(self):
|
||||
return bool(self.extension_names)
|
||||
|
||||
|
@ -97,7 +94,10 @@ class Field(object):
|
|||
if self.is_array():
|
||||
return ', const {} {}[{}]'.format(type_name, self.name, self.count)
|
||||
if self.type_obj.is_assignable() and not self.is_varlen():
|
||||
return ', {} {}'.format(type_name, self.name)
|
||||
name = self.name
|
||||
if self.is_optional:
|
||||
name = '*' + name
|
||||
return ', {} {}'.format(type_name, name)
|
||||
if self.is_varlen() and self.type_obj.is_varsize():
|
||||
return ', const {} **{}'.format(type_name, self.name)
|
||||
return ', const {} *{}'.format(type_name, self.name)
|
||||
|
@ -145,7 +145,7 @@ class FieldSet(object):
|
|||
return bool(self.len_fields)
|
||||
|
||||
def needs_context(self):
|
||||
return any([field.needs_context() for field in self.fields.values()])
|
||||
return any([field.needs_context() or field.is_optional for field in self.fields.values()])
|
||||
|
||||
|
||||
class Type(FieldSet):
|
||||
|
|
|
@ -31,6 +31,8 @@ msgdata,test_msg,test_enum,e:test_enum,
|
|||
msgdata,test_msg,test_struct,test_short_id,
|
||||
# test var-size struct
|
||||
msgdata,test_msg,test_varsize_struct,test_features,
|
||||
# test optional assignable
|
||||
msgdata,test_msg,test_optional_assignable,?u32,
|
||||
# test optional struct
|
||||
msgdata,test_msg,test_optional_struct,?test_short_id,
|
||||
# test optional var-size struct
|
||||
|
|
Loading…
Add table
Reference in a new issue