sig/shims/parser/nodes.rbs in steep-1.4.0 vs sig/shims/parser/nodes.rbs in steep-1.5.0.pre.1
- old
+ new
@@ -17,10 +17,12 @@
%a{pure} def loc: () -> (Source::Map & _DefLocation)
end
interface _DefLocation
+ def name: () -> Source::Range
+
%a{pure} def end: () -> Source::Range?
end
interface _CaseNode
def type: () -> :case
@@ -30,8 +32,216 @@
interface _CaseLocation
%a{pure} def else: () -> Source::Range?
%a{pure} def end: () -> Source::Range
+ end
+
+ interface _NamedLocation
+ %a{pure} def name: () -> Source::Range
+ end
+
+ interface _SelectorLocation
+ %a{pure} def selector: () -> Source::Range
+ end
+
+ # ```ruby
+ # if foo then bar else baz end
+ # #^ => keyword
+ # # ^^^^ => begin
+ # # ^^^^ => else
+ # # ^^^ => end
+ # ```
+ #
+ interface _Condition
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def begin: () -> Source::Range?
+
+ %a{pure} def else: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range?
+ end
+
+ interface _Ternary
+ %a{pure} def question: () -> Source::Range
+
+ %a{pure} def colon: () -> Source::Range
+ end
+
+ interface _Variable
+ %a{pure} def name: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+ end
+
+ # ```ruby
+ # foo.bar(baz)
+ # # ^ => dot
+ # # ^^^ => selector
+ # # ^ => begin
+ # # ^ => end
+ #
+ # foo.bar += 1
+ # # ^ => dot
+ # # ^^^ => selector
+ # # ^^ => operator
+ # ```
+ #
+ interface _Send
+ %a{pure} def dot: () -> Source::Range?
+
+ %a{pure} def selector: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+
+ %a{pure} def begin: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range?
+ end
+
+ # ```ruby
+ # rescue Foo => x then
+ # #^^^^^ => keyword
+ # # ^^ => assoc
+ # # ^^^^ => begin
+ # ```
+ interface _RescueBody
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def assoc: () -> Source::Range?
+
+ %a{pure} def begin: () -> Source::Range?
+ end
+
+ # ```ruby
+ # +1
+ # ^ => operator
+ # ```
+ interface _Operator
+ %a{pure} def operator: () -> Source::Range?
+ end
+
+ # ```ruby
+ # def self.foo(); end
+ # #^^ => keyword
+ # # ^ => operator
+ # # ^^^ => name
+ # # ^^^ => end
+ #
+ # def foo = bar
+ # #^^ => keyword
+ # # ^^^ => name
+ # # ^ => assignment
+ # ```
+ interface _MethodDefinition
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+
+ %a{pure} def name: () -> Source::Range
+
+ %a{pure} def end: () -> Source::Range?
+
+ %a{pure} def assignment: () -> Source::Range?
+ end
+
+ # ```ruby
+ # when foo then
+ # #^^^ => keyword
+ # # ^^^^ => begin
+ # ```
+ interface _Keyword
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def begin: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range?
+ end
+
+ # ```ruby
+ # foo[1] += 1
+ # # ^ => begin
+ # # ^ => end
+ # # ^^ => operator
+ # ```
+ interface _Index
+ %a{pure} def begin: () -> Source::Range
+
+ %a{pure} def end: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+ end
+
+ # ```ruby
+ # <<FOO <= expression
+ # foo <= heredoc_body
+ # FOO <= heredoc_end
+ # ```
+ #
+ interface _Heredoc
+ %a{pure} def heredoc_body: () -> Source::Range
+
+ %a{pure} def heredoc_end: () -> Source::Range
+ end
+
+ # ```ruby
+ # for x in [] then ... end
+ # #^^ => keyword
+ # # ^^ => in
+ # # ^^^^ => begin
+ # # ^^^ => end
+ # ```
+ interface _For
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def in: () -> Source::Range
+
+ %a{pure} def begin: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range
+ end
+
+ # ```ruby
+ # class Foo::Bar < Baz; end
+ # #^^^^ => keyword
+ # # ^^^^^^^^ => name
+ # # ^ => operator
+ # # ^^^ => end
+ # ```
+ interface _Definition
+ %a{pure} def keyword: () -> Source::Range
+
+ %a{pure} def name: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range
+ end
+
+ # ```ruby
+ # Foo::Bar += 1
+ # # ^^ => double_colon
+ # # ^^^ => name
+ # # ^^ => operator
+ # ```
+ #
+ interface _Constant
+ %a{pure} def double_colon: () -> Source::Range?
+
+ %a{pure} def name: () -> Source::Range
+
+ %a{pure} def operator: () -> Source::Range?
+ end
+
+ # ```ruby
+ # (1)
+ # # ^ => begin
+ # # ^ => end
+ # ```
+ interface _Collection
+ %a{pure} def begin: () -> Source::Range?
+
+ %a{pure} def end: () -> Source::Range?
end
end
end