katakata_irb 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/katakata_irb/completor.rb +5 -0
- data/lib/katakata_irb/type_simulator.rb +9 -1
- data/lib/katakata_irb/types.rb +1 -1
- 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: 5d3d6ff924cd8fa8f05b097253525517a988c377d59e63ed1e5c6e5867cfde88
|
4
|
+
data.tar.gz: af6afd4a833e2b9bfd08a05877db80e45faadcac845be5148b53e3266d5539d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35b76a766b99913226c5888b00efcc1c88c35ecb1bbb38338cf69a47772153caecb204bf5cad0a4f7affb475a179b0bd084ecd673c793260165731eef88a258b
|
7
|
+
data.tar.gz: e2dc520f4d5fe10a95795d5cbcdb784289e674c415a8eddea2c06883262f02847a5fd5b4fb7dc83d219e8a2add95e5fb5ed7c3d7000b4c83ea539825d50c5f20
|
data/Gemfile.lock
CHANGED
@@ -51,6 +51,11 @@ module KatakataIrb::Completor
|
|
51
51
|
end
|
52
52
|
IRB::InputCompletor::CompletionProc.define_singleton_method :call do |*args|
|
53
53
|
completion_proc.call(*args)
|
54
|
+
rescue => e
|
55
|
+
$error = e
|
56
|
+
KatakataIrb.log_puts
|
57
|
+
KatakataIrb.log_puts "#{e.inspect} stored to $error"
|
58
|
+
KatakataIrb.log_puts
|
54
59
|
end
|
55
60
|
end
|
56
61
|
|
@@ -693,7 +693,7 @@ class KatakataIrb::TypeSimulator
|
|
693
693
|
klass_types << KatakataIrb::Types::CLASS if klass_types.empty?
|
694
694
|
simulate_evaluate body_stmt, Scope.new(scope, { SELF => KatakataIrb::Types::UnionType[*klass_types], BREAK_RESULT => nil, NEXT_RESULT => nil, RETURN_RESULT => nil }, trace_cvar: false, trace_ivar: false, trace_lvar: false)
|
695
695
|
in [:for, fields, enum, statements]
|
696
|
-
fields = [fields] if fields in [:var_field,]
|
696
|
+
fields = [fields] if fields in [:var_field | :field | :aref_field,]
|
697
697
|
params = [:params, fields, nil, nil, nil, nil, nil, nil]
|
698
698
|
enum = simulate_evaluate enum, scope
|
699
699
|
extract_param_names(params).each { scope[_1] = KatakataIrb::Types::NIL }
|
@@ -893,6 +893,12 @@ class KatakataIrb::TypeSimulator
|
|
893
893
|
scope[name] = value || KatakataIrb::Types::OBJECT
|
894
894
|
in [:mlhs, *mlhs]
|
895
895
|
evaluate_massign mlhs, value || [], scope
|
896
|
+
in [:field, receiver,]
|
897
|
+
# (a=x).b, c = value
|
898
|
+
simulate_evaluate receiver, scope
|
899
|
+
in [:aref_field, *field]
|
900
|
+
# (a=x)[i=y, j=z], b = value
|
901
|
+
simulate_evaluate [:aref, *field], scope
|
896
902
|
in nil
|
897
903
|
# a, *, b = value
|
898
904
|
end
|
@@ -1047,6 +1053,8 @@ class KatakataIrb::TypeSimulator
|
|
1047
1053
|
items.each(&extract_mlhs)
|
1048
1054
|
in [:rest_param, item]
|
1049
1055
|
extract_mlhs.call item if item
|
1056
|
+
in [:field | :aref_field,]
|
1057
|
+
# a.b, c[i] = value
|
1050
1058
|
in [:excessed_comma]
|
1051
1059
|
end
|
1052
1060
|
end
|
data/lib/katakata_irb/types.rb
CHANGED
@@ -298,7 +298,7 @@ module KatakataIrb::Types
|
|
298
298
|
type.module_or_class if (type in SingletonType) && type.module_or_class.is_a?(Class)
|
299
299
|
end
|
300
300
|
if classes.empty?
|
301
|
-
klass =
|
301
|
+
klass = return_type.name.to_namespace.path.reduce(Object) { _1.const_get _2 }
|
302
302
|
classes << klass if klass in Class
|
303
303
|
end
|
304
304
|
if return_type.args
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tompng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbs
|