steep 1.3.0.pre.1 → 1.3.0
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 +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +3 -3
- data/Gemfile.steep +1 -2
- data/Gemfile.steep.lock +4 -5
- data/bin/steep-prof +1 -1
- data/lib/steep/ast/types/class.rb +9 -3
- data/lib/steep/ast/types/factory.rb +9 -2
- data/lib/steep/ast/types/helper.rb +4 -3
- data/lib/steep/ast/types/instance.rb +8 -3
- data/lib/steep/ast/types/intersection.rb +6 -2
- data/lib/steep/ast/types/literal.rb +1 -1
- data/lib/steep/ast/types/logic.rb +5 -3
- data/lib/steep/ast/types/name.rb +11 -5
- data/lib/steep/ast/types/proc.rb +5 -5
- data/lib/steep/ast/types/record.rb +5 -1
- data/lib/steep/ast/types/self.rb +8 -2
- data/lib/steep/ast/types/tuple.rb +7 -5
- data/lib/steep/ast/types/union.rb +10 -4
- data/lib/steep/ast/types/var.rb +1 -1
- data/lib/steep/drivers/check.rb +1 -1
- data/lib/steep/drivers/checkfile.rb +1 -1
- data/lib/steep/drivers/langserver.rb +2 -2
- data/lib/steep/drivers/stats.rb +1 -1
- data/lib/steep/drivers/utils/jobs_option.rb +0 -4
- data/lib/steep/drivers/watch.rb +1 -1
- data/lib/steep/interface/substitution.rb +11 -10
- data/lib/steep/server/worker_process.rb +16 -11
- data/lib/steep/services/completion_provider.rb +2 -1
- data/lib/steep/services/goto_service.rb +2 -1
- data/lib/steep/services/hover_provider/ruby.rb +2 -1
- data/lib/steep/services/signature_service.rb +16 -0
- data/lib/steep/services/type_check_service.rb +4 -4
- data/lib/steep/signature/validator.rb +13 -13
- data/lib/steep/type_construction.rb +25 -20
- data/lib/steep/type_inference/logic_type_interpreter.rb +2 -2
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +0 -1
- data/rbs_collection.steep.lock.yaml +1 -1
- data/sig/steep/ast/builtin.rbs +1 -1
- data/sig/steep/ast/types/any.rbs +6 -6
- data/sig/steep/ast/types/boolean.rbs +7 -7
- data/sig/steep/ast/types/bot.rbs +6 -6
- data/sig/steep/ast/types/class.rbs +8 -7
- data/sig/steep/ast/types/helper.rbs +6 -3
- data/sig/steep/ast/types/instance.rbs +7 -6
- data/sig/steep/ast/types/intersection.rbs +13 -10
- data/sig/steep/ast/types/literal.rbs +6 -4
- data/sig/steep/ast/types/logic.rbs +9 -9
- data/sig/steep/ast/types/name.rbs +9 -5
- data/sig/steep/ast/types/nil.rbs +7 -7
- data/sig/steep/ast/types/proc.rbs +8 -3
- data/sig/steep/ast/types/record.rbs +8 -9
- data/sig/steep/ast/types/self.rbs +8 -7
- data/sig/steep/ast/types/top.rbs +6 -6
- data/sig/steep/ast/types/tuple.rbs +6 -5
- data/sig/steep/ast/types/union.rbs +9 -9
- data/sig/steep/ast/types/var.rbs +16 -11
- data/sig/steep/ast/types/void.rbs +6 -6
- data/sig/steep/ast/types.rbs +5 -26
- data/sig/steep/drivers/utils/jobs_option.rbs +0 -2
- data/sig/steep/interface/substitution.rbs +9 -9
- data/sig/steep/server/worker_process.rbs +2 -2
- data/sig/steep/services/signature_service.rbs +14 -0
- data/sig/steep/services/type_check_service.rbs +2 -2
- data/sig/steep.rbs +2 -0
- data/steep.gemspec +1 -1
- metadata +6 -7
- data/lib/steep/ast/types.rb +0 -62
@@ -22,18 +22,23 @@ module Steep
|
|
22
22
|
|
23
23
|
def to_s: () -> ::String
|
24
24
|
|
25
|
-
|
25
|
+
@fvs: Set[variable]
|
26
|
+
def free_variables: () -> Set[variable]
|
26
27
|
|
27
28
|
include Helper::ChildrenLevel
|
28
29
|
|
29
30
|
def level: () -> Array[Integer]
|
30
31
|
|
31
|
-
def closed?: () -> bool
|
32
|
-
|
33
32
|
def with_location: (untyped new_location) -> Proc
|
34
33
|
|
35
34
|
def map_type: () { (AST::Types::t) -> AST::Types::t } -> Proc
|
36
35
|
|
36
|
+
# Returns true if the proc requires exactly one argument
|
37
|
+
#
|
38
|
+
# * One required argument,
|
39
|
+
# * No optional/rest argument, and
|
40
|
+
# * No keywords
|
41
|
+
#
|
37
42
|
def one_arg?: () -> bool
|
38
43
|
|
39
44
|
def back_type: () -> AST::Types::t
|
@@ -2,15 +2,13 @@ module Steep
|
|
2
2
|
module AST
|
3
3
|
module Types
|
4
4
|
class Record
|
5
|
-
type loc = RBS::Location[untyped, untyped]
|
6
|
-
|
7
5
|
type key = Symbol | String | Integer
|
8
6
|
|
9
|
-
attr_reader location:
|
7
|
+
attr_reader location: untyped
|
10
8
|
|
11
9
|
attr_reader elements: Hash[key, t]
|
12
10
|
|
13
|
-
def initialize: (elements: Hash[key, t], ?location:
|
11
|
+
def initialize: (elements: Hash[key, t], ?location: untyped) -> void
|
14
12
|
|
15
13
|
def ==: (untyped other) -> bool
|
16
14
|
|
@@ -18,20 +16,21 @@ module Steep
|
|
18
16
|
|
19
17
|
alias eql? ==
|
20
18
|
|
21
|
-
def subst: (Interface::Substitution s) ->
|
19
|
+
def subst: (Interface::Substitution s) -> Record
|
22
20
|
|
23
|
-
def to_s: () ->
|
21
|
+
def to_s: () -> String
|
24
22
|
|
25
|
-
|
23
|
+
@fvs: Set[variable]
|
24
|
+
def free_variables: () -> Set[variable]
|
26
25
|
|
27
26
|
include Helper::ChildrenLevel
|
28
27
|
|
29
28
|
def each_child: () { (t) -> void } -> void
|
30
29
|
| () -> Enumerator[t, void]
|
31
30
|
|
32
|
-
def level: () -> Integer
|
31
|
+
def level: () -> Array[Integer]
|
33
32
|
|
34
|
-
def with_location: (
|
33
|
+
def with_location: (untyped new_location) -> Record
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
@@ -6,23 +6,24 @@ module Steep
|
|
6
6
|
|
7
7
|
def initialize: (?location: untyped?) -> void
|
8
8
|
|
9
|
-
def ==: (untyped other) ->
|
9
|
+
def ==: (untyped other) -> bool
|
10
10
|
|
11
|
-
def hash: () ->
|
11
|
+
def hash: () -> Integer
|
12
12
|
|
13
13
|
alias eql? ==
|
14
14
|
|
15
|
-
def to_s: () ->
|
15
|
+
def to_s: () -> String
|
16
16
|
|
17
17
|
include Helper::NoChild
|
18
18
|
|
19
|
-
def subst: (
|
19
|
+
def subst: (Interface::Substitution s) -> t
|
20
20
|
|
21
|
-
|
21
|
+
@@fvs: Set[variable]
|
22
|
+
def free_variables: () -> Set[variable]
|
22
23
|
|
23
|
-
def level: () ->
|
24
|
+
def level: () -> Array[Integer]
|
24
25
|
|
25
|
-
def with_location: (untyped new_location) ->
|
26
|
+
def with_location: (untyped new_location) -> Self
|
26
27
|
|
27
28
|
self.@instance: Self
|
28
29
|
def self.instance: () -> Self
|
data/sig/steep/ast/types/top.rbs
CHANGED
@@ -6,23 +6,23 @@ module Steep
|
|
6
6
|
|
7
7
|
def initialize: (?location: untyped?) -> void
|
8
8
|
|
9
|
-
def ==: (untyped other) ->
|
9
|
+
def ==: (untyped other) -> bool
|
10
10
|
|
11
|
-
def hash: () ->
|
11
|
+
def hash: () -> Integer
|
12
12
|
|
13
13
|
alias eql? ==
|
14
14
|
|
15
|
-
def subst: (
|
15
|
+
def subst: (Interface::Substitution s) -> Top
|
16
16
|
|
17
|
-
def to_s: () ->
|
17
|
+
def to_s: () -> String
|
18
18
|
|
19
19
|
include Helper::NoFreeVariables
|
20
20
|
|
21
21
|
include Helper::NoChild
|
22
22
|
|
23
|
-
def level: () ->
|
23
|
+
def level: () -> Array[Integer]
|
24
24
|
|
25
|
-
def with_location: (untyped new_location) ->
|
25
|
+
def with_location: (untyped new_location) -> Top
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -4,9 +4,9 @@ module Steep
|
|
4
4
|
class Tuple
|
5
5
|
attr_reader types: Array[t]
|
6
6
|
|
7
|
-
attr_reader location:
|
7
|
+
attr_reader location: untyped
|
8
8
|
|
9
|
-
def initialize: (types: Array[t], ?location:
|
9
|
+
def initialize: (types: Array[t], ?location: untyped) -> void
|
10
10
|
|
11
11
|
def ==: (untyped other) -> bool
|
12
12
|
|
@@ -18,16 +18,17 @@ module Steep
|
|
18
18
|
|
19
19
|
def to_s: () -> ::String
|
20
20
|
|
21
|
-
|
21
|
+
@fvs: Set[variable]
|
22
|
+
def free_variables: () -> Set[variable]
|
22
23
|
|
23
24
|
include Helper::ChildrenLevel
|
24
25
|
|
25
26
|
def each_child: () { (t) -> void } -> void
|
26
27
|
| () -> Enumerator[t, void]
|
27
28
|
|
28
|
-
def level: () ->
|
29
|
+
def level: () -> Array[Integer]
|
29
30
|
|
30
|
-
def with_location: (
|
31
|
+
def with_location: (untyped new_location) -> Tuple
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -4,34 +4,34 @@ module Steep
|
|
4
4
|
class Union
|
5
5
|
attr_reader types: Array[t]
|
6
6
|
|
7
|
-
|
7
|
+
attr_reader location: untyped
|
8
8
|
|
9
|
-
|
9
|
+
def initialize: (types: Array[t], ?location: untyped) -> void
|
10
10
|
|
11
|
-
def
|
12
|
-
|
13
|
-
def self.build: (types: Array[t], ?location: loc?) -> t
|
11
|
+
def self.build: (types: Array[t], ?location: untyped) -> t
|
14
12
|
|
15
13
|
def ==: (untyped other) -> bool
|
16
14
|
|
15
|
+
@hash: Integer
|
17
16
|
def hash: () -> Integer
|
18
17
|
|
19
18
|
alias eql? ==
|
20
19
|
|
21
|
-
def subst: (Interface::Substitution s) ->
|
20
|
+
def subst: (Interface::Substitution s) -> t
|
22
21
|
|
23
22
|
def to_s: () -> ::String
|
24
23
|
|
25
|
-
|
24
|
+
@fvs: Set[variable]
|
25
|
+
def free_variables: () -> Set[variable]
|
26
26
|
|
27
27
|
def each_child: () { (t) -> void } -> void
|
28
28
|
| () -> Enumerator[t, void]
|
29
29
|
|
30
30
|
include Helper::ChildrenLevel
|
31
31
|
|
32
|
-
def level: () -> Integer
|
32
|
+
def level: () -> Array[Integer]
|
33
33
|
|
34
|
-
def with_location: (
|
34
|
+
def with_location: (untyped new_location) -> Union
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/sig/steep/ast/types/var.rbs
CHANGED
@@ -1,36 +1,41 @@
|
|
1
1
|
module Steep
|
2
2
|
module AST
|
3
3
|
module Types
|
4
|
+
# Type variables
|
4
5
|
class Var
|
5
|
-
attr_reader name:
|
6
|
+
attr_reader name: Symbol
|
6
7
|
|
7
8
|
attr_reader location: untyped
|
8
9
|
|
9
|
-
def initialize: (name:
|
10
|
+
def initialize: (name: Symbol, ?location: untyped?) -> void
|
10
11
|
|
11
|
-
def ==: (untyped other) ->
|
12
|
+
def ==: (untyped other) -> bool
|
12
13
|
|
13
|
-
def hash: () ->
|
14
|
+
def hash: () -> Integer
|
14
15
|
|
15
16
|
alias eql? ==
|
16
17
|
|
17
|
-
|
18
|
+
self.@mutex: Thread::Mutex
|
19
|
+
self.@max: Integer
|
20
|
+
|
21
|
+
def self.fresh_name: (Symbol name) -> Symbol
|
18
22
|
|
19
23
|
def self.fresh: (Symbol name, ?location: untyped?) -> Var
|
20
24
|
|
21
|
-
def to_s: () ->
|
25
|
+
def to_s: () -> String
|
22
26
|
|
23
|
-
def subst: (
|
27
|
+
def subst: (Interface::Substitution s) -> t
|
24
28
|
|
25
|
-
|
29
|
+
@fvs: Set[variable]
|
30
|
+
def free_variables: () -> Set[variable]
|
26
31
|
|
27
32
|
include Helper::NoChild
|
28
33
|
|
29
|
-
def level: () ->
|
34
|
+
def level: () -> Array[Integer]
|
30
35
|
|
31
|
-
def update: (?name:
|
36
|
+
def update: (?name: Symbol, ?location: untyped) -> Var
|
32
37
|
|
33
|
-
def with_location: (untyped new_location) ->
|
38
|
+
def with_location: (untyped new_location) -> Var
|
34
39
|
end
|
35
40
|
end
|
36
41
|
end
|
@@ -6,23 +6,23 @@ module Steep
|
|
6
6
|
|
7
7
|
def initialize: (?location: untyped?) -> void
|
8
8
|
|
9
|
-
def ==: (untyped other) ->
|
9
|
+
def ==: (untyped other) -> bool
|
10
10
|
|
11
|
-
def hash: () ->
|
11
|
+
def hash: () -> Integer
|
12
12
|
|
13
13
|
alias eql? ==
|
14
14
|
|
15
|
-
def subst: (
|
15
|
+
def subst: (Interface::Substitution s) -> Void
|
16
16
|
|
17
|
-
def to_s: () ->
|
17
|
+
def to_s: () -> String
|
18
18
|
|
19
19
|
include Helper::NoFreeVariables
|
20
20
|
|
21
21
|
include Helper::NoChild
|
22
22
|
|
23
|
-
def level: () ->
|
23
|
+
def level: () -> Array[Integer]
|
24
24
|
|
25
|
-
def with_location: (untyped new_location) ->
|
25
|
+
def with_location: (untyped new_location) -> Void
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
data/sig/steep/ast/types.rbs
CHANGED
@@ -5,33 +5,12 @@ module Steep
|
|
5
5
|
| Class | Instance | Self
|
6
6
|
| Intersection | Record | Tuple | Union
|
7
7
|
| Name::Alias | Name::Instance | Name::Interface | Name::Singleton
|
8
|
-
| Proc | Var
|
8
|
+
| Proc | Var
|
9
|
+
| Logic::Not | Logic::ReceiverIsNil | Logic::ReceiverIsNotNil | Logic::ReceiverIsArg | Logic::ArgIsReceiver | Logic::ArgEqualsReceiver | Logic::Env
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
attr_reader type: untyped
|
14
|
-
|
15
|
-
attr_reader mask: untyped
|
16
|
-
|
17
|
-
def initialize: (type: untyped, mask: untyped, location: untyped) -> void
|
18
|
-
|
19
|
-
def ==: (untyped other) -> untyped
|
20
|
-
|
21
|
-
alias eql? ==
|
22
|
-
|
23
|
-
def hash: () -> untyped
|
24
|
-
|
25
|
-
def to_json: (*untyped a) -> untyped
|
26
|
-
|
27
|
-
def to_s: (?::Integer level) -> ::String
|
28
|
-
|
29
|
-
def free_variables: () -> untyped
|
30
|
-
|
31
|
-
def each_type: () { (untyped) -> untyped } -> untyped
|
32
|
-
|
33
|
-
def sub: (untyped s) -> untyped
|
34
|
-
end
|
11
|
+
# Variables and special types that is subject for substitution
|
12
|
+
#
|
13
|
+
type variable = Symbol | Class | Instance | Self
|
35
14
|
end
|
36
15
|
end
|
37
16
|
end
|
@@ -2,28 +2,28 @@ module Steep
|
|
2
2
|
module Interface
|
3
3
|
class Substitution
|
4
4
|
class InvalidSubstitutionError < StandardError
|
5
|
-
attr_reader vars_size:
|
5
|
+
attr_reader vars_size: Integer
|
6
6
|
|
7
|
-
attr_reader types_size:
|
7
|
+
attr_reader types_size: Integer
|
8
8
|
|
9
|
-
def initialize: (vars_size:
|
9
|
+
def initialize: (vars_size: Integer, types_size: Integer) -> void
|
10
10
|
end
|
11
11
|
|
12
12
|
attr_reader dictionary: Hash[Symbol, AST::Types::t]
|
13
13
|
|
14
|
-
attr_reader instance_type: AST::Types::t
|
14
|
+
attr_reader instance_type: AST::Types::t?
|
15
15
|
|
16
|
-
attr_reader module_type: AST::Types::t
|
16
|
+
attr_reader module_type: AST::Types::t?
|
17
17
|
|
18
|
-
attr_reader self_type: AST::Types::t
|
18
|
+
attr_reader self_type: AST::Types::t?
|
19
19
|
|
20
|
-
def initialize: (dictionary: Hash[Symbol, AST::Types::t], instance_type: AST::Types::t
|
20
|
+
def initialize: (dictionary: Hash[Symbol, AST::Types::t], instance_type: AST::Types::t?, module_type: AST::Types::t?, self_type: AST::Types::t?) -> void
|
21
21
|
|
22
22
|
def self.empty: () -> instance
|
23
23
|
|
24
24
|
def empty?: () -> bool
|
25
25
|
|
26
|
-
def domain: () -> Set[AST::Types::
|
26
|
+
def domain: () -> Set[AST::Types::variable]
|
27
27
|
|
28
28
|
def to_s: () -> ::String
|
29
29
|
|
@@ -31,7 +31,7 @@ module Steep
|
|
31
31
|
|
32
32
|
def key?: (Symbol var) -> bool
|
33
33
|
|
34
|
-
def self.build: (Array[Symbol] vars, ?Array[AST::Types::t]? types, ?instance_type: AST::Types::t
|
34
|
+
def self.build: (Array[Symbol] vars, ?Array[AST::Types::t]? types, ?instance_type: AST::Types::t?, ?module_type: AST::Types::t?, ?self_type: AST::Types::t?) -> Substitution
|
35
35
|
|
36
36
|
def except: (Array[Symbol] vars) -> Substitution
|
37
37
|
|
@@ -48,7 +48,7 @@ module Steep
|
|
48
48
|
worker_type `type`,
|
49
49
|
name: String,
|
50
50
|
steepfile: Pathname,
|
51
|
-
|
51
|
+
steep_command: String?,
|
52
52
|
?patterns: Array[String],
|
53
53
|
?delay_shutdown: bool,
|
54
54
|
?index: [Integer, Integer]?
|
@@ -76,7 +76,7 @@ module Steep
|
|
76
76
|
def self.start_typecheck_workers: (
|
77
77
|
steepfile: Pathname,
|
78
78
|
args: Array[String],
|
79
|
-
|
79
|
+
steep_command: ::String?,
|
80
80
|
?count: Integer,
|
81
81
|
?delay_shutdown: bool
|
82
82
|
) -> Array[WorkerProcess]
|
@@ -16,9 +16,13 @@ module Steep
|
|
16
16
|
|
17
17
|
@rbs_index: Index::RBSIndex?
|
18
18
|
|
19
|
+
@constant_resolver: RBS::Resolver::ConstantResolver?
|
20
|
+
|
19
21
|
def initialize: (files: Hash[Pathname, FileStatus], changed_paths: Set[Pathname], diagnostics: Array[Diagnostic::Signature::Base], last_builder: RBS::DefinitionBuilder) -> void
|
20
22
|
|
21
23
|
def rbs_index: () -> Index::RBSIndex
|
24
|
+
|
25
|
+
def constant_resolver: () -> RBS::Resolver::ConstantResolver
|
22
26
|
end
|
23
27
|
|
24
28
|
class AncestorErrorStatus
|
@@ -32,9 +36,13 @@ module Steep
|
|
32
36
|
|
33
37
|
@rbs_index: Index::RBSIndex?
|
34
38
|
|
39
|
+
@constant_resolver: RBS::Resolver::ConstantResolver?
|
40
|
+
|
35
41
|
def initialize: (files: Hash[Pathname, FileStatus], changed_paths: Set[Pathname], diagnostics: Array[Diagnostic::Signature::Base], last_builder: RBS::DefinitionBuilder) -> void
|
36
42
|
|
37
43
|
def rbs_index: () -> Index::RBSIndex
|
44
|
+
|
45
|
+
def constant_resolver: () -> RBS::Resolver::ConstantResolver
|
38
46
|
end
|
39
47
|
|
40
48
|
class LoadedStatus
|
@@ -46,11 +54,15 @@ module Steep
|
|
46
54
|
|
47
55
|
@subtyping: Subtyping::Check?
|
48
56
|
|
57
|
+
@constant_resolver: RBS::Resolver::ConstantResolver?
|
58
|
+
|
49
59
|
def initialize: (files: Hash[Pathname, FileStatus], builder: RBS::DefinitionBuilder) -> void
|
50
60
|
|
51
61
|
def subtyping: () -> Subtyping::Check
|
52
62
|
|
53
63
|
def rbs_index: () -> Index::RBSIndex
|
64
|
+
|
65
|
+
def constant_resolver: () -> RBS::Resolver::ConstantResolver
|
54
66
|
end
|
55
67
|
|
56
68
|
class FileStatus
|
@@ -88,6 +100,8 @@ module Steep
|
|
88
100
|
|
89
101
|
def latest_rbs_index: () -> Index::RBSIndex
|
90
102
|
|
103
|
+
def latest_constant_resolver: () -> RBS::Resolver::ConstantResolver
|
104
|
+
|
91
105
|
def current_subtyping: () -> Subtyping::Check?
|
92
106
|
|
93
107
|
def apply_changes: (Hash[Pathname, FileStatus] files, Server::ChangeBuffer::changes changes) -> Hash[Pathname, FileStatus]
|
@@ -91,9 +91,9 @@ module Steep
|
|
91
91
|
|
92
92
|
def update_sources: (changes: Server::ChangeBuffer::changes, requests: Hash[Project::Target, TargetRequest]) -> void
|
93
93
|
|
94
|
-
def type_check_file: (target: Project::Target, subtyping: Subtyping::Check, path: Pathname, text: String) -> SourceFile
|
94
|
+
def type_check_file: (target: Project::Target, subtyping: Subtyping::Check, path: Pathname, text: String) { () -> RBS::Resolver::ConstantResolver } -> SourceFile
|
95
95
|
|
96
|
-
def self.type_check: (source: Source, subtyping: Subtyping::Check) -> Typing
|
96
|
+
def self.type_check: (source: Source, subtyping: Subtyping::Check, constant_resolver: RBS::Resolver::ConstantResolver) -> Typing
|
97
97
|
|
98
98
|
def source_file?: (Pathname path) -> Project::Target?
|
99
99
|
|
data/sig/steep.rbs
CHANGED
data/steep.gemspec
CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_runtime_dependency "rainbow", ">= 2.2.2", "< 4.0"
|
34
34
|
spec.add_runtime_dependency "listen", "~> 3.0"
|
35
35
|
spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
|
36
|
-
spec.add_runtime_dependency "rbs", ">= 2.8.0
|
36
|
+
spec.add_runtime_dependency "rbs", ">= 2.8.0"
|
37
37
|
spec.add_runtime_dependency "parallel", ">= 1.0.0"
|
38
38
|
spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
|
39
39
|
spec.add_runtime_dependency "securerandom", ">= 0.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.0
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ">="
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: 2.8.0
|
101
|
+
version: 2.8.0
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: 2.8.0
|
108
|
+
version: 2.8.0
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: parallel
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,7 +261,6 @@ files:
|
|
261
261
|
- lib/steep/ast/node/type_application.rb
|
262
262
|
- lib/steep/ast/node/type_assertion.rb
|
263
263
|
- lib/steep/ast/type_params.rb
|
264
|
-
- lib/steep/ast/types.rb
|
265
264
|
- lib/steep/ast/types/any.rb
|
266
265
|
- lib/steep/ast/types/boolean.rb
|
267
266
|
- lib/steep/ast/types/bot.rb
|
@@ -764,9 +763,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
764
763
|
version: 2.6.0
|
765
764
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
766
765
|
requirements:
|
767
|
-
- - "
|
766
|
+
- - ">="
|
768
767
|
- !ruby/object:Gem::Version
|
769
|
-
version:
|
768
|
+
version: '0'
|
770
769
|
requirements: []
|
771
770
|
rubygems_version: 3.3.7
|
772
771
|
signing_key:
|
data/lib/steep/ast/types.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
module Steep
|
2
|
-
module AST
|
3
|
-
module Types
|
4
|
-
class Masked
|
5
|
-
attr_reader :location
|
6
|
-
attr_reader :type
|
7
|
-
attr_reader :mask
|
8
|
-
|
9
|
-
def initialize(type:, mask:, location:)
|
10
|
-
@type = type
|
11
|
-
@mask = mask
|
12
|
-
@location = location
|
13
|
-
end
|
14
|
-
|
15
|
-
def ==(other)
|
16
|
-
other.is_a?(Masked) &&
|
17
|
-
other.type == type &&
|
18
|
-
other.mask == mask
|
19
|
-
end
|
20
|
-
|
21
|
-
alias eql? ==
|
22
|
-
|
23
|
-
def hash
|
24
|
-
self.class.hash ^ type.hash ^ mask.hash
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_json(*a)
|
28
|
-
{ class: :masked,
|
29
|
-
type: type,
|
30
|
-
mask: mask,
|
31
|
-
location: location }.to_json(*a)
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_s(level = 0)
|
35
|
-
"masked(#{type}|#{mask})"
|
36
|
-
end
|
37
|
-
|
38
|
-
def free_variables
|
39
|
-
@fvs ||= Set.new.tap do |set|
|
40
|
-
set.merge(type.free_variables)
|
41
|
-
set.merge(mask.free_variables)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def each_type(&block)
|
46
|
-
if block_given?
|
47
|
-
yield type
|
48
|
-
yield mask
|
49
|
-
else
|
50
|
-
enum_for :each_type
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def sub(s)
|
55
|
-
self.class.new(type: type.sub(s),
|
56
|
-
mask: mask.sub(s),
|
57
|
-
location: location)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|