katakata_irb 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -5
- data/README.md +3 -1
- data/lib/katakata_irb/completor.rb +4 -5
- data/lib/katakata_irb/scope.rb +6 -1
- data/lib/katakata_irb/type_simulator.rb +1 -2
- data/lib/katakata_irb/types.rb +17 -19
- data/lib/katakata_irb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d50fd34032f33c722cce1adc7118a354b2fdc31736f6d00d9557b9b72b361b65
|
4
|
+
data.tar.gz: b874b7a2b3f65a91eebd447df6df55ae931d8050418942fd07b453611d8ff509
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1d44c271e5ef109670345b8c85022553ab7618ffa30e4f979743912b30677fd8e9925d0b36c933d79f8aa0e7dc2be298e06db6f0a56cff442acb59b22ebc383
|
7
|
+
data.tar.gz: e64e94002296f792a6bdd9b5637f0bf065c4366de653eb15161b3bc9c7aca1598e880344f393106c0ce0e92497cd2d13ee1f604619b70ebe986090a8fa1e74a2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
katakata_irb (0.1.
|
4
|
+
katakata_irb (0.1.7)
|
5
5
|
irb (>= 1.4.0)
|
6
6
|
rbs
|
7
7
|
|
@@ -9,12 +9,12 @@ GEM
|
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
io-console (0.6.0)
|
12
|
-
irb (1.6.
|
12
|
+
irb (1.6.4)
|
13
13
|
reline (>= 0.3.0)
|
14
|
-
minitest (5.
|
14
|
+
minitest (5.18.0)
|
15
15
|
rake (13.0.6)
|
16
|
-
rbs (
|
17
|
-
reline (0.3.
|
16
|
+
rbs (3.1.0)
|
17
|
+
reline (0.3.3)
|
18
18
|
io-console (~> 0.5)
|
19
19
|
|
20
20
|
PLATFORMS
|
data/README.md
CHANGED
@@ -120,10 +120,9 @@ module KatakataIrb::Completor
|
|
120
120
|
contents = types.filter_map do |type|
|
121
121
|
case type
|
122
122
|
when KatakataIrb::Types::InstanceType
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
"#{module_name}.itself" if module_name
|
123
|
+
type.inspect_without_params
|
124
|
+
else
|
125
|
+
type.inspect
|
127
126
|
end
|
128
127
|
end.uniq
|
129
128
|
return if contents.empty?
|
@@ -247,7 +246,7 @@ module KatakataIrb::Completor
|
|
247
246
|
# `require 'target'`
|
248
247
|
return [require_method.to_sym, name.rstrip]
|
249
248
|
end
|
250
|
-
if (target in [:@ident,]) && (expression in [:symbol,]) && (parents[-2] in [:args_add_block, Array =>
|
249
|
+
if (target in [:@ident,]) && (expression in [:symbol,]) && (parents[-2] in [:args_add_block, Array => _args, [:symbol_literal, ^expression]])
|
251
250
|
# `method(&:target)`
|
252
251
|
receiver_ref = [:var_ref, [:@ident, '_1', [0, 0]]]
|
253
252
|
block_statements = [receiver_ref]
|
data/lib/katakata_irb/scope.rb
CHANGED
@@ -707,13 +707,12 @@ class KatakataIrb::TypeSimulator
|
|
707
707
|
|
708
708
|
def evaluate_massign(sexp, values, scope)
|
709
709
|
values = sized_splat values, :to_ary, sexp.size unless values.is_a? Array
|
710
|
-
|
711
710
|
rest_index = sexp.find_index { _1 in [:rest_param, ]}
|
712
711
|
if rest_index
|
713
712
|
pre = rest_index ? sexp[0...rest_index] : sexp
|
714
713
|
post = rest_index ? sexp[rest_index + 1..] : []
|
715
714
|
sexp[rest_index] in [:rest_param, rest_field]
|
716
|
-
rest_values = values[pre.size
|
715
|
+
rest_values = values[pre.size...values.size - post.size] || []
|
717
716
|
rest_type = KatakataIrb::Types::InstanceType.new Array, Elem: KatakataIrb::Types::UnionType[*rest_values]
|
718
717
|
pairs = pre.zip(values.first(pre.size)) + [[rest_field, rest_type]] + post.zip(values.last(post.size))
|
719
718
|
else
|
data/lib/katakata_irb/types.rb
CHANGED
@@ -12,7 +12,7 @@ module KatakataIrb::Types
|
|
12
12
|
loader.add path: Pathname('sig')
|
13
13
|
RBS::DefinitionBuilder.new env: RBS::Environment.from_loader(loader).resolve_type_names
|
14
14
|
rescue => e
|
15
|
-
puts "\nKatakataIRB failed to initialize RBS::
|
15
|
+
puts "\r\nKatakataIRB failed to initialize RBS::DefinitionBuilder\r\n#{e}\r\n"
|
16
16
|
Object.new
|
17
17
|
end
|
18
18
|
|
@@ -196,16 +196,22 @@ module KatakataIrb::Types
|
|
196
196
|
def nillable?() = (@klass == NilClass)
|
197
197
|
def nonnillable() = self
|
198
198
|
def inspect
|
199
|
-
|
200
|
-
|
199
|
+
if params.empty?
|
200
|
+
inspect_without_params
|
201
|
+
else
|
202
|
+
params_string = "[#{params.map { "#{_1}: #{_2.inspect}" }.join(', ')}]"
|
203
|
+
"#{inspect_without_params}#{params_string}"
|
204
|
+
end
|
205
|
+
end
|
206
|
+
def inspect_without_params
|
207
|
+
if klass == NilClass
|
201
208
|
'nil'
|
202
|
-
|
209
|
+
elsif klass == TrueClass
|
203
210
|
'true'
|
204
|
-
|
211
|
+
elsif klass == FalseClass
|
205
212
|
'false'
|
206
213
|
else
|
207
|
-
|
208
|
-
"#{klass.name}#{params_string}"
|
214
|
+
klass.singleton_class? ? klass.superclass.to_s : klass.to_s
|
209
215
|
end
|
210
216
|
end
|
211
217
|
end
|
@@ -327,18 +333,10 @@ module KatakataIrb::Types
|
|
327
333
|
BOOLEAN
|
328
334
|
when RBS::Types::Bases::Instance
|
329
335
|
self_type.transform do |type|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
case type.klass
|
335
|
-
in Class
|
336
|
-
InstanceType.new Class
|
337
|
-
in Module
|
338
|
-
InstanceType.new Module
|
339
|
-
else
|
340
|
-
OBJECT
|
341
|
-
end
|
336
|
+
if type.is_a?(SingletonType) && type.module_or_class.is_a?(Class)
|
337
|
+
InstanceType.new type.module_or_class
|
338
|
+
else
|
339
|
+
OBJECT
|
342
340
|
end
|
343
341
|
end
|
344
342
|
when RBS::Types::Union
|
data/lib/katakata_irb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: katakata_irb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tompng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: irb
|