class IDL::AST::Attribute
def initialize(_name, _enclosure, params)
def initialize(_name, _enclosure, params) super(_name, _enclosure) @idltype = params[:type] @get_raises = [] @set_raises = [] unless @idltype.is_a?(IDL::Type::ScopedName) && @idltype.is_node?(IDL::AST::TemplateParam) raise "Anonymous type definitions are not allowed!" if @idltype.is_anonymous? raise "Exception #{@idltype.typename} is not allowed as an attribute!" if @idltype.is_node?(IDL::AST::Exception) if @idltype.is_local? if _enclosure.is_a?(IDL::AST::Interface) && !_enclosure.is_local? raise "Local type #{@idltype.typename} not allowed for operation on unrestricted interface" end ## IDL_Valuetype: no problem as valuetype operations are local end unless @idltype.is_complete? if _enclosure.is_a?(IDL::AST::Interface) raise "Incomplete type #{@idltype.typename} not allowed here!" end ## IDL_Valuetype: no problem as valuetype operations are local end end @readonly = params[:readonly] end