typeprof 0.21.4 → 0.21.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +22 -15
- data/Gemfile.lock +2 -2
- data/lib/typeprof/import.rb +45 -13
- data/lib/typeprof/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d207fe000797f7326bd569640296801ff8047d8261b2461f22c744899753641
|
4
|
+
data.tar.gz: ec87c3c228fc1326739f11fc6aaa63c4d5db46ad66bec55aab46d11d09953a50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6acf621b74c3468b14986c8c8616d0d6fc30a4e610dcf817ef550cc302d008cf916ea34f721a7e06038b48c77097e83a16f2e27233e93b18465f69288da4561
|
7
|
+
data.tar.gz: 1c80d8d54c9cda86819eac0aec7b47393f01423a6506946240ebdef40b02ad90bae4c69c43ced7906ecc60945b85fee2baefc8c0aa717a8b95c570f9c25adcf4
|
data/.github/workflows/main.yml
CHANGED
@@ -1,32 +1,39 @@
|
|
1
1
|
name: Ruby
|
2
2
|
|
3
|
-
on:
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
workflow_dispatch:
|
7
|
+
schedule:
|
8
|
+
# # This job runs at 00:00 on Friday.
|
9
|
+
- cron: '0 15 * * 5'
|
4
10
|
|
5
11
|
jobs:
|
12
|
+
ruby-versions:
|
13
|
+
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
|
14
|
+
with:
|
15
|
+
engine: cruby-truffleruby
|
16
|
+
min_version: 2.7
|
17
|
+
|
6
18
|
build:
|
19
|
+
needs: ruby-versions
|
20
|
+
name: build (${{ matrix.ruby }})
|
7
21
|
strategy:
|
8
22
|
fail-fast: false
|
9
23
|
matrix:
|
10
|
-
ruby
|
24
|
+
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
|
11
25
|
runs-on: ubuntu-latest
|
12
26
|
steps:
|
13
27
|
- uses: actions/checkout@v3
|
14
28
|
- name: Set up Ruby
|
15
29
|
uses: ruby/setup-ruby@v1
|
16
30
|
with:
|
17
|
-
ruby-version: ${{ matrix.ruby
|
18
|
-
|
31
|
+
ruby-version: ${{ matrix.ruby }}
|
32
|
+
- name: Bundle install
|
33
|
+
run: |
|
34
|
+
bundle install
|
35
|
+
- run: bundle exec typeprof --version
|
19
36
|
- name: Run the test suite
|
20
37
|
run: |
|
21
38
|
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
|
39
|
+
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.
|
4
|
+
typeprof (0.21.6)
|
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 (
|
14
|
+
rbs (3.0.1)
|
15
15
|
simplecov (0.21.2)
|
16
16
|
docile (~> 1.1)
|
17
17
|
simplecov-html (~> 0.11)
|
data/lib/typeprof/import.rb
CHANGED
@@ -6,8 +6,13 @@ module TypeProf
|
|
6
6
|
@repo = RBS::Repository.new
|
7
7
|
collection_path = Config.current.collection_path
|
8
8
|
if collection_path&.exist?
|
9
|
-
|
10
|
-
|
9
|
+
lock_path = RBS::Collection::Config.to_lockfile_path(collection_path)
|
10
|
+
if lock_path.exist?
|
11
|
+
collection_lock = RBS::Collection::Config.from_path(lock_path)
|
12
|
+
@repo.add(collection_lock.repo_path)
|
13
|
+
else
|
14
|
+
raise "Please execute 'rbs collection install'"
|
15
|
+
end
|
11
16
|
end
|
12
17
|
@env, @loaded_gems, @builtin_env_json = RBSReader.get_builtin_env
|
13
18
|
end
|
@@ -23,9 +28,14 @@ module TypeProf
|
|
23
28
|
# TODO: invalidate this cache when rbs_collection.yml was changed
|
24
29
|
collection_path = Config.current.collection_path
|
25
30
|
if collection_path&.exist?
|
26
|
-
|
27
|
-
|
28
|
-
|
31
|
+
lock_path = RBS::Collection::Config.to_lockfile_path(collection_path)
|
32
|
+
if lock_path.exist?
|
33
|
+
collection_lock = RBS::Collection::Config::Lockfile.from_lockfile(lockfile_path: lock_path, data: YAML.load_file(lock_path.to_s))
|
34
|
+
collection_lock.gems.each {|gem| @loaded_gems << gem["name"] }
|
35
|
+
loader.add_collection(collection_lock)
|
36
|
+
else
|
37
|
+
raise "Please execute 'rbs collection install'"
|
38
|
+
end
|
29
39
|
end
|
30
40
|
|
31
41
|
new_decls = loader.load(env: @builtin_env).map {|decl,| decl }
|
@@ -77,19 +87,37 @@ module TypeProf
|
|
77
87
|
def load_rbs_string(name, content)
|
78
88
|
buffer = RBS::Buffer.new(name: name, content: content)
|
79
89
|
new_decls = []
|
80
|
-
RBS::Parser.parse_signature(buffer)
|
81
|
-
|
82
|
-
|
90
|
+
ret = RBS::Parser.parse_signature(buffer)
|
91
|
+
if ret[0].is_a?(RBS::Buffer)
|
92
|
+
# rbs 3.0
|
93
|
+
buffer, directives, decls = ret
|
94
|
+
@env.add_signature(buffer: buffer, directives: directives, decls: decls)
|
95
|
+
new_decls.concat(decls)
|
96
|
+
else
|
97
|
+
ret.each do |decl|
|
98
|
+
@env << decl
|
99
|
+
new_decls << decl
|
100
|
+
end
|
83
101
|
end
|
84
102
|
RBSReader.load_rbs(@env, new_decls)
|
85
103
|
end
|
86
104
|
|
87
105
|
def self.load_rbs(env, new_decls)
|
88
106
|
all_env = env.resolve_type_names
|
89
|
-
resolver = RBS::TypeNameResolver.from_env(all_env)
|
90
107
|
cur_env = RBS::Environment.new
|
91
|
-
|
92
|
-
|
108
|
+
if defined?(RBS::TypeNameResolver)
|
109
|
+
resolver = RBS::TypeNameResolver.from_env(all_env)
|
110
|
+
new_decls.each do |decl|
|
111
|
+
cur_env << env.resolve_declaration(resolver, decl, outer: [], prefix: RBS::Namespace.root)
|
112
|
+
end
|
113
|
+
else
|
114
|
+
resolver = RBS::Resolver::TypeNameResolver.new(all_env)
|
115
|
+
table = RBS::Environment::UseMap::Table.new()
|
116
|
+
table.compute_children
|
117
|
+
map = RBS::Environment::UseMap.new(table: table)
|
118
|
+
new_decls.each do |decl|
|
119
|
+
cur_env << s = env.resolve_declaration(resolver, map, decl, outer: [], prefix: RBS::Namespace.root)
|
120
|
+
end
|
93
121
|
end
|
94
122
|
|
95
123
|
RBS2JSON.new(all_env, cur_env).dump_json
|
@@ -134,6 +162,9 @@ module TypeProf
|
|
134
162
|
gvars
|
135
163
|
end
|
136
164
|
|
165
|
+
AliasDecl = defined?(RBS::AST::Declarations::Alias) ? RBS::AST::Declarations::Alias : RBS::AST::Declarations::AliasDecl
|
166
|
+
TypeAlias = defined?(RBS::AST::Declarations::TypeAlias) ? RBS::AST::Declarations::TypeAlias : nil
|
167
|
+
|
137
168
|
def conv_classes
|
138
169
|
json = {}
|
139
170
|
|
@@ -265,9 +296,10 @@ module TypeProf
|
|
265
296
|
|
266
297
|
# The following declarations are ignoreable because they are handled in other level
|
267
298
|
when RBS::AST::Declarations::Constant
|
268
|
-
when
|
299
|
+
when AliasDecl # type alias
|
269
300
|
when RBS::AST::Declarations::Class, RBS::AST::Declarations::Module
|
270
301
|
when RBS::AST::Declarations::Interface
|
302
|
+
when TypeAlias
|
271
303
|
|
272
304
|
else
|
273
305
|
warn "Importing #{ member.class.name } is not supported yet"
|
@@ -492,7 +524,7 @@ module TypeProf
|
|
492
524
|
else
|
493
525
|
begin
|
494
526
|
@alias_resolution_stack[ty.name] = true
|
495
|
-
alias_decl = @all_env.alias_decls[ty.name]
|
527
|
+
alias_decl = (@all_env.respond_to?(:alias_decls) ? @all_env.alias_decls : @all_env.type_alias_decls)[ty.name]
|
496
528
|
alias_decl ? conv_type(alias_decl.decl.type) : [:any]
|
497
529
|
ensure
|
498
530
|
@alias_resolution_stack.delete(ty.name)
|
data/lib/typeprof/version.rb
CHANGED
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
|
+
version: 0.21.6
|
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-
|
11
|
+
date: 2023-02-28 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.
|
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: []
|