Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RBSを追加 #58

Merged
merged 1 commit into from Jan 16, 2024
Merged

RBSを追加 #58

merged 1 commit into from Jan 16, 2024

Conversation

greendrop
Copy link
Contributor

RBSを追加してみました。 #42

変更箇所

  • sigディレクトリ内にRBSを追加
    • typeprofで一旦出力し、こちらや実コードを参照して作成
  • その他ファイルは変更なし

動作確認

こちらの内容でSteepにて型検査を行っています。
このPRには含めていません。

  • READMEからサンプルコード (sample.rb) を作成

    sample.rb
      require "gimei"
    
      gimei = Gimei.name
      gimei.kanji
      gimei.hiragana
      gimei.katakana
      gimei.romaji
      gimei.gender
      gimei.male?
      gimei.female?
      gimei.last.kanji
      gimei.last.hiragana
      gimei.last.katakana
      gimei.last.romaji
      gimei.first.kanji
      gimei.first.hiragana
      gimei.first.katakana
      gimei.first.romaji
      
      gimei.family.kanji
      gimei.family.hiragana
      gimei.family.katakana
      gimei.family.romaji
      
      gimei.given.kanji
      gimei.given.hiragana
      gimei.given.katakana
      gimei.given.romaji
      
      gimei = Gimei.male
      gimei.male?
      gimei.female?
      gimei.gender
      gimei.kanji
      
      gimei = Gimei::Name.new(:male)
      gimei.male?
      gimei.female?
      gimei.gender
      gimei.kanji
      
      gimei = Gimei.female
      gimei.male?
      gimei.female?
      gimei.gender
      gimei.kanji
      
      gimei = Gimei::Name.new(:female)
      gimei.male?
      gimei.female?
      gimei.gender
      gimei.kanji
      
      Gimei.kanji
      Gimei.hiragana
      Gimei.katakana
      Gimei.romaji
      Gimei.last.kanji
      Gimei.last.hiragana
      Gimei.last.katakana
      Gimei.last.romaji
      Gimei.first.kanji
      Gimei.first.hiragana
      Gimei.first.katakana
      Gimei.first.romaji
      
      Gimei.family.kanji
      Gimei.family.hiragana
      Gimei.family.katakana
      Gimei.family.romaji
      
      Gimei.given.kanji
      Gimei.given.hiragana
      Gimei.given.katakana
      Gimei.given.romaji
      
      Gimei.unique.name
      
      Gimei.unique.name.kanji
      Gimei.unique.name.kanji
      Gimei.unique.name.kanji
      
      Gimei.unique.last
      Gimei.unique.first
      
      Gimei.unique.first.hiragana
      Gimei.unique.first.hiragana
      
      Gimei.unique.clear
      Gimei.unique.clear(:name)
      Gimei.unique.clear(:first)
      
      address = Gimei.address
      address.kanji
      address.to_s
      address.hiragana
      address.katakana
      address.romaji
      
      address.prefecture.kanji
      address.prefecture.kanji
      address.prefecture.to_s
      address.prefecture.hiragana
      address.prefecture.katakana
      address.prefecture.romaji
      
      address.city.kanji
      address.city.to_s
      address.city.hiragana
      address.city.katakana
      address.city.romaji
      
      address.town.kanji
      address.town.to_s
      address.town.hiragana
      address.town.katakana
      address.town.romaji
    
  • Steepを導入して、サンプルコードの型検査が成功することを確認

  • lib配下の型検査については、一部のdef_delegatorsやdefine_methodでエラーとなる

    エラー内容
    $ bundle exec steep check
    # Type checking files:
    
    ...........................................................................................................................................F.............................F...........................
    
    lib/gimei.rb:27:4: [error] Type `singleton(::Class)` does not have method `def_delegators`
    │ Diagnostic ID: Ruby::NoMethod
    │
    └     def_delegators Gimei::Name, :male, :female
          ~~~~~~~~~~~~~~
    
    lib/gimei.rb:28:4: [error] Type `singleton(::Class)` does not have method `def_delegators`
    │ Diagnostic ID: Ruby::NoMethod
    │
    └     def_delegators :address, :prefecture, :city, :town
          ~~~~~~~~~~~~~~
    
    lib/gimei.rb:44:13: [error] Unexpected positional argument
    │ Diagnostic ID: Ruby::UnexpectedPositionalArgument
    │
    └         name(gender).public_send(method_name)
                   ~~~~~~
    
    lib/gimei/name.rb:19:12: [error] Cannot pass a value of type `nil` as an argument of type `::Class`
    │   nil <: ::Class
    │
    │ Diagnostic ID: Ruby::ArgumentTypeMismatch
    │
    └         new(gender).public_send(method_name)
                  ~~~~~~
    
    Detected 4 problems from 2 files
    

その他

  • Gimei.names
    • :first_name:last_nameかで階層が異なり、うまく動作しない箇所があったため、一旦untypedとしています。

@coveralls
Copy link

Coverage Status

coverage: 100.0%. remained the same when pulling 1102aab on greendrop:add_rbs into 08ecbff on willnet:main.

@willnet
Copy link
Owner

willnet commented Jan 16, 2024

ありがとうございます!これマージして微調整して次のバージョンリリースしようと思います

@willnet willnet merged commit b55ae68 into willnet:main Jan 16, 2024
11 checks passed
@willnet willnet mentioned this pull request Jan 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants