steep 0.46.0 → 0.48.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/.github/workflows/ruby.yml +0 -1
- data/CHANGELOG.md +23 -0
- data/Gemfile +1 -2
- data/Gemfile.lock +18 -22
- data/README.md +2 -1
- data/lib/steep/annotation_parser.rb +1 -1
- data/lib/steep/ast/types/factory.rb +161 -137
- data/lib/steep/ast/types/var.rb +14 -3
- data/lib/steep/diagnostic/ruby.rb +23 -11
- data/lib/steep/diagnostic/signature.rb +60 -15
- data/lib/steep/interface/method_type.rb +14 -26
- data/lib/steep/interface/type_param.rb +103 -0
- data/lib/steep/project/dsl.rb +32 -5
- data/lib/steep/project/options.rb +1 -0
- data/lib/steep/project/target.rb +1 -0
- data/lib/steep/server/base_worker.rb +1 -0
- data/lib/steep/server/interaction_worker.rb +9 -9
- data/lib/steep/server/type_check_worker.rb +2 -2
- data/lib/steep/services/hover_content.rb +3 -0
- data/lib/steep/services/signature_service.rb +2 -2
- data/lib/steep/services/type_check_service.rb +2 -1
- data/lib/steep/signature/validator.rb +221 -49
- data/lib/steep/source.rb +5 -1
- data/lib/steep/subtyping/cache.rb +30 -0
- data/lib/steep/subtyping/check.rb +582 -708
- data/lib/steep/subtyping/constraints.rb +66 -30
- data/lib/steep/subtyping/relation.rb +60 -0
- data/lib/steep/subtyping/result.rb +190 -16
- data/lib/steep/type_construction.rb +493 -372
- data/lib/steep/type_inference/block_params.rb +1 -1
- data/lib/steep/type_inference/context.rb +37 -3
- data/lib/steep/type_inference/send_args.rb +1 -12
- data/lib/steep/version.rb +1 -1
- data/lib/steep.rb +5 -5
- data/sample/lib/length.rb +35 -0
- data/sample/sig/length.rbs +34 -0
- data/smoke/diagnostics/test_expectations.yml +4 -4
- data/smoke/diagnostics-rbs/nonregular-type-alias.rbs +3 -0
- data/smoke/diagnostics-rbs/recursive-type-alias.rbs +3 -0
- data/smoke/diagnostics-rbs/test_expectations.yml +57 -12
- data/smoke/extension/e.rbs +1 -1
- data/steep.gemspec +1 -1
- metadata +11 -10
- data/lib/steep/drivers/trace_printer.rb +0 -29
- data/lib/steep/interface/method.rb +0 -78
- data/lib/steep/subtyping/trace.rb +0 -71
- data/sig/project.rbi +0 -109
- data/sig/steep/type_inference/send_args.rbs +0 -42
data/sig/project.rbi
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
class Pathname
|
2
|
-
end
|
3
|
-
|
4
|
-
class Time
|
5
|
-
def self.now: -> instance
|
6
|
-
def < : (Time) -> bool
|
7
|
-
def >=: (Time) -> bool
|
8
|
-
end
|
9
|
-
|
10
|
-
type annotation = any
|
11
|
-
|
12
|
-
class Steep::Source
|
13
|
-
def self.parse: (String, path: String, labeling: any) -> instance
|
14
|
-
def annotations: (block: any, builder: any, current_module: any) -> Array<annotation>
|
15
|
-
def node: -> any
|
16
|
-
def find_node: (line: Integer, column: Integer) -> any
|
17
|
-
end
|
18
|
-
|
19
|
-
class Steep::Typing
|
20
|
-
attr_reader errors: Array<type_error>
|
21
|
-
attr_reader nodes: any
|
22
|
-
end
|
23
|
-
|
24
|
-
type type_error = any
|
25
|
-
|
26
|
-
class Steep::Project::Options
|
27
|
-
attr_accessor fallback_any_is_error: bool
|
28
|
-
attr_accessor allow_missing_definitions: bool
|
29
|
-
end
|
30
|
-
|
31
|
-
class Parser::SyntaxError
|
32
|
-
end
|
33
|
-
|
34
|
-
class Steep::Project::SourceFile
|
35
|
-
attr_reader options: Options
|
36
|
-
attr_reader path: Pathname
|
37
|
-
attr_accessor content: String
|
38
|
-
attr_reader content_updated_at: Time
|
39
|
-
|
40
|
-
attr_reader source: (Source | Parser::SyntaxError | nil)
|
41
|
-
attr_reader typing: Typing?
|
42
|
-
attr_reader last_type_checked_at: Time?
|
43
|
-
|
44
|
-
def initialize: (path: Pathname, options: Options) -> any
|
45
|
-
def requires_type_check?: -> bool
|
46
|
-
def invalidate: -> void
|
47
|
-
def parse: -> (Source | Parser::SyntaxError)
|
48
|
-
def errors: -> Array<type_error>?
|
49
|
-
def type_check: (any) -> void
|
50
|
-
end
|
51
|
-
|
52
|
-
class Steep::Project::SignatureFile
|
53
|
-
attr_reader path: Pathname
|
54
|
-
attr_accessor content: String
|
55
|
-
attr_reader content_updated_at: Time
|
56
|
-
|
57
|
-
def parse: -> Array<any>
|
58
|
-
end
|
59
|
-
|
60
|
-
interface Steep::Project::_Listener
|
61
|
-
def parse_signature: <'x> (project: Project, file: SignatureFile) { -> 'x } -> 'x
|
62
|
-
def parse_source: <'x> (project: Project, file: SourceFile) { -> 'x } -> 'x
|
63
|
-
def check: <'x> (project: Project) { -> 'x } -> 'x
|
64
|
-
def load_signature: <'x> (project: Project) { -> 'x } -> 'x
|
65
|
-
def validate_signature: <'x> (project: Project) { -> 'x } -> 'x
|
66
|
-
def type_check_source: <'x> (project: Project, file: SourceFile) { -> 'x } -> 'x
|
67
|
-
def clear_project: <'x> (project: Project) { -> 'x } -> 'x
|
68
|
-
end
|
69
|
-
|
70
|
-
class Steep::Project::SignatureLoaded
|
71
|
-
attr_reader check: any
|
72
|
-
attr_reader loaded_at: Time
|
73
|
-
attr_reader file_paths: Array<Pathname>
|
74
|
-
|
75
|
-
def initialize: (check: any, loaded_at: Time, file_paths: Array<Pathname>) -> any
|
76
|
-
end
|
77
|
-
|
78
|
-
class Steep::Project::SignatureHasSyntaxError
|
79
|
-
attr_reader errors: Hash<Pathname, any>
|
80
|
-
def initialize: (errors: Hash<Pathname, any>) -> any
|
81
|
-
end
|
82
|
-
|
83
|
-
class Steep::Project::SignatureHasError
|
84
|
-
attr_reader errors: Array<any>
|
85
|
-
def initialize: (errors: Array<any>) -> any
|
86
|
-
end
|
87
|
-
|
88
|
-
class Steep::Project
|
89
|
-
attr_reader listener: _Listener
|
90
|
-
attr_reader source_files: Hash<Pathname, SourceFile>
|
91
|
-
attr_reader signature_files: Hash<Pathname, SignatureFile>
|
92
|
-
|
93
|
-
attr_reader signature: (SignatureLoaded | SignatureHasError | SignatureHasSyntaxError | nil)
|
94
|
-
|
95
|
-
def initialize: (?_Listener?) -> any
|
96
|
-
def clear: -> void
|
97
|
-
def type_check: (?force_signatures: bool, ?force_sources: bool) -> void
|
98
|
-
|
99
|
-
def success?: -> bool
|
100
|
-
def has_type_error?: -> bool
|
101
|
-
def errors: -> Array<type_error>
|
102
|
-
def each_updated_source: (?force: bool) { (SourceFile) -> void } -> void
|
103
|
-
| (?force: bool) -> Enumerator<SourceFile, void>
|
104
|
-
def signature_updated?: -> bool
|
105
|
-
def reload_signature: -> void
|
106
|
-
def validate_signature: (any) -> Array<any>
|
107
|
-
|
108
|
-
def type_of: (path: Pathname, line: Integer, column: Integer) -> any
|
109
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Steep
|
2
|
-
type node = untyped
|
3
|
-
|
4
|
-
module TypeInference
|
5
|
-
class SendArgs
|
6
|
-
class PositionalArgs
|
7
|
-
end
|
8
|
-
|
9
|
-
class KeywordArgs
|
10
|
-
type value = ArgTypePairs | UnexpectedKeyword | MissingKeyword
|
11
|
-
|
12
|
-
class ArgTypePairs
|
13
|
-
end
|
14
|
-
|
15
|
-
class UnexpectedKeyword
|
16
|
-
end
|
17
|
-
|
18
|
-
class MissingKeyword
|
19
|
-
end
|
20
|
-
|
21
|
-
def consume: () -> [value, self]?
|
22
|
-
|
23
|
-
def consume_keys: (Array[Symbol], node: node) -> [AST::Types::t | UnexpectedKeyword, self]
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
type error = Diagnostics::Ruby::IncompatibleArguments
|
28
|
-
| Diagnostics::Ruby::UnexpectedBlockGiven
|
29
|
-
| Diagnostics::Ruby::RequiredBlockMissing
|
30
|
-
|
31
|
-
type arg = PositionalArgs::NodeParamPair
|
32
|
-
| PositionalArgs::NodeTypePair
|
33
|
-
| PositionalArgs::SplatArg
|
34
|
-
| PositionalArgs::UnexpectedArg
|
35
|
-
| KeywordArgs::ArgTypePairs
|
36
|
-
| KeywordArgs::SplatArg
|
37
|
-
| KeywordArgs::UnexpectedKeyword
|
38
|
-
|
39
|
-
def each_arg: (TypeConstruction) { (arg, TypeConstruction) -> TypeConstruction } -> Array[error]
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|