typeprof 0.21.4 → 0.21.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0f10007471912f793ce801817a088aa794bc4baeb15e5179362521f55e41ec0
4
- data.tar.gz: ed61a2b2f4b9800cfb9c9e75d7aa0d0a5690ec1660e509dd4da456b60d1d03e7
3
+ metadata.gz: 3f5c0fba3561953bdf7db3fe5c326cd4a8375376189928270d919f23dffd78ce
4
+ data.tar.gz: b3d7aabe2f15298c41de661308e3d757ed0643df079092fe184f6046cc9336c6
5
5
  SHA512:
6
- metadata.gz: 218064fc39d5eeacfe48c8babb28cfade5a069703d71ec4fb45f1a436491596006a01e46b63a14a25c611924176e7bc7aa5131a687c48f9c35b9d84e03e044e8
7
- data.tar.gz: 61cca1138af6ab08bb91b9e05cd03a27de7c43bd13a36b9aa5522dffb1a118cb67f4494b0f109097572aa787a334be822773c6fedd87b3f1bcce1d7d221d7eba
6
+ metadata.gz: b861fb63e8cfb3d39fdf5a5f753ea88041e730d5c8518098c05fa07f360eae8f3f808697e5e0462ffc76def30e7163c184a95e3bd14a941063c3dc523a9fad53
7
+ data.tar.gz: 6b061ce0869738ea048e85c74a018adc8894f1c05d71c61b0e91d93b0714c177ef2bc48499640a97fc5f43fd29ace9227ef13924df006a81239cf2ac50480087
@@ -1,32 +1,38 @@
1
1
  name: Ruby
2
2
 
3
- on: [push,pull_request]
3
+ on:
4
+ push:
5
+ pull_request:
6
+ workflow_dispatch:
7
+ schedule:
8
+ - cron: '11 24 * * 5'
4
9
 
5
10
  jobs:
11
+ ruby-versions:
12
+ uses: ruby/actions/.github/workflows/ruby_versions.yml@master
13
+ with:
14
+ engine: cruby-truffleruby
15
+ min_version: 2.7
16
+
6
17
  build:
18
+ needs: ruby-versions
19
+ name: build (${{ matrix.ruby }})
7
20
  strategy:
8
21
  fail-fast: false
9
22
  matrix:
10
- ruby-version: [2.7, 3.0, 3.1, 3.2, head]
23
+ ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
11
24
  runs-on: ubuntu-latest
12
25
  steps:
13
26
  - uses: actions/checkout@v3
14
27
  - name: Set up Ruby
15
28
  uses: ruby/setup-ruby@v1
16
29
  with:
17
- ruby-version: ${{ matrix.ruby-version }}
18
- bundler-cache: true
30
+ ruby-version: ${{ matrix.ruby }}
31
+ - name: Bundle install
32
+ run: |
33
+ bundle install
34
+ - run: bundle exec typeprof --version
19
35
  - name: Run the test suite
20
36
  run: |
21
37
  bundle exec rake TESTOPT=-v
22
-
23
- truffleruby:
24
- runs-on: ubuntu-latest
25
- steps:
26
- - uses: actions/checkout@v3
27
- - name: Set up Ruby
28
- uses: ruby/setup-ruby@v1
29
- with:
30
- ruby-version: truffleruby
31
- bundler-cache: true
32
- - run: bundle exec typeprof --version
38
+ if: ${{ !startsWith(matrix.ruby, 'truffle') }}
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- typeprof (0.21.3)
4
+ typeprof (0.21.5)
5
5
  rbs (>= 1.8.1)
6
6
 
7
7
  GEM
@@ -11,7 +11,7 @@ GEM
11
11
  docile (1.4.0)
12
12
  power_assert (2.0.1)
13
13
  rake (13.0.1)
14
- rbs (2.8.3)
14
+ rbs (3.0.0)
15
15
  simplecov (0.21.2)
16
16
  docile (~> 1.1)
17
17
  simplecov-html (~> 0.11)
@@ -7,6 +7,7 @@ module TypeProf
7
7
  collection_path = Config.current.collection_path
8
8
  if collection_path&.exist?
9
9
  collection_lock = RBS::Collection::Config.lockfile_of(collection_path)
10
+ raise "Please execute 'rbs collection install'" if collection_lock.nil?
10
11
  @repo.add(collection_lock.repo_path)
11
12
  end
12
13
  @env, @loaded_gems, @builtin_env_json = RBSReader.get_builtin_env
@@ -77,19 +78,37 @@ module TypeProf
77
78
  def load_rbs_string(name, content)
78
79
  buffer = RBS::Buffer.new(name: name, content: content)
79
80
  new_decls = []
80
- RBS::Parser.parse_signature(buffer).each do |decl|
81
- @env << decl
82
- new_decls << decl
81
+ ret = RBS::Parser.parse_signature(buffer)
82
+ if ret[0].is_a?(RBS::Buffer)
83
+ # rbs 3.0
84
+ buffer, directives, decls = ret
85
+ @env.add_signature(buffer: buffer, directives: directives, decls: decls)
86
+ new_decls.concat(decls)
87
+ else
88
+ ret.each do |decl|
89
+ @env << decl
90
+ new_decls << decl
91
+ end
83
92
  end
84
93
  RBSReader.load_rbs(@env, new_decls)
85
94
  end
86
95
 
87
96
  def self.load_rbs(env, new_decls)
88
97
  all_env = env.resolve_type_names
89
- resolver = RBS::TypeNameResolver.from_env(all_env)
90
98
  cur_env = RBS::Environment.new
91
- new_decls.each do |decl|
92
- cur_env << env.resolve_declaration(resolver, decl, outer: [], prefix: RBS::Namespace.root)
99
+ if defined?(RBS::TypeNameResolver)
100
+ resolver = RBS::TypeNameResolver.from_env(all_env)
101
+ new_decls.each do |decl|
102
+ cur_env << env.resolve_declaration(resolver, decl, outer: [], prefix: RBS::Namespace.root)
103
+ end
104
+ else
105
+ resolver = RBS::Resolver::TypeNameResolver.new(all_env)
106
+ table = RBS::Environment::UseMap::Table.new()
107
+ table.compute_children
108
+ map = RBS::Environment::UseMap.new(table: table)
109
+ new_decls.each do |decl|
110
+ cur_env << s = env.resolve_declaration(resolver, map, decl, outer: [], prefix: RBS::Namespace.root)
111
+ end
93
112
  end
94
113
 
95
114
  RBS2JSON.new(all_env, cur_env).dump_json
@@ -134,6 +153,9 @@ module TypeProf
134
153
  gvars
135
154
  end
136
155
 
156
+ AliasDecl = defined?(RBS::AST::Declarations::Alias) ? RBS::AST::Declarations::Alias : RBS::AST::Declarations::AliasDecl
157
+ TypeAlias = defined?(RBS::AST::Declarations::TypeAlias) ? RBS::AST::Declarations::TypeAlias : nil
158
+
137
159
  def conv_classes
138
160
  json = {}
139
161
 
@@ -265,9 +287,10 @@ module TypeProf
265
287
 
266
288
  # The following declarations are ignoreable because they are handled in other level
267
289
  when RBS::AST::Declarations::Constant
268
- when RBS::AST::Declarations::Alias # type alias
290
+ when AliasDecl # type alias
269
291
  when RBS::AST::Declarations::Class, RBS::AST::Declarations::Module
270
292
  when RBS::AST::Declarations::Interface
293
+ when TypeAlias
271
294
 
272
295
  else
273
296
  warn "Importing #{ member.class.name } is not supported yet"
@@ -492,7 +515,7 @@ module TypeProf
492
515
  else
493
516
  begin
494
517
  @alias_resolution_stack[ty.name] = true
495
- alias_decl = @all_env.alias_decls[ty.name]
518
+ alias_decl = (@all_env.respond_to?(:alias_decls) ? @all_env.alias_decls : @all_env.type_alias_decls)[ty.name]
496
519
  alias_decl ? conv_type(alias_decl.decl.type) : [:any]
497
520
  ensure
498
521
  @alias_resolution_stack.delete(ty.name)
@@ -1,3 +1,3 @@
1
1
  module TypeProf
2
- VERSION = "0.21.4"
2
+ VERSION = "0.21.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typeprof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.4
4
+ version: 0.21.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Endoh
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-12 00:00:00.000000000 Z
11
+ date: 2023-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbs
@@ -74,7 +74,7 @@ licenses:
74
74
  metadata:
75
75
  homepage_uri: https://github.com/ruby/typeprof
76
76
  source_code_uri: https://github.com/ruby/typeprof
77
- post_install_message:
77
+ post_install_message:
78
78
  rdoc_options: []
79
79
  require_paths:
80
80
  - lib
@@ -89,8 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
- rubygems_version: 3.3.26
93
- signing_key:
92
+ rubygems_version: 3.5.0.dev
93
+ signing_key:
94
94
  specification_version: 4
95
95
  summary: TypeProf is a type analysis tool for Ruby code based on abstract interpretation
96
96
  test_files: []