typeprof 0.21.4 → 0.21.5

Sign up to get free protection for your applications and to get access to all the features.
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: []