class GraphQL::Schema::Directive

def assert_valid_owner

def assert_valid_owner
  case @owner
  when Class
    if @owner < GraphQL::Schema::Object
      assert_has_location(OBJECT)
    elsif @owner < GraphQL::Schema::Union
      assert_has_location(UNION)
    elsif @owner < GraphQL::Schema::Enum
      assert_has_location(ENUM)
    elsif @owner < GraphQL::Schema::InputObject
      assert_has_location(INPUT_OBJECT)
    elsif @owner < GraphQL::Schema::Scalar
      assert_has_location(SCALAR)
    elsif @owner < GraphQL::Schema
      assert_has_location(SCHEMA)
    elsif @owner < GraphQL::Schema::Resolver
      assert_has_location(FIELD_DEFINITION)
    else
      raise "Unexpected directive owner class: #{@owner}"
    end
  when Module
    assert_has_location(INTERFACE)
  when GraphQL::Schema::Argument
    if @owner.owner.is_a?(GraphQL::Schema::Field)
      assert_has_location(ARGUMENT_DEFINITION)
    else
      assert_has_location(INPUT_FIELD_DEFINITION)
    end
  when GraphQL::Schema::Field
    assert_has_location(FIELD_DEFINITION)
  when GraphQL::Schema::EnumValue
    assert_has_location(ENUM_VALUE)
  else
    raise "Unexpected directive owner: #{@owner.inspect}"
  end
end