diff --git a/proto/SCIP.proto b/proto/SCIP.proto index 735e60e85..2f867837c 100644 --- a/proto/SCIP.proto +++ b/proto/SCIP.proto @@ -400,6 +400,14 @@ message Occurrence { SyntaxKind syntax_kind = 5; // (optional) Diagnostics that have been reported for this specific range. repeated Diagnostic diagnostics = 6; + // (optional) Using the same encoding as the sibling `range` field, half-open + // source range of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + repeated int32 enclosing_range = 7; } // Represents a diagnostic, such as a compiler error or warning, which should be diff --git a/scip_indexer/SCIPIndexer.cc b/scip_indexer/SCIPIndexer.cc index 3f3e4bbf2..52e49656f 100644 --- a/scip_indexer/SCIPIndexer.cc +++ b/scip_indexer/SCIPIndexer.cc @@ -288,7 +288,8 @@ class SCIPState { absl::Status saveDefinitionImpl(const core::GlobalState &gs, core::FileRef file, const string &symbolString, core::Loc occLoc, const SmallVec &docs, - const SmallVec &rels) { + const SmallVec &rels, + optional enclosingLoc = nullopt) { ENFORCE(!symbolString.empty()); occLoc = trimColonColonPrefix(gs, occLoc); auto range = sorbet::scip_indexer::fromSorbetLoc(gs, occLoc); @@ -305,6 +306,12 @@ class SCIPState { for (auto val : range) { occurrence.add_range(val); } + if (enclosingLoc.has_value() && !enclosingLoc->empty()) { + auto encRange = sorbet::scip_indexer::fromSorbetLoc(gs, enclosingLoc.value()); + for (auto val : encRange) { + occurrence.add_enclosing_range(val); + } + } switch (emitted) { case Emitted::Now: break; @@ -396,7 +403,8 @@ class SCIPState { } public: - absl::Status saveDefinition(const core::GlobalState &gs, core::FileRef file, OwnedLocal occ, core::TypePtr type) { + absl::Status saveDefinition(const core::GlobalState &gs, core::FileRef file, OwnedLocal occ, core::TypePtr type, + optional enclosingLoc = nullopt) { if (this->cacheOccurrence(gs, file, occ, scip::SymbolRole::Definition)) { return absl::OkStatus(); } @@ -407,7 +415,7 @@ class SCIPState { ENFORCE(var.has_value(), "Failed to find source text for definition of local variable"); docStrings.push_back(fmt::format("```ruby\n{} ({})\n```", var.value(), type.show(gs))); } - return this->saveDefinitionImpl(gs, file, occ.toSCIPString(gs, file), loc, docStrings, {}); + return this->saveDefinitionImpl(gs, file, occ.toSCIPString(gs, file), loc, docStrings, {}, enclosingLoc); } void saveAliasRelationship(const core::GlobalState &gs, UntypedGenericSymbolRef aliasedSymbol, @@ -423,7 +431,8 @@ class SCIPState { // TODO(varun): Should we always pass in the location instead of sometimes only? absl::Status saveDefinition(const core::GlobalState &gs, core::FileRef file, GenericSymbolRef symRef, optional aliasedSymbol, - optional loc = nullopt) { + optional loc = nullopt, + optional enclosingLoc = nullopt) { // In practice, there doesn't seem to be any situation which triggers // a duplicate definition being emitted, so skip calling cacheOccurrence here. auto occLoc = loc.has_value() ? core::Loc(file, loc.value()) : symRef.symbolLoc(gs); @@ -452,7 +461,7 @@ class SCIPState { this->saveAliasRelationship(gs, aliasedSymbol.value(), rels); } - return this->saveDefinitionImpl(gs, file, symbolString, occLoc, docs, rels); + return this->saveDefinitionImpl(gs, file, symbolString, occLoc, docs, rels, enclosingLoc); } absl::Status saveReference(const core::GlobalState &gs, core::FileRef file, OwnedLocal occ, @@ -868,10 +877,13 @@ class CFGTraversal final { uint32_t counter = 0; SCIPState &scipState; core::Context ctx; + // The enclosing range for all occurrences emitted during this traversal + // (i.e. the method definition's full source range). + optional enclosingLoc; public: - CFGTraversal(SCIPState &scipState, core::Context ctx) - : blockLocals(), functionLocals(), aliasMap(), scipState(scipState), ctx(ctx) {} + CFGTraversal(SCIPState &scipState, core::Context ctx, optional enclosingLoc = nullopt) + : blockLocals(), functionLocals(), aliasMap(), scipState(scipState), ctx(ctx), enclosingLoc(enclosingLoc) {} private: uint32_t addLocal(const cfg::BasicBlock *bb, cfg::LocalRef localRef) { @@ -976,7 +988,7 @@ class CFGTraversal final { defRefData.aliasRHS->toString(gs, cfg), file.data(gs).path()); } } - status = this->scipState.saveDefinition(gs, file, namedSym, aliasedSymbol, loc); + status = this->scipState.saveDefinition(gs, file, namedSym, aliasedSymbol, loc, this->enclosingLoc); } else { auto overrideType = computeOverrideType(namedSym.definitionType(), type); status = this->scipState.saveReference(ctx, namedSym, overrideType, loc, referenceRole); @@ -995,7 +1007,8 @@ class CFGTraversal final { } } if (isDefinition) { - status = this->scipState.saveDefinition(gs, file, OwnedLocal{this->ctx.owner, localId, loc}, type); + status = this->scipState.saveDefinition(gs, file, OwnedLocal{this->ctx.owner, localId, loc}, type, + this->enclosingLoc); } else { status = this->scipState.saveReference(gs, file, OwnedLocal{this->ctx.owner, localId, loc}, overrideType, referenceRole); @@ -1059,7 +1072,8 @@ class CFGTraversal final { absl::Status status; string kind; if (isDefinition) { - status = this->scipState.saveDefinition(gs, file, namedSym, /*aliasedSymbol*/ nullopt, arg.loc); + status = this->scipState.saveDefinition(gs, file, namedSym, /*aliasedSymbol*/ nullopt, arg.loc, + this->enclosingLoc); kind = "definition"; } else { status = this->scipState.saveReference(ctx, namedSym, nullopt, arg.loc, 0); @@ -1255,7 +1269,8 @@ class CFGTraversal final { if (isMethodClassStaticInit && namedSym.isEnumConstant(gs)) { // Enum constants don't have references in the of the owner // class, but they do have alias instructions, so record those as definitions. - status = this->scipState.saveDefinition(ctx, file, namedSym, /*aliasSymbol*/ nullopt, loc); + status = this->scipState.saveDefinition(ctx, file, namedSym, /*aliasSymbol*/ nullopt, loc, + this->enclosingLoc); } else { status = this->scipState.saveReference(ctx, namedSym, nullopt, loc, 0); } @@ -1491,7 +1506,8 @@ class SCIPSemanticExtension : public SemanticExtension { auto scipState = this->getSCIPState(); auto sym = scip_indexer::GenericSymbolRef::classOrModule(klass.symbol); - auto status = scipState->saveDefinition(gs, file, sym, /*aliasedSymbol*/ nullopt, nameLoc); + auto klassLoc = core::Loc(file, klass.loc); + auto status = scipState->saveDefinition(gs, file, sym, /*aliasedSymbol*/ nullopt, nameLoc, klassLoc); ENFORCE(status.ok()); auto *expr = &klass.name; if (auto *constantLit = ast::cast_tree(*expr)) { @@ -1513,9 +1529,10 @@ class SCIPSemanticExtension : public SemanticExtension { return; } auto scipState = this->getSCIPState(); + auto methodLoc = core::Loc(file, methodDef.loc); if (methodDef.name != core::Names::staticInit()) { auto sym = scip_indexer::GenericSymbolRef::method(methodDef.symbol); - auto status = scipState->saveDefinition(gs, file, sym, /*aliasedSymbol*/ nullopt); + auto status = scipState->saveDefinition(gs, file, sym, /*aliasedSymbol*/ nullopt, /*loc*/ nullopt, methodLoc); ENFORCE(status.ok()); } @@ -1534,7 +1551,7 @@ class SCIPSemanticExtension : public SemanticExtension { // information repeatedly for each occurrence. auto &scipStateRef = *scipState.get(); - sorbet::scip_indexer::CFGTraversal traversal(scipStateRef, core::Context(gs, methodDef.symbol, file)); + sorbet::scip_indexer::CFGTraversal traversal(scipStateRef, core::Context(gs, methodDef.symbol, file), methodLoc); traversal.traverse(cfg); scipStateRef.clearFunctionLocalCaches(); } diff --git a/test/scip/testdata/alias.snapshot.rb b/test/scip/testdata/alias.snapshot.rb index c1640f11f..d9502d39e 100644 --- a/test/scip/testdata/alias.snapshot.rb +++ b/test/scip/testdata/alias.snapshot.rb @@ -2,18 +2,21 @@ class X # ^ definition [..] X# +# enclosing_range 3:1-14:4 alias_method :am_aaa, :aaa # ^^^^^^^^^^^^ reference [..] Module#alias_method(). alias :a_aaa :aaa def aaa # ^^^ definition [..] X#aaa(). +# enclosing_range 7:3-9:6 puts "AAA" # ^^^^ reference [..] Kernel#puts(). end def check_alias # ^^^^^^^^^^^ definition [..] X#check_alias(). +# enclosing_range 11:3-13:6 return [am_aaa, a_aaa] # ^^^^^^ reference [..] X#aaa(). # ^^^^^ reference [..] X#aaa(). @@ -22,15 +25,19 @@ def check_alias module Mod1 # ^^^^ definition [..] Mod1# +# enclosing_range 16:1-18:4 ABC = 10 # ^^^ definition [..] Mod1#ABC. +# enclosing_range 16:1-16:12 # ^^^^^^^^ reference [..] Mod1#ABC. end module Mod2 # ^^^^ definition [..] Mod2# +# enclosing_range 20:1-22:4 FEG = Mod1::ABC # ^^^ definition [..] Mod2#FEG. +# enclosing_range 20:1-20:12 # relation reference=[..] Mod1#ABC. # ^^^^ reference [..] Mod1# # ^^^ reference [..] Mod1#ABC. @@ -39,7 +46,9 @@ module Mod2 def myfunction(myparam) # ^^^^^^^^^^ definition [..] Object#myfunction(). +# enclosing_range 24:1-26:4 # ^^^^^^^ definition local 1$3083414419 +# enclosing_range 24:1-26:4 myparam + Mod2::FEG # ^^^^^^^ reference local 1$3083414419 # ^^^^ reference [..] Mod2# @@ -48,7 +57,9 @@ def myfunction(myparam) class X < T::Enum # ^ definition [..] X# +# enclosing_range 28:1-36:4 # ^ definition [..] X#serialize(). +# enclosing_range 28:1-36:4 # ^ reference [..] T# # ^^^^ reference [..] Module#public(). # ^^^^ reference [..] String# @@ -56,21 +67,26 @@ class X < T::Enum enums do A = new("A") # ^ definition [..] X#A. +# enclosing_range 28:1-28:18 # ^^^ reference [..] Class#new(). B = new # ^ definition [..] X#B. +# enclosing_range 28:1-28:18 # ^^^ reference [..] Class#new(). C = B # ^ definition [..] X#C. +# enclosing_range 28:1-28:18 # relation reference=[..] X#B. # ^ reference [..] X#B. end All = T.let([A, B], T::Array[X]) # ^^^ definition [..] X#All. +# enclosing_range 28:1-28:18 # ^ reference [..] X#A. # ^ reference [..] X#B. # ^^^^^^^^ definition local 4$119448696 +# enclosing_range 28:1-28:18 # ^ reference [..] X# end @@ -78,13 +94,16 @@ class X < T::Enum # but let's at least add a test. class Y < X # ^ definition [..] Y# +# enclosing_range 40:1-45:4 # ^ reference [..] X# enums do D = new # ^ definition [..] Y#D. +# enclosing_range 40:1-40:12 # ^^^ reference [..] Class#new(). E = B # ^ definition [..] Y#E. +# enclosing_range 40:1-40:12 # relation reference=[..] X#B. # ^^^^^ reference [..] Y#E. # ^ reference [..] X#B. diff --git a/test/scip/testdata/args.snapshot.rb b/test/scip/testdata/args.snapshot.rb index 45234e914..324120f1f 100644 --- a/test/scip/testdata/args.snapshot.rb +++ b/test/scip/testdata/args.snapshot.rb @@ -2,10 +2,14 @@ def args(x, y) # ^^^^ definition [..] Object#args(). +# enclosing_range 3:1-11:4 # ^ definition local 1$2634721084 +# enclosing_range 3:1-11:4 # ^ definition local 2$2634721084 +# enclosing_range 3:1-11:4 z = x + y # ^ definition local 3$2634721084 +# enclosing_range 3:1-11:4 # ^ reference local 1$2634721084 # ^ reference local 2$2634721084 if x == 2 @@ -27,9 +31,13 @@ def args(x, y) def keyword_args(w:, x: 3, y: [], **kwargs) # ^^^^^^^^^^^^ definition [..] Object#keyword_args(). +# enclosing_range 13:1-17:4 # ^^ definition local 1$3526982640 +# enclosing_range 13:1-17:4 # ^^ definition local 2$3526982640 +# enclosing_range 13:1-17:4 # ^^ definition local 3$3526982640 +# enclosing_range 13:1-17:4 y << w + x # ^ reference local 3$3526982640 # ^ reference local 1$3526982640 @@ -41,8 +49,10 @@ def keyword_args(w:, x: 3, y: [], **kwargs) def use_kwargs # ^^^^^^^^^^ definition [..] Object#use_kwargs(). +# enclosing_range 19:1-24:4 h = { a: 3 } # ^ definition local 1$571973038 +# enclosing_range 19:1-24:4 keyword_args(w: 0, **h) # ^^^^^^^^^^^^ reference [..] Object#keyword_args(). # ^ reference local 1$571973038 diff --git a/test/scip/testdata/arrays.snapshot.rb b/test/scip/testdata/arrays.snapshot.rb index f58f59683..574bda460 100644 --- a/test/scip/testdata/arrays.snapshot.rb +++ b/test/scip/testdata/arrays.snapshot.rb @@ -2,8 +2,11 @@ def arrays(a, i) # ^^^^^^ definition [..] Object#arrays(). +# enclosing_range 3:1-9:4 # ^ definition local 1$513334479 +# enclosing_range 3:1-9:4 # ^ definition local 2$513334479 +# enclosing_range 3:1-9:4 a[0] = 0 # ^ reference local 1$513334479 a[1] = a[2] @@ -16,6 +19,7 @@ def arrays(a, i) # ^ reference local 2$513334479 b = a[2..-1] # ^ definition local 3$513334479 +# enclosing_range 3:1-9:4 # ^ reference local 1$513334479 a << a[-1] # ^ reference local 1$513334479 diff --git a/test/scip/testdata/blocks_lambdas_procs.snapshot.rb b/test/scip/testdata/blocks_lambdas_procs.snapshot.rb index 0aa23ea48..bf15b7c36 100644 --- a/test/scip/testdata/blocks_lambdas_procs.snapshot.rb +++ b/test/scip/testdata/blocks_lambdas_procs.snapshot.rb @@ -2,10 +2,13 @@ def blk # ^^^ definition [..] Object#blk(). +# enclosing_range 3:1-11:4 y = 0 # ^ definition local 1$1472469056 +# enclosing_range 3:1-11:4 [].each { |x| # ^ definition local 2$1472469056 +# enclosing_range 3:1-11:4 y += x # ^ reference (write) local 1$1472469056 # ^ reference local 1$1472469056 @@ -14,6 +17,7 @@ def blk } [].each do |x| # ^ definition local 3$1472469056 +# enclosing_range 3:1-11:4 y += x # ^ reference (write) local 1$1472469056 # ^ reference local 1$1472469056 @@ -24,13 +28,17 @@ def blk def lam # ^^^ definition [..] Object#lam(). +# enclosing_range 13:1-31:4 y = 0 # ^ definition local 1$1499497673 +# enclosing_range 13:1-31:4 l1 = ->(x) { # ^^ definition local 4$1499497673 +# enclosing_range 13:1-31:4 # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). # ^ definition local 3$1499497673 +# enclosing_range 13:1-31:4 y += x # ^ reference (write) local 1$1499497673 # ^ reference local 1$1499497673 @@ -39,8 +47,10 @@ def lam } l2 = lambda { |x| # ^^ definition local 6$1499497673 +# enclosing_range 13:1-31:4 # ^^^^^^ reference [..] Kernel#lambda(). # ^ definition local 5$1499497673 +# enclosing_range 13:1-31:4 y += x # ^ reference (write) local 1$1499497673 # ^ reference local 1$1499497673 @@ -49,9 +59,11 @@ def lam } l3 = ->(x:) { # ^^ definition local 9$1499497673 +# enclosing_range 13:1-31:4 # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). # ^^ definition local 8$1499497673 +# enclosing_range 13:1-31:4 y += x # ^ reference (write) local 1$1499497673 # ^ reference local 1$1499497673 @@ -60,8 +72,10 @@ def lam } l4 = lambda { |x:| # ^^ definition local 11$1499497673 +# enclosing_range 13:1-31:4 # ^^^^^^ reference [..] Kernel#lambda(). # ^^ definition local 10$1499497673 +# enclosing_range 13:1-31:4 y += x # ^ reference (write) local 1$1499497673 # ^ reference local 1$1499497673 @@ -84,13 +98,17 @@ def lam def prc # ^^^ definition [..] Object#prc(). +# enclosing_range 33:1-51:4 y = 0 # ^ definition local 1$1283111692 +# enclosing_range 33:1-51:4 p1 = Proc.new { |x| # ^^ definition local 4$1283111692 +# enclosing_range 33:1-51:4 # ^^^^ reference [..] Proc# # ^^^ reference [..] ``#new(). # ^ definition local 3$1283111692 +# enclosing_range 33:1-51:4 y += x # ^ reference (write) local 1$1283111692 # ^ reference local 1$1283111692 @@ -99,8 +117,10 @@ def prc } p2 = proc { |x| # ^^ definition local 6$1283111692 +# enclosing_range 33:1-51:4 # ^^^^ reference [..] Kernel#proc(). # ^ definition local 5$1283111692 +# enclosing_range 33:1-51:4 y += x # ^ reference (write) local 1$1283111692 # ^ reference local 1$1283111692 @@ -109,9 +129,11 @@ def prc } p3 = Proc.new { |x:| # ^^ definition local 9$1283111692 +# enclosing_range 33:1-51:4 # ^^^^ reference [..] Proc# # ^^^ reference [..] ``#new(). # ^^ definition local 8$1283111692 +# enclosing_range 33:1-51:4 y += x # ^ reference (write) local 1$1283111692 # ^ reference local 1$1283111692 @@ -120,8 +142,10 @@ def prc } p4 = proc { |x:| # ^^ definition local 11$1283111692 +# enclosing_range 33:1-51:4 # ^^^^ reference [..] Kernel#proc(). # ^^ definition local 10$1283111692 +# enclosing_range 33:1-51:4 y += x # ^ reference (write) local 1$1283111692 # ^ reference local 1$1283111692 @@ -144,20 +168,25 @@ def prc def call_block(&blk) # ^^^^^^^^^^ definition [..] Object#call_block(). +# enclosing_range 53:1-55:4 # ^^^ definition local 1$1487178087 +# enclosing_range 53:1-55:4 blk.call # ^^^ reference local 1$1487178087 end def use_block_with_defaults # ^^^^^^^^^^^^^^^^^^^^^^^ definition [..] Object#use_block_with_defaults(). +# enclosing_range 57:1-63:4 call_block do |oops: nil| # ^^^^^^^^^^ reference [..] Object#call_block(). # ^^^^^ definition local 1$4118119342 +# enclosing_range 57:1-63:4 end call_block do |oops = "nil"| # ^^^^^^^^^^ reference [..] Object#call_block(). # ^^^^ definition local 2$4118119342 +# enclosing_range 57:1-63:4 end end diff --git a/test/scip/testdata/call.snapshot.rb b/test/scip/testdata/call.snapshot.rb index 4db8c75c8..b5b0f26f9 100644 --- a/test/scip/testdata/call.snapshot.rb +++ b/test/scip/testdata/call.snapshot.rb @@ -7,6 +7,7 @@ class Opus::Command # ^^^^ reference [..] Opus# # ^^^^^^^ definition [..] Opus#Command# +# enclosing_range 7:1-8:4 end # NOTE: This is nested inside Opus as a convention, @@ -16,14 +17,18 @@ class Opus::MyThing::Command::GetThing < Opus::Command # ^^^^^^^ reference [..] Opus#MyThing# # ^^^^^^^ reference [..] Opus#MyThing#Command# # ^^^^^^^^ definition [..] Opus#MyThing#Command#GetThing# +# enclosing_range 12:1-17:4 # ^^^^ reference [..] Opus# # ^^^^^^^ reference [..] Opus#Command# def call() # ^^^^ definition [..] Opus#MyThing#Command#GetThing#call(). +# enclosing_range 13:3-16:6 x = 1 # ^ definition local 1$3018949801 +# enclosing_range 13:3-16:6 y = x # ^ definition local 2$3018949801 +# enclosing_range 13:3-16:6 # ^^^^^ reference local 2$3018949801 # ^ reference local 1$3018949801 end @@ -35,12 +40,16 @@ class Opus::MyThing::BadCommand::GetThing # ^^^^^^^ reference [..] Opus#MyThing# # ^^^^^^^^^^ reference [..] Opus#MyThing#BadCommand# # ^^^^^^^^ definition [..] Opus#MyThing#BadCommand#GetThing# +# enclosing_range 20:1-25:4 def call() # ^^^^ definition [..] Opus#MyThing#BadCommand#GetThing#call(). +# enclosing_range 21:3-24:6 x = 1 # ^ definition local 1$3018949801 +# enclosing_range 21:3-24:6 y = x # ^ definition local 2$3018949801 +# enclosing_range 21:3-24:6 # ^^^^^ reference local 2$3018949801 # ^ reference local 1$3018949801 end @@ -50,13 +59,17 @@ class NotOpus::Command1::GetThing # ^^^^^^^ reference [..] NotOpus# # ^^^^^^^^ reference [..] NotOpus#Command1# # ^^^^^^^^ definition [..] NotOpus#Command1#GetThing# +# enclosing_range 27:1-33:4 # Class method def self.call() # ^^^^ definition [..] NotOpus#Command1#``#call(). +# enclosing_range 29:3-32:6 x = 1 # ^ definition local 1$3018949801 +# enclosing_range 29:3-32:6 y = x # ^ definition local 2$3018949801 +# enclosing_range 29:3-32:6 # ^^^^^ reference local 2$3018949801 # ^ reference local 1$3018949801 end @@ -66,13 +79,17 @@ class NotOpus::Command2::GetThing # ^^^^^^^ reference [..] NotOpus# # ^^^^^^^^ reference [..] NotOpus#Command2# # ^^^^^^^^ definition [..] NotOpus#Command2#GetThing# +# enclosing_range 35:1-41:4 # Instance method def call() # ^^^^ definition [..] NotOpus#Command2#GetThing#call(). +# enclosing_range 37:3-40:6 x = 1 # ^ definition local 1$3018949801 +# enclosing_range 37:3-40:6 y = x # ^ definition local 2$3018949801 +# enclosing_range 37:3-40:6 # ^^^^^ reference local 2$3018949801 # ^ reference local 1$3018949801 end @@ -80,6 +97,7 @@ def call() def make_call() # ^^^^^^^^^ definition [..] Object#make_call(). +# enclosing_range 43:1-52:4 # Should navigate to instance method Opus::MyThing::Command::GetThing.call() # ^^^^ reference [..] Opus# diff --git a/test/scip/testdata/cattr.snapshot.rb b/test/scip/testdata/cattr.snapshot.rb index 80f23bdf2..128abdeca 100644 --- a/test/scip/testdata/cattr.snapshot.rb +++ b/test/scip/testdata/cattr.snapshot.rb @@ -2,22 +2,31 @@ class CR # ^^ definition [..] CR# +# enclosing_range 3:1-17:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). cattr_reader :both, :foo # ^^^^^ definition [..] CR#both(). +# enclosing_range 5:16-5:21 # ^^^^^ definition [..] ``#both(). +# enclosing_range 5:16-5:21 # ^^^^ definition [..] CR#foo(). +# enclosing_range 5:23-5:27 # ^^^^ definition [..] ``#foo(). +# enclosing_range 5:23-5:27 cattr_reader :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#no_instance(). +# enclosing_range 6:16-6:28 cattr_reader :bar, :no_reader, instance_reader: false # ^^^^ definition [..] ``#bar(). +# enclosing_range 7:16-7:20 # ^^^^^^^^^^ definition [..] ``#no_reader(). +# enclosing_range 7:22-7:32 sig {void} def usages # ^^^^^^ definition [..] CR#usages(). +# enclosing_range 10:3-12:6 both # ^^^^ reference [..] CR#both(). end @@ -32,22 +41,31 @@ def usages class CW # ^^ definition [..] CW# +# enclosing_range 19:1-33:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). cattr_writer :both, :foo # ^^^^^ definition [..] CW#`both=`(). +# enclosing_range 21:16-21:21 # ^^^^^ definition [..] ``#`both=`(). +# enclosing_range 21:16-21:21 # ^^^^ definition [..] CW#`foo=`(). +# enclosing_range 21:23-21:27 # ^^^^ definition [..] ``#`foo=`(). +# enclosing_range 21:23-21:27 cattr_writer :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#`no_instance=`(). +# enclosing_range 22:16-22:28 cattr_writer :bar, :no_instance_writer, instance_writer: false # ^^^^ definition [..] ``#`bar=`(). +# enclosing_range 23:16-23:20 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_writer=`(). +# enclosing_range 23:22-23:41 sig {void} def usages # ^^^^^^ definition [..] CW#usages(). +# enclosing_range 26:3-28:6 self.both = 1 # ^^^^^^ reference [..] CW#`both=`(). end @@ -62,35 +80,56 @@ def usages class CA # ^^ definition [..] CA# +# enclosing_range 35:1-61:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). cattr_accessor :both, :foo # ^^^^^ definition [..] CA#both(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] CA#`both=`(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] ``#`both=`(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] ``#both(). +# enclosing_range 37:18-37:23 # ^^^^ definition [..] CA#`foo=`(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] CA#foo(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] ``#`foo=`(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] ``#foo(). +# enclosing_range 37:25-37:29 cattr_accessor :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#`no_instance=`(). +# enclosing_range 38:18-38:30 # ^^^^^^^^^^^^ definition [..] ``#no_instance(). +# enclosing_range 38:18-38:30 cattr_accessor :no_instance_reader, instance_reader: false # ^^^^^^^^^^^^^^^^^^^ definition [..] CA#`no_instance_reader=`(). +# enclosing_range 39:18-39:37 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_reader=`(). +# enclosing_range 39:18-39:37 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#no_instance_reader(). +# enclosing_range 39:18-39:37 cattr_accessor :bar, :no_instance_writer, instance_writer: false # ^^^^ definition [..] CA#bar(). +# enclosing_range 40:18-40:22 # ^^^^ definition [..] ``#`bar=`(). +# enclosing_range 40:18-40:22 # ^^^^ definition [..] ``#bar(). +# enclosing_range 40:18-40:22 # ^^^^^^^^^^^^^^^^^^^ definition [..] CA#no_instance_writer(). +# enclosing_range 40:24-40:43 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_writer=`(). +# enclosing_range 40:24-40:43 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#no_instance_writer(). +# enclosing_range 40:24-40:43 sig {void} def usages # ^^^^^^ definition [..] CA#usages(). +# enclosing_range 43:3-48:6 both # ^^^^ reference [..] CA#both(). self.both = 1 diff --git a/test/scip/testdata/classes.snapshot.rb b/test/scip/testdata/classes.snapshot.rb index 734f98d4f..4df4bfa50 100644 --- a/test/scip/testdata/classes.snapshot.rb +++ b/test/scip/testdata/classes.snapshot.rb @@ -2,17 +2,22 @@ _ = 0 #^ definition local 1$119448696 +#enclosing_range 3:1-65:4 class C1 # ^^ definition [..] C1# +# enclosing_range 5:1-11:4 def f() # ^ definition [..] C1#f(). +# enclosing_range 6:3-10:6 _a = C1.new # ^^ definition local 1$3809224601 +# enclosing_range 6:3-10:6 # ^^ reference [..] C1# # ^^^ reference [..] Class#new(). _b = M2::C2.new # ^^ definition local 3$3809224601 +# enclosing_range 6:3-10:6 # ^^ reference [..] M2# # ^^ reference [..] M2#C2# # ^^^ reference [..] Class#new(). @@ -22,35 +27,43 @@ def f() module M2 # ^^ definition [..] M2# +# enclosing_range 13:1-16:4 class C2 # ^^ definition [..] M2#C2# +# enclosing_range 14:3-15:6 end end class M3::C3 # ^^ reference [..] M3# # ^^ definition [..] M3#C3# +# enclosing_range 18:1-19:4 end def local_class() # ^^^^^^^^^^^ definition [..] Object#local_class(). +# enclosing_range 21:1-32:4 localClass = Class.new # ^^^^^^^^^^ definition local 1$552113551 +# enclosing_range 21:1-32:4 # ^^^^^ reference [..] Class# # ^^^ reference [..] ``#new(). # Technically, this is not supported by Sorbet (https://srb.help/3001), # but make sure we don't crash or do something weird. def localClass.myMethod() # ^^^^^^^^ definition [..] Object#myMethod(). +# enclosing_range 25:3-27:6 ":)" end _c = localClass.new # ^^ definition local 3$552113551 +# enclosing_range 21:1-32:4 # ^^^^^^^^^^ reference local 1$552113551 # ^^^ reference [..] Class#new(). # TODO: Missing occurrence for myMethod _m = localClass.myMethod # ^^ definition local 4$552113551 +# enclosing_range 21:1-32:4 # ^^^^^^^^^^ reference local 1$552113551 # ^^^^^^^^ reference [..] Object#myMethod(). return @@ -58,15 +71,19 @@ def localClass.myMethod() module M4 # ^^ definition [..] M4# +# enclosing_range 34:1-36:4 K = 0 # ^ definition [..] M4#K. +# enclosing_range 34:1-34:10 # ^^^^^ reference [..] M4#K. end def module_access() # ^^^^^^^^^^^^^ definition [..] Object#module_access(). +# enclosing_range 38:1-41:4 _ = M4::K # ^ definition local 1$3353511840 +# enclosing_range 38:1-41:4 # ^^ reference [..] M4# # ^ reference [..] M4#K. return @@ -74,15 +91,19 @@ def module_access() module M5 # ^^ definition [..] M5# +# enclosing_range 43:1-53:4 module M6 # ^^ definition [..] M5#M6# +# enclosing_range 44:3-47:6 def self.g() # ^ definition [..] M5#``#g(). +# enclosing_range 45:5-46:8 end end def self.h() # ^ definition [..] ``#h(). +# enclosing_range 49:3-52:6 M6.g() # ^^ reference [..] M5#M6# # ^ reference [..] M5#``#g(). @@ -92,15 +113,19 @@ def self.h() class C7 # ^^ definition [..] C7# +# enclosing_range 55:1-65:4 module M8 # ^^ definition [..] C7#M8# +# enclosing_range 56:3-59:6 def self.i() # ^ definition [..] C7#``#i(). +# enclosing_range 57:5-58:8 end end def j() # ^ definition [..] C7#j(). +# enclosing_range 61:3-64:6 M8.i() # ^^ reference [..] C7#M8# # ^ reference [..] C7#``#i(). diff --git a/test/scip/testdata/def_delegator.snapshot.rb b/test/scip/testdata/def_delegator.snapshot.rb index 5886ee237..51c7b7291 100644 --- a/test/scip/testdata/def_delegator.snapshot.rb +++ b/test/scip/testdata/def_delegator.snapshot.rb @@ -5,9 +5,12 @@ class MyArray1 # ^^^^^^^^ definition [..] MyArray1# +# enclosing_range 5:1-9:4 attr_accessor :inner_array # ^^^^^^^^^^^ definition [..] MyArray1#`inner_array=`(). +# enclosing_range 6:3-6:29 # ^^^^^^^^^^^ definition [..] MyArray1#inner_array(). +# enclosing_range 6:3-6:29 extend Forwardable # ^^^^^^ reference [..] Kernel#extend(). # ^^^^^^^^^^^ reference [..] Forwardable# @@ -15,15 +18,19 @@ class MyArray1 # ^^^^^^^^^^^^^ reference [..] Forwardable#def_delegator(). # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^^^^^^^^^^ definition [..] MyArray1#get_at_index(). +# enclosing_range 8:3-8:50 end class MyArray2 # ^^^^^^^^ definition [..] MyArray2# +# enclosing_range 11:1-16:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). attr_accessor :inner_array # ^^^^^^^^^^^ definition [..] MyArray2#`inner_array=`(). +# enclosing_range 13:3-13:29 # ^^^^^^^^^^^ definition [..] MyArray2#inner_array(). +# enclosing_range 13:3-13:29 extend Forwardable # ^^^^^^ reference [..] Kernel#extend(). # ^^^^^^^^^^^ reference [..] Forwardable# @@ -31,13 +38,17 @@ class MyArray2 # ^^^^^^^^^^^^^ reference [..] Forwardable#def_delegator(). # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^^^^^^^^^^ definition [..] MyArray2#get_at_index(). +# enclosing_range 15:3-15:50 end class MyArray3 # ^^^^^^^^ definition [..] MyArray3# +# enclosing_range 18:1-22:4 attr_accessor :inner_array # ^^^^^^^^^^^ definition [..] MyArray3#`inner_array=`(). +# enclosing_range 19:3-19:29 # ^^^^^^^^^^^ definition [..] MyArray3#inner_array(). +# enclosing_range 19:3-19:29 extend Forwardable # ^^^^^^ reference [..] Kernel#extend(). # ^^^^^^^^^^^ reference [..] Forwardable# @@ -45,17 +56,23 @@ class MyArray3 # ^^^^^^^^^^^^^^ reference [..] Forwardable#def_delegators(). # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^^ definition [..] MyArray3#size(). +# enclosing_range 21:3-21:49 # ^^^ definition [..] MyArray3#`<<`(). +# enclosing_range 21:3-21:49 # ^^^^ definition [..] MyArray3#map(). +# enclosing_range 21:3-21:49 end class MyArray4 # ^^^^^^^^ definition [..] MyArray4# +# enclosing_range 24:1-29:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). attr_accessor :inner_array # ^^^^^^^^^^^ definition [..] MyArray4#`inner_array=`(). +# enclosing_range 26:3-26:29 # ^^^^^^^^^^^ definition [..] MyArray4#inner_array(). +# enclosing_range 26:3-26:29 extend Forwardable # ^^^^^^ reference [..] Kernel#extend(). # ^^^^^^^^^^^ reference [..] Forwardable# @@ -63,6 +80,9 @@ class MyArray4 # ^^^^^^^^^^^^^^ reference [..] Forwardable#def_delegators(). # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^^ definition [..] MyArray4#size(). +# enclosing_range 28:3-28:49 # ^^^ definition [..] MyArray4#`<<`(). +# enclosing_range 28:3-28:49 # ^^^^ definition [..] MyArray4#map(). +# enclosing_range 28:3-28:49 end diff --git a/test/scip/testdata/delegate.snapshot.rb b/test/scip/testdata/delegate.snapshot.rb index 7195a1d66..2525e696d 100644 --- a/test/scip/testdata/delegate.snapshot.rb +++ b/test/scip/testdata/delegate.snapshot.rb @@ -2,23 +2,30 @@ class MethodNameManipulation # ^^^^^^^^^^^^^^^^^^^^^^ definition [..] MethodNameManipulation# +# enclosing_range 3:1-17:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). delegate :ball, to: :thing, private: true, allow_nil: true # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^^ definition [..] MethodNameManipulation#ball(). +# enclosing_range 5:3-5:61 delegate :foo, :bar, prefix: 'string', to: :thing # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^ definition [..] MethodNameManipulation#string_foo(). +# enclosing_range 6:3-6:52 # ^^^^ definition [..] MethodNameManipulation#string_bar(). +# enclosing_range 6:3-6:52 delegate :foo, :bar, prefix: :symbol, to: :thing # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Proc# # ^^^^ definition [..] MethodNameManipulation#symbol_foo(). +# enclosing_range 7:3-7:51 # ^^^^ definition [..] MethodNameManipulation#symbol_bar(). +# enclosing_range 7:3-7:51 sig {void} def usages # ^^^^^^ definition [..] MethodNameManipulation#usages(). +# enclosing_range 10:3-16:6 ball(thing: 0) {} # ^^^^ reference [..] MethodNameManipulation#ball(). string_foo diff --git a/test/scip/testdata/encrypted_prop.snapshot.rb b/test/scip/testdata/encrypted_prop.snapshot.rb index e74c21015..aeb5baa7e 100644 --- a/test/scip/testdata/encrypted_prop.snapshot.rb +++ b/test/scip/testdata/encrypted_prop.snapshot.rb @@ -5,6 +5,7 @@ class Chalk::ODM::Document # ^^^^^ reference [..] Chalk# # ^^^ reference [..] Chalk#ODM# # ^^^^^^^^ definition [..] Chalk#ODM#Document# +# enclosing_range 4:1-5:4 end class Opus::DB::Model::Mixins::Encryptable::EncryptedValue < Chalk::ODM::Document # ^^^^ reference [..] Opus# @@ -13,6 +14,7 @@ class Opus::DB::Model::Mixins::Encryptable::EncryptedValue < Chalk::ODM::Documen # ^^^^^^ reference [..] Opus#DB#Model#Mixins# # ^^^^^^^^^^^ reference [..] Opus#DB#Model#Mixins#Encryptable# # ^^^^^^^^^^^^^^ definition [..] Opus#DB#Model#Mixins#Encryptable#EncryptedValue# +# enclosing_range 6:1-7:4 # ^^^^^ reference [..] Chalk# # ^^^ reference [..] Chalk#ODM# # ^^^^^^^^ reference [..] Chalk#ODM#Document# @@ -20,12 +22,14 @@ class Opus::DB::Model::Mixins::Encryptable::EncryptedValue < Chalk::ODM::Documen class EncryptedProp # ^^^^^^^^^^^^^ definition [..] EncryptedProp# +# enclosing_range 9:1-14:4 include T::Props # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T# # ^^^^^ reference [..] T#Props# def self.encrypted_prop(opts={}); end # ^^^^^^^^^^^^^^ definition [..] ``#encrypted_prop(). +# enclosing_range 11:3-11:40 encrypted_prop :foo # ^^^^^^^^^^^^^^^^^^^ reference [..] String# # ^^^^^^^^^^^^^^^^^^^ reference [..] Opus#DB# @@ -35,9 +39,13 @@ def self.encrypted_prop(opts={}); end # ^^^^^^^^^^^^^^^^^^^ reference [..] Opus#DB#Model#Mixins#Encryptable#EncryptedValue# # ^^^^^^^^^^^^^^^^^^^ reference [..] Opus# # ^^^ definition [..] EncryptedProp#`encrypted_foo=`(). +# enclosing_range 12:3-12:22 # ^^^ definition [..] EncryptedProp#`foo=`(). +# enclosing_range 12:3-12:22 # ^^^ definition [..] EncryptedProp#encrypted_foo(). +# enclosing_range 12:3-12:22 # ^^^ definition [..] EncryptedProp#foo(). +# enclosing_range 12:3-12:22 encrypted_prop :bar, migrating: true, immutable: true # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Opus#DB#Model#Mixins#Encryptable# # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Opus#DB# @@ -47,12 +55,15 @@ def self.encrypted_prop(opts={}); end # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Opus#DB#Model#Mixins#Encryptable#EncryptedValue# # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] String# # ^^^ definition [..] EncryptedProp#bar(). +# enclosing_range 13:3-13:56 # ^^^ definition [..] EncryptedProp#encrypted_bar(). +# enclosing_range 13:3-13:56 end def f # ^ definition [..] Object#f(). +# enclosing_range 17:1-21:4 EncryptedProp.new.foo = "hello" # ^^^^^^^^^^^^^ reference [..] EncryptedProp# # ^^^ reference [..] Class#new(). diff --git a/test/scip/testdata/enum.snapshot.rb b/test/scip/testdata/enum.snapshot.rb index 38076423c..675830252 100644 --- a/test/scip/testdata/enum.snapshot.rb +++ b/test/scip/testdata/enum.snapshot.rb @@ -2,7 +2,9 @@ class X < T::Enum # ^ definition [..] X# +# enclosing_range 3:1-11:4 # ^ definition [..] X#serialize(). +# enclosing_range 3:1-11:4 # ^ reference [..] T# # ^^^^ reference [..] Module#public(). # ^^^^ reference [..] String# @@ -10,21 +12,26 @@ class X < T::Enum enums do A = new("A") # ^ definition [..] X#A. +# enclosing_range 3:1-3:18 # ^^^ reference [..] Class#new(). B = new # ^ definition [..] X#B. +# enclosing_range 3:1-3:18 # ^^^ reference [..] Class#new(). C = B # ^ definition [..] X#C. +# enclosing_range 3:1-3:18 # relation reference=[..] X#B. # ^ reference [..] X#B. end All = T.let([A, B], T::Array[X]) # ^^^ definition [..] X#All. +# enclosing_range 3:1-3:18 # ^ reference [..] X#A. # ^ reference [..] X#B. # ^^^^^^^^ definition local 4$119448696 +# enclosing_range 3:1-3:18 # ^ reference [..] X# end @@ -32,13 +39,16 @@ class X < T::Enum # but let's at least add a test. class Y < X # ^ definition [..] Y# +# enclosing_range 15:1-20:4 # ^ reference [..] X# enums do D = new # ^ definition [..] Y#D. +# enclosing_range 15:1-15:12 # ^^^ reference [..] Class#new(). E = B # ^ definition [..] Y#E. +# enclosing_range 15:1-15:12 # relation reference=[..] X#B. # ^^^^^ reference [..] Y#E. # ^ reference [..] X#B. @@ -47,8 +57,10 @@ class Y < X def use_abc # ^^^^^^^ definition [..] Object#use_abc(). +# enclosing_range 22:1-25:4 x = X::A # ^ definition local 1$1971237871 +# enclosing_range 22:1-25:4 # ^ reference [..] X# # ^ reference [..] X#A. return diff --git a/test/scip/testdata/field_inheritance.snapshot.rb b/test/scip/testdata/field_inheritance.snapshot.rb index 95b136c13..4f79932d3 100644 --- a/test/scip/testdata/field_inheritance.snapshot.rb +++ b/test/scip/testdata/field_inheritance.snapshot.rb @@ -5,26 +5,35 @@ class C1 # ^^ definition [..] C1# +# enclosing_range 6:1-14:4 attr_accessor :h # ^ definition [..] C1#`h=`(). +# enclosing_range 7:3-7:19 # ^ definition [..] C1#h(). +# enclosing_range 7:3-7:19 attr_accessor :i # ^ definition [..] C1#`i=`(). +# enclosing_range 8:3-8:19 # ^ definition [..] C1#i(). +# enclosing_range 8:3-8:19 def set_ivar # ^^^^^^^^ definition [..] C1#set_ivar(). +# enclosing_range 10:3-13:6 @f = 1 # ^^ definition [..] C1#`@f`. +# enclosing_range 10:3-13:6 return end end class C2 < C1 # ^^ definition [..] C2# +# enclosing_range 16:1-34:4 # ^^ reference [..] C1# def get_inherited_ivar # ^^^^^^^^^^^^^^^^^^ definition [..] C2#get_inherited_ivar(). +# enclosing_range 17:3-19:6 return @f + @h # ^^ reference [..] C2#`@f`. # relation definition=[..] C1#`@f`. @@ -34,21 +43,26 @@ def get_inherited_ivar def set_inherited_ivar # ^^^^^^^^^^^^^^^^^^ definition [..] C2#set_inherited_ivar(). +# enclosing_range 21:3-24:6 @f = 10 # ^^ definition [..] C2#`@f`. +# enclosing_range 21:3-24:6 # relation definition=[..] C1#`@f`. return end def set_new_ivar # ^^^^^^^^^^^^ definition [..] C2#set_new_ivar(). +# enclosing_range 26:3-29:6 @g = 1 # ^^ definition [..] C2#`@g`. +# enclosing_range 26:3-29:6 return end def get_new_ivar # ^^^^^^^^^^^^ definition [..] C2#get_new_ivar(). +# enclosing_range 31:3-33:6 return @g # ^^^^^^^^^ reference [..] C2#`@g`. end @@ -56,11 +70,14 @@ def get_new_ivar class C3 < C2 # ^^ definition [..] C3# +# enclosing_range 36:1-41:4 # ^^ reference [..] C2# def refs # ^^^^ definition [..] C3#refs(). +# enclosing_range 37:3-40:6 @f = @g + @i # ^^ definition [..] C3#`@f`. +# enclosing_range 37:3-40:6 # relation definition=[..] C1#`@f`. # ^^ reference [..] C3#`@g`. # relation definition=[..] C2#`@g`. @@ -72,6 +89,7 @@ def refs def c_check # ^^^^^^^ definition [..] Object#c_check(). +# enclosing_range 43:1-58:4 C1.new.instance_variable_get(:@f) # ^^ reference [..] C1# # ^^^ reference [..] Class#new(). @@ -125,13 +143,17 @@ def c_check class D1 # ^^ definition [..] D1# +# enclosing_range 62:1-76:4 @@d1_v = 0 # ^^^^^^ definition [..] ``#`@@d1_v`. +# enclosing_range 62:1-62:9 def self.set_x # ^^^^^ definition [..] ``#set_x(). +# enclosing_range 65:3-68:6 @@d1_x = @@d1_v # ^^^^^^ definition [..] ``#`@@d1_x`. +# enclosing_range 65:3-68:6 # ^^^^^^ reference [..] ``#`@@d1_v`. return end @@ -139,10 +161,13 @@ def self.set_x # BUG: Emitting a definition for 'self' here seems wrong. class << self # ^^^^ definition [..] ``# +# enclosing_range 71:3-75:6 def set_y # ^^^^^ definition [..] ``#set_y(). +# enclosing_range 72:5-74:8 @@d1_y = @@d1_v # ^^^^^^ definition [..] ``#`@@d1_y`. +# enclosing_range 72:5-74:8 # ^^^^^^^^^^^^^^^ reference [..] ``#`@@d1_y`. # ^^^^^^ reference [..] ``#`@@d1_v`. end @@ -151,11 +176,14 @@ def set_y class D2 < D1 # ^^ definition [..] D2# +# enclosing_range 78:1-84:4 # ^^ reference [..] D1# def self.get # ^^^ definition [..] ``#get(). +# enclosing_range 79:3-83:6 @@d2_x = @@d1_v + @@d1_x # ^^^^^^ definition [..] ``#`@@d2_x`. +# enclosing_range 79:3-83:6 # ^^^^^^ reference [..] ``#`@@d1_v`. # relation definition=[..] ``#`@@d1_v`. # ^^^^^^ reference [..] ``#`@@d1_x`. @@ -170,9 +198,11 @@ def self.get class D3 < D2 # ^^ definition [..] D3# +# enclosing_range 86:1-93:4 # ^^ reference [..] D2# def self.get_2 # ^^^^^ definition [..] ``#get_2(). +# enclosing_range 87:3-92:6 @@d1_v + @@d1_x # ^^^^^^ reference [..] ``#`@@d1_v`. # relation definition=[..] ``#`@@d1_v`. @@ -192,6 +222,7 @@ def self.get_2 def f # ^ definition [..] Object#f(). +# enclosing_range 95:1-108:4 D2.class_variable_get(:@@d1_v) # ^^ reference [..] D2# # ^^^^^^^^^^^^^^^^^^ reference [..] Module#class_variable_get(). @@ -230,18 +261,23 @@ def f class DD1 # ^^^ definition [..] DD1# +# enclosing_range 112:1-114:4 @@x = T.let(0, Integer) # ^^^ definition [..] ``#`@@x`. +# enclosing_range 112:1-112:10 # ^^^^^^^^^^^^^^^^^^^^^^^ reference [..] ``#`@@x`. # ^^^^^^^ definition local 1$119448696 +# enclosing_range 112:1-112:10 # ^^^^^^^ reference [..] Integer# end class DD2 < DD1 # ^^^ definition [..] DD2# +# enclosing_range 116:1-120:4 # ^^^ reference [..] DD1# def self.get_x # ^^^^^ definition [..] ``#get_x(). +# enclosing_range 117:3-119:6 @@x # ^^^ reference [..] ``#`@@x`. # relation definition=[..] ``#`@@x`. @@ -252,43 +288,55 @@ def self.get_x class E1 # ^^ definition [..] E1# +# enclosing_range 124:1-136:4 @x = 0 # ^^ definition [..] ``#`@x`. +# enclosing_range 124:1-124:9 def self.set_x # ^^^^^ definition [..] ``#set_x(). +# enclosing_range 127:3-130:6 @x = @y # ^^ definition [..] ``#`@x`. +# enclosing_range 127:3-130:6 # ^^ reference [..] ``#`@y`. return end def self.set_y # ^^^^^ definition [..] ``#set_y(). +# enclosing_range 132:3-135:6 @y = 10 # ^^ definition [..] ``#`@y`. +# enclosing_range 132:3-135:6 return end end class E2 < E1 # ^^ definition [..] E2# +# enclosing_range 138:1-149:4 # ^^ reference [..] E1# @x = 0 # ^^ definition [..] ``#`@x`. +# enclosing_range 138:1-138:14 def self.set_x_2 # ^^^^^^^ definition [..] ``#set_x_2(). +# enclosing_range 141:3-144:6 @x = @y # ^^ definition [..] ``#`@x`. +# enclosing_range 141:3-144:6 # ^^ reference [..] ``#`@y`. return end def self.set_y_2 # ^^^^^^^ definition [..] ``#set_y_2(). +# enclosing_range 146:3-148:6 @y = 10 # ^^ definition [..] ``#`@y`. +# enclosing_range 146:3-148:6 # ^^^^^^^ reference [..] ``#`@y`. end end @@ -297,20 +345,26 @@ def self.set_y_2 class F1 # ^^ definition [..] F1# +# enclosing_range 153:1-157:4 def initialize # ^^^^^^^^^^ definition [..] F1#initialize(). +# enclosing_range 154:3-156:6 @x = T.let(0, Integer) # ^^ definition [..] F1#`@x`. +# enclosing_range 154:3-156:6 # ^^^^^^^^^^^^^^^^^^^^^^ reference [..] F1#`@x`. # ^^^^^^^ definition local 1$3465713227 +# enclosing_range 154:3-156:6 # ^^^^^^^ reference [..] Integer# end end class F2 # ^^ definition [..] F2# +# enclosing_range 159:1-163:4 def get_x # ^^^^^ definition [..] F2#get_x(). +# enclosing_range 160:3-162:6 @x # ^^ reference [..] F2#`@x`. end diff --git a/test/scip/testdata/fields_and_attrs.snapshot.rb b/test/scip/testdata/fields_and_attrs.snapshot.rb index 0d30be825..1fe793d52 100644 --- a/test/scip/testdata/fields_and_attrs.snapshot.rb +++ b/test/scip/testdata/fields_and_attrs.snapshot.rb @@ -5,19 +5,25 @@ class K # ^ definition [..] K# +# enclosing_range 6:1-16:4 def m1 # ^^ definition [..] K#m1(). +# enclosing_range 7:3-11:6 @f = 0 # ^^ definition [..] K#`@f`. +# enclosing_range 7:3-11:6 @g = @f # ^^ definition [..] K#`@g`. +# enclosing_range 7:3-11:6 # ^^ reference [..] K#`@f`. return end def m2 # ^^ definition [..] K#m2(). +# enclosing_range 12:3-15:6 @f = @g # ^^ definition [..] K#`@f`. +# enclosing_range 12:3-15:6 # ^^ reference [..] K#`@g`. return end @@ -26,10 +32,13 @@ def m2 # Extended class K # ^ definition [..] K# +# enclosing_range 19:1-24:4 def m3 # ^^ definition [..] K#m3(). +# enclosing_range 20:3-23:6 @g = @f # ^^ definition [..] K#`@g`. +# enclosing_range 20:3-23:6 # ^^ reference [..] K#`@f`. return end @@ -38,20 +47,26 @@ def m3 # Class instance var class L # ^ definition [..] L# +# enclosing_range 27:1-40:4 @x = 10 # ^^ definition [..] ``#`@x`. +# enclosing_range 27:1-27:8 @y = 9 # ^^ definition [..] ``#`@y`. +# enclosing_range 27:1-27:8 def self.m1 # ^^ definition [..] ``#m1(). +# enclosing_range 30:3-33:6 @y = @x # ^^ definition [..] ``#`@y`. +# enclosing_range 30:3-33:6 # ^^ reference [..] ``#`@x`. return end def m2 # ^^ definition [..] L#m2(). +# enclosing_range 35:3-39:6 # FIXME: Missing references self.class.y = self.class.x return @@ -61,28 +76,36 @@ def m2 # Class var class N # ^ definition [..] N# +# enclosing_range 43:1-60:4 @@a = 0 # ^^^ definition [..] ``#`@@a`. +# enclosing_range 43:1-43:8 @@b = 1 # ^^^ definition [..] ``#`@@b`. +# enclosing_range 43:1-43:8 def self.m1 # ^^ definition [..] ``#m1(). +# enclosing_range 46:3-49:6 @@b = @@a # ^^^ definition [..] ``#`@@b`. +# enclosing_range 46:3-49:6 # ^^^ reference [..] ``#`@@a`. return end def m2 # ^^ definition [..] N#m2(). +# enclosing_range 51:3-54:6 @@b = @@a # ^^^ definition [..] ``#`@@b`. +# enclosing_range 51:3-54:6 # ^^^ reference [..] ``#`@@a`. return end def m3 # ^^ definition [..] N#m3(). +# enclosing_range 56:3-59:6 # FIXME: Missing references self.class.b = self.class.a end @@ -91,16 +114,22 @@ def m3 # Accessors class P # ^ definition [..] P# +# enclosing_range 63:1-78:4 attr_accessor :a # ^ definition [..] P#`a=`(). +# enclosing_range 64:3-64:19 # ^ definition [..] P#a(). +# enclosing_range 64:3-64:19 attr_reader :r # ^ definition [..] P#r(). +# enclosing_range 65:3-65:17 attr_writer :w # ^ definition [..] P#`w=`(). +# enclosing_range 66:3-66:17 def init # ^^^^ definition [..] P#init(). +# enclosing_range 68:3-71:6 self.a = self.r # ^^^ reference [..] P#`a=`(). # ^ reference [..] P#r(). @@ -111,12 +140,15 @@ def init def wrong_init # ^^^^^^^^^^ definition [..] P#wrong_init(). +# enclosing_range 73:3-77:6 # Check that 'r' is a method access but 'a' and 'w' are locals a = r # ^ definition local 1$1021288725 +# enclosing_range 73:3-77:6 # ^ reference [..] P#r(). w = a # ^ definition local 2$1021288725 +# enclosing_range 73:3-77:6 # ^^^^^ reference local 2$1021288725 # ^ reference local 1$1021288725 end @@ -124,8 +156,10 @@ def wrong_init def useP # ^^^^ definition [..] Object#useP(). +# enclosing_range 80:1-84:4 p = P.new # ^ definition local 1$2121829932 +# enclosing_range 80:1-84:4 # ^ reference [..] P# # ^^^ reference [..] Class#new(). p.a = p.r diff --git a/test/scip/testdata/flatfile_dsl.snapshot.rb b/test/scip/testdata/flatfile_dsl.snapshot.rb index b063ce10b..70a413d28 100644 --- a/test/scip/testdata/flatfile_dsl.snapshot.rb +++ b/test/scip/testdata/flatfile_dsl.snapshot.rb @@ -2,39 +2,52 @@ class Record # ^^^^^^ definition [..] Record# +# enclosing_range 3:1-8:4 def self.flatfile; end # ^^^^^^^^ definition [..] ``#flatfile(). +# enclosing_range 4:3-4:25 def self.from(*_); end # ^^^^ definition [..] ``#from(). +# enclosing_range 5:3-5:25 def self.pattern(*_); end # ^^^^^^^ definition [..] ``#pattern(). +# enclosing_range 6:3-6:28 def self.field(*_); end # ^^^^^ definition [..] ``#field(). +# enclosing_range 7:3-7:26 end class Flatfile < Record # ^^^^^^^^ definition [..] Flatfile# +# enclosing_range 10:1-16:4 # ^^^^^^ reference [..] Record# flatfile do # ^^^^^^^^ reference [..] ``#flatfile(). from 1..2, :foo # ^^^^ reference [..] ``#from(). # ^^^^ definition [..] Flatfile#`foo=`(). +# enclosing_range 12:5-12:22 # ^^^^ definition [..] Flatfile#foo(). +# enclosing_range 12:5-12:22 pattern(/A-Za-z/, :bar) # ^^^^^^^ reference [..] ``#pattern(). # ^^^^^^^^ reference [..] Regexp# # ^^^^ definition [..] Flatfile#`bar=`(). +# enclosing_range 13:5-13:28 # ^^^^ definition [..] Flatfile#bar(). +# enclosing_range 13:5-13:28 field :baz # ^^^^^ reference [..] ``#field(). # ^^^^ definition [..] Flatfile#`baz=`(). +# enclosing_range 14:5-14:15 # ^^^^ definition [..] Flatfile#baz(). +# enclosing_range 14:5-14:15 end end t = Flatfile.new #^ definition local 1$119448696 +#enclosing_range 3:1-21:18 # ^^^^^^^^ reference [..] Flatfile# # ^^^ reference [..] Class#new(). t.foo = t.foo + 1 diff --git a/test/scip/testdata/for.snapshot.rb b/test/scip/testdata/for.snapshot.rb index 762328ada..c9b1d4f5b 100644 --- a/test/scip/testdata/for.snapshot.rb +++ b/test/scip/testdata/for.snapshot.rb @@ -2,16 +2,20 @@ def for_loop() # ^^^^^^^^ definition [..] Object#for_loop(). +# enclosing_range 3:1-12:4 y = 0 # ^ definition local 1$1120785331 +# enclosing_range 3:1-12:4 for x in [1, 2, 3] # ^ definition local 2$1120785331 +# enclosing_range 3:1-12:4 y += x # ^ reference (write) local 1$1120785331 # ^ reference local 1$1120785331 # ^ reference local 2$1120785331 for x in [3, 4, 5] # ^ definition local 3$1120785331 +# enclosing_range 3:1-12:4 y += x # ^ reference (write) local 1$1120785331 # ^ reference local 1$1120785331 diff --git a/test/scip/testdata/freeze_constants.snapshot.rb b/test/scip/testdata/freeze_constants.snapshot.rb index 65a850aa3..caa855b86 100644 --- a/test/scip/testdata/freeze_constants.snapshot.rb +++ b/test/scip/testdata/freeze_constants.snapshot.rb @@ -3,24 +3,28 @@ X = 'X'.freeze #^ definition [..] X. +#enclosing_range 4:1-13:4 #documentation #| ```ruby #| X (T.untyped) #| ``` Y = 'Y'.freeze #^ definition [..] Y. +#enclosing_range 4:1-13:4 #documentation #| ```ruby #| Y (T.untyped) #| ``` A = %w[X Y].freeze #^ definition [..] A. +#enclosing_range 4:1-13:4 #documentation #| ```ruby #| A (T.untyped) #| ``` B = %W[#{X} Y].freeze #^ definition [..] B. +#enclosing_range 4:1-13:4 #documentation #| ```ruby #| B (T.untyped) @@ -29,24 +33,28 @@ module M # ^ definition [..] M# +# enclosing_range 9:1-13:4 # documentation # | ```ruby # | module M # | ``` Z = 'Z'.freeze # ^ definition [..] M#Z. +# enclosing_range 9:1-9:9 # documentation # | ```ruby # | Z (T.untyped) # | ``` A = %w[X Y Z].freeze # ^ definition [..] M#A. +# enclosing_range 9:1-9:9 # documentation # | ```ruby # | A (T.untyped) # | ``` B = %W[#{X} Y Z].freeze # ^ definition [..] M#B. +# enclosing_range 9:1-9:9 # documentation # | ```ruby # | B (T.untyped) diff --git a/test/scip/testdata/functions.snapshot.rb b/test/scip/testdata/functions.snapshot.rb index f8aca60ec..45c423e5d 100644 --- a/test/scip/testdata/functions.snapshot.rb +++ b/test/scip/testdata/functions.snapshot.rb @@ -2,16 +2,20 @@ def globalFn1() # ^^^^^^^^^ definition [..] Object#globalFn1(). +# enclosing_range 3:1-6:4 x = 10 # ^ definition local 1$3846536873 +# enclosing_range 3:1-6:4 x # ^ reference local 1$3846536873 end def globalFn2() # ^^^^^^^^^ definition [..] Object#globalFn2(). +# enclosing_range 8:1-10:4 x = globalFn1() # ^ definition local 1$3796204016 +# enclosing_range 8:1-10:4 # ^^^^^^^^^^^^^^^ reference local 1$3796204016 # ^^^^^^^^^ reference [..] Object#globalFn1(). end @@ -19,9 +23,13 @@ def globalFn2() # https://stackoverflow.com/questions/64322636/whats-the-3-dots-method-argument-in-ruby def loopyDoopy(...) # ^^^^^^^^^^ definition [..] Object#loopyDoopy(). +# enclosing_range 13:1-16:4 # ^^^ definition local 1$1182647655 +# enclosing_range 13:1-16:4 # ^^^ definition local 2$1182647655 +# enclosing_range 13:1-16:4 # ^^^ definition local 3$1182647655 +# enclosing_range 13:1-16:4 loopyDoopy(...) # ^^^^^^^^^^^^^^^ reference local 1$1182647655 return diff --git a/test/scip/testdata/gem_metadata.snapshot.rb b/test/scip/testdata/gem_metadata.snapshot.rb index 8c6e505bc..1f4a93d77 100644 --- a/test/scip/testdata/gem_metadata.snapshot.rb +++ b/test/scip/testdata/gem_metadata.snapshot.rb @@ -3,13 +3,16 @@ class C # ^ definition leet 1.3.3.7 C# +# enclosing_range 4:1-11:4 def m # ^ definition leet 1.3.3.7 C#m(). +# enclosing_range 5:3-7:6 n # ^ reference leet 1.3.3.7 C#n(). end def n # ^ definition leet 1.3.3.7 C#n(). +# enclosing_range 8:3-10:6 m # ^ reference leet 1.3.3.7 C#m(). end diff --git a/test/scip/testdata/globals.snapshot.rb b/test/scip/testdata/globals.snapshot.rb index 7a8b1b3f7..fdd6b30b4 100644 --- a/test/scip/testdata/globals.snapshot.rb +++ b/test/scip/testdata/globals.snapshot.rb @@ -2,13 +2,17 @@ $aa = 0 #^^^ definition [global] `>`#$aa. +#enclosing_range 3:1-24:4 def f # ^ definition [..] Object#f(). +# enclosing_range 5:1-10:4 $aa = 10 # ^^^ definition [global] `>`#$aa. +# enclosing_range 5:1-10:4 $bb = $aa # ^^^ definition [global] `>`#$bb. +# enclosing_range 5:1-10:4 # ^^^ reference [global] `>`#$aa. $aa = $bb # ^^^ reference (write) [global] `>`#$aa. @@ -18,10 +22,13 @@ def f class C # ^ definition [..] C# +# enclosing_range 12:1-16:4 def g # ^ definition [..] C#g(). +# enclosing_range 13:3-15:6 $c = $bb # ^^ definition [global] `>`#$c. +# enclosing_range 13:3-15:6 # ^^^^^^^^ reference [global] `>`#$c. # ^^^ reference [global] `>`#$bb. end @@ -33,11 +40,14 @@ def g $d = T.let(0, Integer) #^^ definition [global] `>`#$d. +#enclosing_range 3:1-24:4 # ^^^^^^^ definition local 3$119448696 +# enclosing_range 3:1-24:4 # ^^^^^^^ reference [..] Integer# def g # ^ definition [..] Object#g(). +# enclosing_range 22:1-24:4 $d # ^^ reference [global] `>`#$d. end diff --git a/test/scip/testdata/hashes.snapshot.rb b/test/scip/testdata/hashes.snapshot.rb index eaccd6678..a4d59d189 100644 --- a/test/scip/testdata/hashes.snapshot.rb +++ b/test/scip/testdata/hashes.snapshot.rb @@ -2,12 +2,16 @@ def hashes(h, k) # ^^^^^^ definition [..] Object#hashes(). +# enclosing_range 3:1-7:4 # ^ definition local 1$1685166589 +# enclosing_range 3:1-7:4 # ^ definition local 2$1685166589 +# enclosing_range 3:1-7:4 h["hello"] = "world" # ^ reference local 1$1685166589 old = h["world"] # ^^^ definition local 3$1685166589 +# enclosing_range 3:1-7:4 # ^ reference local 1$1685166589 h[k] = h[old] # ^ reference local 1$1685166589 diff --git a/test/scip/testdata/hoverdocs.snapshot.rb b/test/scip/testdata/hoverdocs.snapshot.rb index 11380269a..cb0aa41dd 100644 --- a/test/scip/testdata/hoverdocs.snapshot.rb +++ b/test/scip/testdata/hoverdocs.snapshot.rb @@ -4,6 +4,7 @@ # Class doc comment class C1 # ^^ definition [..] C1# +# enclosing_range 5:1-40:4 # documentation # | ```ruby # | class C1 @@ -15,6 +16,7 @@ class C1 def m1 # ^^ definition [..] C1#m1(). +# enclosing_range 8:3-9:6 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -26,6 +28,7 @@ def m1 # ^^^^^^^ reference [..] T#Boolean. def m2 # ^^ definition [..] C1#m2(). +# enclosing_range 12:3-14:6 # documentation # | ```ruby # | sig { returns(T::Boolean) } @@ -39,17 +42,20 @@ def m2 # ^^^^^^^ reference [..] T#Boolean. def m3(c, b) # ^^ definition [..] C1#m3(). +# enclosing_range 17:3-19:6 # documentation # | ```ruby # | sig { params(c: T.untyped, b: T.untyped).returns(T::Boolean) } # | def m3(c, b) # | ``` # ^ definition local 1$2519626513 +# enclosing_range 17:3-19:6 # documentation # | ```ruby # | c (T.untyped) # | ``` # ^ definition local 2$2519626513 +# enclosing_range 17:3-19:6 # documentation # | ```ruby # | b (T.untyped) @@ -63,6 +69,7 @@ def m3(c, b) # **doc comment.** def m4(xs) # ^^ definition [..] C1#m4(). +# enclosing_range 23:3-25:6 # documentation # | ```ruby # | sig { params(xs: T.untyped).returns(T.untyped) } @@ -72,6 +79,7 @@ def m4(xs) # | _This_ is a # | **doc comment.** # ^^ definition local 1$2536404132 +# enclosing_range 23:3-25:6 # documentation # | ```ruby # | xs (T.untyped) @@ -86,6 +94,7 @@ def m4(xs) # ^^^^^^^ reference [..] T#Boolean. def m5 # ^^ definition [..] C1#m5(). +# enclosing_range 30:3-32:6 # documentation # | ```ruby # | sig { returns(T::Boolean) } @@ -104,6 +113,7 @@ def m5 # ^^^^^^^ reference [..] T#Boolean. def m6(c, b) # ^^ definition [..] C1#m6(). +# enclosing_range 37:3-39:6 # documentation # | ```ruby # | sig { params(c: T.untyped, b: T.untyped).returns(T::Boolean) } @@ -113,11 +123,13 @@ def m6(c, b) # | And... # | ...one more doc comment # ^ definition local 1$2569959370 +# enclosing_range 37:3-39:6 # documentation # | ```ruby # | c (T.untyped) # | ``` # ^ definition local 2$2569959370 +# enclosing_range 37:3-39:6 # documentation # | ```ruby # | b (T.untyped) @@ -130,6 +142,7 @@ def m6(c, b) class C2 # undocumented class # ^^ definition [..] C2# +# enclosing_range 42:1-43:4 # documentation # | ```ruby # | class C2 @@ -141,6 +154,7 @@ class C2 # undocumented class # Some stuff module M1 # ^^ definition [..] M1# +# enclosing_range 48:1-67:4 # documentation # | ```ruby # | module M1 @@ -152,6 +166,7 @@ module M1 # This class is nested inside M1 class C3 # ^^ definition [..] M1#C3# +# enclosing_range 50:3-51:6 # documentation # | ```ruby # | class M1::C3 @@ -163,6 +178,7 @@ class C3 # This module is nested inside M1 module M2 # ^^ definition [..] M1#M2# +# enclosing_range 54:3-66:6 # documentation # | ```ruby # | module M1::M2 @@ -177,6 +193,7 @@ module M2 # ^^^^^^^ reference [..] T#Boolean. def n1 # ^^ definition [..] M1#M2#n1(). +# enclosing_range 59:5-61:8 # documentation # | ```ruby # | sig { returns(T::Boolean) } @@ -190,6 +207,7 @@ def n1 # This method is also inside M1::M2 def n2 # ^^ definition [..] M1#M2#n2(). +# enclosing_range 64:5-65:8 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -204,6 +222,7 @@ def n2 # This is a global function def f1 # ^^ definition [..] Object#f1(). +# enclosing_range 70:1-73:4 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -226,6 +245,7 @@ def f1 # ^ reference [..] T# def f2 # ^^ definition [..] Object#f2(). +# enclosing_range 77:1-79:4 # documentation # | ```ruby # | sig { returns(T::Integer (unresolved)) } @@ -238,6 +258,7 @@ def f2 def f3 # undocumented global function # ^^ definition [..] Object#f3(). +# enclosing_range 81:1-82:4 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -256,6 +277,7 @@ def f3 # undocumented global function # ^ reference [..] T# def f4 # another undocumented global function # ^^ definition [..] Object#f4(). +# enclosing_range 87:1-89:4 # documentation # | ```ruby # | sig { returns(T::Integer (unresolved)) } @@ -267,6 +289,7 @@ def f4 # another undocumented global function # Parent class class K1 # ^^ definition [..] K1# +# enclosing_range 92:1-103:4 # documentation # | ```ruby # | class K1 @@ -276,6 +299,7 @@ class K1 # sets @x and @@y def p1 # ^^ definition [..] K1#p1(). +# enclosing_range 94:3-97:6 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -285,12 +309,14 @@ def p1 # | sets @x and @@y @x = 10 # ^^ definition [..] K1#`@x`. +# enclosing_range 94:3-97:6 # documentation # | ```ruby # | @x (T.untyped) # | ``` @@y = 10 # ^^^ definition [..] ``#`@@y`. +# enclosing_range 94:3-97:6 # ^^^^^^^^ reference [..] ``#`@@y`. # override_documentation # | ```ruby @@ -301,6 +327,7 @@ def p1 # lorem ipsum, you get it def self.p2 # ^^ definition [..] ``#p2(). +# enclosing_range 100:3-102:6 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -310,6 +337,7 @@ def self.p2 # | lorem ipsum, you get it @z = 10 # ^^ definition [..] ``#`@z`. +# enclosing_range 100:3-102:6 # ^^^^^^^ reference [..] ``#`@z`. # override_documentation # | ```ruby @@ -321,6 +349,7 @@ def self.p2 # Subclass class K2 < K1 # ^^ definition [..] K2# +# enclosing_range 106:1-116:4 # documentation # | ```ruby # | class K2 < K1 @@ -331,6 +360,7 @@ class K2 < K1 # doc comment on class var ooh @z = 9 # ^^ definition [..] ``#`@z`. +# enclosing_range 106:1-106:14 # documentation # | ```ruby # | @z (T.untyped) @@ -341,6 +371,7 @@ class K2 < K1 # overrides K1's p1 def p1 # ^^ definition [..] K2#p1(). +# enclosing_range 111:3-115:6 # documentation # | ```ruby # | sig { returns(T.untyped) } @@ -350,9 +381,11 @@ def p1 # | overrides K1's p1 @x = 20 # ^^ definition [..] K2#`@x`. +# enclosing_range 111:3-115:6 # relation definition=[..] K1#`@x`. @@y = 20 # ^^^ definition [..] ``#`@@y`. +# enclosing_range 111:3-115:6 # documentation # | ```ruby # | @@y (T.untyped) diff --git a/test/scip/testdata/implicit_super_arg.snapshot.rb b/test/scip/testdata/implicit_super_arg.snapshot.rb index 63af89ddb..3fad0d7b0 100644 --- a/test/scip/testdata/implicit_super_arg.snapshot.rb +++ b/test/scip/testdata/implicit_super_arg.snapshot.rb @@ -20,10 +20,14 @@ # : T.noreturn = return $2: T.untyped class C # ^ definition [..] C# +# enclosing_range 21:1-25:4 def f(a, b) # ^ definition [..] C#f(). +# enclosing_range 22:3-24:6 # ^ definition local 1$3809224601 +# enclosing_range 22:3-24:6 # ^ definition local 2$3809224601 +# enclosing_range 22:3-24:6 super end end diff --git a/test/scip/testdata/inheritance.snapshot.rb b/test/scip/testdata/inheritance.snapshot.rb index dc51d5d52..e2c05136d 100644 --- a/test/scip/testdata/inheritance.snapshot.rb +++ b/test/scip/testdata/inheritance.snapshot.rb @@ -2,6 +2,7 @@ class Z1 # ^^ definition [..] Z1# +# enclosing_range 3:1-15:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). @@ -9,9 +10,12 @@ class Z1 # ^^^^^^^ reference [..] T#Boolean. def write_f(a) # ^^^^^^^ definition [..] Z1#write_f(). +# enclosing_range 7:3-9:6 # ^ definition local 1$1000661517 +# enclosing_range 7:3-9:6 @f = a # ^^ definition [..] Z1#`@f`. +# enclosing_range 7:3-9:6 # ^^^^^^ reference [..] Z1#`@f`. # ^ reference local 1$1000661517 end @@ -20,6 +24,7 @@ def write_f(a) # ^^^^^^^ reference [..] T#Boolean. def read_f? # ^^^^^^^ definition [..] Z1#`read_f?`(). +# enclosing_range 12:3-14:6 @f # ^^ reference [..] Z1#`@f`. end @@ -27,6 +32,7 @@ def read_f? class Z2 # ^^ definition [..] Z2# +# enclosing_range 17:1-29:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). @@ -34,6 +40,7 @@ class Z2 # ^^^^^^^ reference [..] T#Boolean. def read_f? # ^^^^^^^ definition [..] Z2#`read_f?`(). +# enclosing_range 21:3-23:6 @f # ^^ reference [..] Z2#`@f`. end @@ -42,9 +49,12 @@ def read_f? # ^^^^^^^ reference [..] T#Boolean. def write_f(a) # ^^^^^^^ definition [..] Z2#write_f(). +# enclosing_range 26:3-28:6 # ^ definition local 1$1000661517 +# enclosing_range 26:3-28:6 @f = a # ^^ definition [..] Z2#`@f`. +# enclosing_range 26:3-28:6 # ^^^^^^ reference [..] Z2#`@f`. # ^ reference local 1$1000661517 end @@ -52,6 +62,7 @@ def write_f(a) class Z3 < Z1 # ^^ definition [..] Z3# +# enclosing_range 31:1-38:4 # ^^ reference [..] Z1# extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). @@ -60,6 +71,7 @@ class Z3 < Z1 # ^^^^^^^ reference [..] T#Boolean. def read_f_plus_1? # ^^^^^^^^^^^^^^ definition [..] Z3#`read_f_plus_1?`(). +# enclosing_range 35:3-37:6 @f + 1 # ^^ reference [..] Z3#`@f`. # relation definition=[..] Z1#`@f`. @@ -68,6 +80,7 @@ def read_f_plus_1? class Z4 < Z3 # ^^ definition [..] Z4# +# enclosing_range 40:1-48:4 # ^^ reference [..] Z3# extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). @@ -76,12 +89,15 @@ class Z4 < Z3 # ^^^^^^^ reference [..] T#Boolean. def write_f_plus_1(a) # ^^^^^^^^^^^^^^ definition [..] Z4#write_f_plus_1(). +# enclosing_range 44:3-47:6 # ^ definition local 1$3337417690 +# enclosing_range 44:3-47:6 write_f(a) # ^^^^^^^ reference [..] Z1#write_f(). # ^ reference local 1$3337417690 @f = read_f_plus_1? # ^^ definition [..] Z4#`@f`. +# enclosing_range 44:3-47:6 # relation definition=[..] Z1#`@f`. # ^^^^^^^^^^^^^^^^^^^ reference [..] Z4#`@f`. # relation definition=[..] Z1#`@f`. diff --git a/test/scip/testdata/loops_and_conditionals.snapshot.rb b/test/scip/testdata/loops_and_conditionals.snapshot.rb index e6e78eefd..e38d77c69 100644 --- a/test/scip/testdata/loops_and_conditionals.snapshot.rb +++ b/test/scip/testdata/loops_and_conditionals.snapshot.rb @@ -2,10 +2,13 @@ def if_elsif_else() # ^^^^^^^^^^^^^ definition [..] Object#if_elsif_else(). +# enclosing_range 3:1-25:4 x = 0 # ^ definition local 1$2393773952 +# enclosing_range 3:1-25:4 y = 0 # ^ definition local 2$2393773952 +# enclosing_range 3:1-25:4 # Basic stuff if x == 1 # ^ reference local 1$2393773952 @@ -24,6 +27,7 @@ def if_elsif_else() # More complex expressiosn z = # ^ definition local 3$2393773952 +# enclosing_range 3:1-25:4 if if x == 0 then x+1 else x+2 end == 1 # ^ reference local 1$2393773952 # ^ reference local 1$2393773952 @@ -46,10 +50,13 @@ def if_elsif_else() def unless() # ^^^^^^ definition [..] Object#unless(). +# enclosing_range 27:1-40:4 z = 0 # ^ definition local 1$2827997891 +# enclosing_range 27:1-40:4 x = 1 # ^ definition local 2$2827997891 +# enclosing_range 27:1-40:4 unless z == 9 # ^ reference local 1$2827997891 z = 9 @@ -69,8 +76,11 @@ def unless() def case(x, y) # ^^^^ definition [..] Object#case(). +# enclosing_range 42:1-54:4 # ^ definition local 1$2602907825 +# enclosing_range 42:1-54:4 # ^ definition local 2$2602907825 +# enclosing_range 42:1-54:4 case x # ^ reference local 1$2602907825 when 0 @@ -94,9 +104,12 @@ def case(x, y) def for(xs) # ^^^ definition [..] Object#for(). +# enclosing_range 56:1-71:4 # ^^ definition local 1$2901640080 +# enclosing_range 56:1-71:4 for e in xs # ^ definition local 2$2901640080 +# enclosing_range 56:1-71:4 # ^^ reference local 1$2901640080 puts e # ^^^^ reference [..] Kernel#puts(). @@ -105,9 +118,11 @@ def for(xs) for f in xs # ^ definition local 3$2901640080 +# enclosing_range 56:1-71:4 # ^^ reference local 1$2901640080 g = f+1 # ^ definition local 4$2901640080 +# enclosing_range 56:1-71:4 # ^ reference local 3$2901640080 next if g == 0 # ^ reference local 4$2901640080 @@ -133,9 +148,12 @@ def for(xs) def while(xs) # ^^^^^ definition [..] Object#while(). +# enclosing_range 73:1-90:4 # ^^ definition local 1$231090382 +# enclosing_range 73:1-90:4 i = 0 # ^ definition local 2$231090382 +# enclosing_range 73:1-90:4 while i < 10 # ^ reference local 2$231090382 puts xs[i] @@ -146,10 +164,12 @@ def while(xs) j = 0 # ^ definition local 3$231090382 +# enclosing_range 73:1-90:4 while j < 10 # ^ reference local 3$231090382 g = xs[j] # ^ definition local 4$231090382 +# enclosing_range 73:1-90:4 # ^^ reference local 1$231090382 # ^ reference local 3$231090382 next if g == 0 @@ -176,9 +196,12 @@ def while(xs) def until(xs) # ^^^^^ definition [..] Object#until(). +# enclosing_range 92:1-109:4 # ^^ definition local 1$3132432719 +# enclosing_range 92:1-109:4 i = 0 # ^ definition local 2$3132432719 +# enclosing_range 92:1-109:4 until i > 10 # ^ reference local 2$3132432719 puts xs[i] @@ -189,10 +212,12 @@ def until(xs) j = 0 # ^ definition local 3$3132432719 +# enclosing_range 92:1-109:4 until j > 10 # ^ reference local 3$3132432719 g = xs[j] # ^ definition local 4$3132432719 +# enclosing_range 92:1-109:4 # ^^ reference local 1$3132432719 # ^ reference local 3$3132432719 next if g == 0 @@ -219,13 +244,16 @@ def until(xs) def flip_flop(xs) # ^^^^^^^^^ definition [..] Object#flip_flop(). +# enclosing_range 111:1-120:4 # ^^ definition local 1$2191960030 +# enclosing_range 111:1-120:4 # NOTE: flip-flops are unsupported (https://srb.help/3003) # Unlike redo, which somehow works, we fail to emit references # for the conditions. # Keep this test anyways to check that we don't crash/mess something up for x in xs # ^ definition local 2$2191960030 +# enclosing_range 111:1-120:4 # ^^ reference local 1$2191960030 puts x if x==2..x==8 # ^ reference local 2$2191960030 diff --git a/test/scip/testdata/mattr.snapshot.rb b/test/scip/testdata/mattr.snapshot.rb index ad80c3a2c..27bd3111e 100644 --- a/test/scip/testdata/mattr.snapshot.rb +++ b/test/scip/testdata/mattr.snapshot.rb @@ -2,22 +2,31 @@ class MR # ^^ definition [..] MR# +# enclosing_range 3:1-17:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). mattr_reader :both, :foo # ^^^^^ definition [..] MR#both(). +# enclosing_range 5:16-5:21 # ^^^^^ definition [..] ``#both(). +# enclosing_range 5:16-5:21 # ^^^^ definition [..] MR#foo(). +# enclosing_range 5:23-5:27 # ^^^^ definition [..] ``#foo(). +# enclosing_range 5:23-5:27 mattr_reader :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#no_instance(). +# enclosing_range 6:16-6:28 mattr_reader :bar, :no_instance_reader, instance_reader: false # ^^^^ definition [..] ``#bar(). +# enclosing_range 7:16-7:20 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#no_instance_reader(). +# enclosing_range 7:22-7:41 sig {void} def usages # ^^^^^^ definition [..] MR#usages(). +# enclosing_range 10:3-12:6 both # ^^^^ reference [..] MR#both(). end @@ -32,22 +41,31 @@ def usages class MW # ^^ definition [..] MW# +# enclosing_range 19:1-33:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). mattr_writer :both, :foo # ^^^^^ definition [..] MW#`both=`(). +# enclosing_range 21:16-21:21 # ^^^^^ definition [..] ``#`both=`(). +# enclosing_range 21:16-21:21 # ^^^^ definition [..] MW#`foo=`(). +# enclosing_range 21:23-21:27 # ^^^^ definition [..] ``#`foo=`(). +# enclosing_range 21:23-21:27 mattr_writer :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#`no_instance=`(). +# enclosing_range 22:16-22:28 mattr_writer :bar, :no_instance_writer, instance_writer: false # ^^^^ definition [..] ``#`bar=`(). +# enclosing_range 23:16-23:20 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_writer=`(). +# enclosing_range 23:22-23:41 sig {void} def usages # ^^^^^^ definition [..] MW#usages(). +# enclosing_range 26:3-28:6 self.both = 1 # ^^^^^^ reference [..] MW#`both=`(). end @@ -62,35 +80,56 @@ def usages class MA # ^^ definition [..] MA# +# enclosing_range 35:1-63:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). mattr_accessor :both, :foo # ^^^^^ definition [..] MA#both(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] MA#`both=`(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] ``#`both=`(). +# enclosing_range 37:18-37:23 # ^^^^^ definition [..] ``#both(). +# enclosing_range 37:18-37:23 # ^^^^ definition [..] MA#`foo=`(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] MA#foo(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] ``#`foo=`(). +# enclosing_range 37:25-37:29 # ^^^^ definition [..] ``#foo(). +# enclosing_range 37:25-37:29 mattr_accessor :no_instance, instance_accessor: false # ^^^^^^^^^^^^ definition [..] ``#`no_instance=`(). +# enclosing_range 38:18-38:30 # ^^^^^^^^^^^^ definition [..] ``#no_instance(). +# enclosing_range 38:18-38:30 mattr_accessor :no_instance_reader, instance_reader: false # ^^^^^^^^^^^^^^^^^^^ definition [..] MA#`no_instance_reader=`(). +# enclosing_range 39:18-39:37 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_reader=`(). +# enclosing_range 39:18-39:37 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#no_instance_reader(). +# enclosing_range 39:18-39:37 mattr_accessor :bar, :no_instance_writer, instance_writer: false # ^^^^ definition [..] MA#bar(). +# enclosing_range 40:18-40:22 # ^^^^ definition [..] ``#`bar=`(). +# enclosing_range 40:18-40:22 # ^^^^ definition [..] ``#bar(). +# enclosing_range 40:18-40:22 # ^^^^^^^^^^^^^^^^^^^ definition [..] MA#no_instance_writer(). +# enclosing_range 40:24-40:43 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#`no_instance_writer=`(). +# enclosing_range 40:24-40:43 # ^^^^^^^^^^^^^^^^^^^ definition [..] ``#no_instance_writer(). +# enclosing_range 40:24-40:43 sig {void} def usages # ^^^^^^ definition [..] MA#usages(). +# enclosing_range 43:3-50:6 both # ^^^^ reference [..] MA#both(). self.both = 1 diff --git a/test/scip/testdata/method_inheritance.snapshot.rb b/test/scip/testdata/method_inheritance.snapshot.rb index 2aea57918..c85a0bcb5 100644 --- a/test/scip/testdata/method_inheritance.snapshot.rb +++ b/test/scip/testdata/method_inheritance.snapshot.rb @@ -2,23 +2,29 @@ class C1 # ^^ definition [..] C1# +# enclosing_range 3:1-9:4 def m1 # ^^ definition [..] C1#m1(). +# enclosing_range 4:3-5:6 end def m2 # ^^ definition [..] C1#m2(). +# enclosing_range 7:3-8:6 end end class C2 < C1 # ^^ definition [..] C2# +# enclosing_range 11:1-18:4 # ^^ reference [..] C1# def m2 # ^^ definition [..] C2#m2(). +# enclosing_range 12:3-13:6 end def m3 # ^^ definition [..] C2#m3(). +# enclosing_range 14:3-17:6 m1 # ^^ reference [..] C1#m1(). m2 @@ -28,9 +34,11 @@ def m3 class C3 < C2 # ^^ definition [..] C3# +# enclosing_range 20:1-24:4 # ^^ reference [..] C2# def m4 # ^^ definition [..] C3#m4(). +# enclosing_range 21:3-23:6 m1 # ^^ reference [..] C1#m1(). end diff --git a/test/scip/testdata/minitest_1.snapshot.rb b/test/scip/testdata/minitest_1.snapshot.rb index 1da6a4949..f23914ef3 100644 --- a/test/scip/testdata/minitest_1.snapshot.rb +++ b/test/scip/testdata/minitest_1.snapshot.rb @@ -1,14 +1,18 @@ # typed: true class MyTest # ^^^^^^ definition [..] MyTest# +# enclosing_range 2:1-71:4 def outside_method # ^^^^^^^^^^^^^^ definition [..] MyTest#outside_method(). +# enclosing_range 3:5-4:8 end it "works outside" do # ^^^^^^^^^^^^^^^ definition [..] MyTest#``(). +# enclosing_range 6:5-10:8 x = outside_method # ^ definition local 1$1914741329 +# enclosing_range 6:5-10:8 # ^^^^^^^^^^^^^^ reference [..] MyTest#outside_method(). x = x + 1 # ^ reference (write) local 1$1914741329 @@ -18,8 +22,10 @@ def outside_method it "allows constants inside of IT" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``(). +# enclosing_range 12:5-14:8 CONST = 10 # ^^^^^ definition [..] MyTest#CONST. +# enclosing_range 2:1-2:13 # ^^^^^^^^^^ reference [..] Kernel# # ^^^^^^^^^^ reference [..] Kernel#raise(). # ^^^^^^^^^^ reference [..] Module# @@ -27,20 +33,26 @@ def outside_method it "allows let-ed constants inside of IT" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``(). +# enclosing_range 16:5-18:8 C2 = T.let(10, Integer) # ^^ definition [..] MyTest#C2. +# enclosing_range 2:1-2:13 # ^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Kernel# # ^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Kernel#raise(). # ^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Module# # ^^^^^^^ definition local 1$95163902 +# enclosing_range 16:5-18:8 # ^^^^^^^ definition local 3$119448696 +# enclosing_range 2:1-2:13 # ^^^^^^^ reference [..] Integer# end it "allows path constants inside of IT" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``(). +# enclosing_range 20:5-23:8 C3 = Mod::C # ^^ definition [..] MyTest#C3. +# enclosing_range 2:1-2:13 # relation reference=[..] Mod#C# # ^^^ reference [..] Mod# # ^ reference [..] Mod#C# @@ -52,12 +64,15 @@ def outside_method describe "some inner tests" do # ^^^^^^^^^^^^^^^^^^ reference [..] MyTest# # ^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``# +# enclosing_range 25:5-33:8 def inside_method # ^^^^^^^^^^^^^ definition [..] MyTest#``#inside_method(). +# enclosing_range 26:9-27:12 end it "works inside" do # ^^^^^^^^^^^^^^ definition [..] MyTest#``#``(). +# enclosing_range 29:9-32:12 outside_method # ^^^^^^^^^^^^^^ reference [..] MyTest#outside_method(). inside_method @@ -67,12 +82,16 @@ def inside_method def instance_helper; end # ^^^^^^^^^^^^^^^ definition [..] MyTest#instance_helper(). +# enclosing_range 35:5-35:29 before do # ^^^^^^ definition [..] MyTest#``(). +# enclosing_range 37:5-40:8 @foo = T.let(3, Integer) # ^^^^ definition [..] MyTest#`@foo`. +# enclosing_range 37:5-40:8 # ^^^^^^^ definition local 1$2938098190 +# enclosing_range 37:5-40:8 # ^^^^^^^ reference [..] Integer# instance_helper # ^^^^^^^^^^^^^^^ reference [..] MyTest#instance_helper(). @@ -80,9 +99,11 @@ def instance_helper; end it 'can read foo' do # ^^^^^^^^^^^^^^ definition [..] MyTest#``(). +# enclosing_range 42:5-45:8 T.assert_type!(@foo, Integer) # ^^^^ reference [..] MyTest#`@foo`. # ^^^^^^^ definition local 1$3909275672 +# enclosing_range 42:5-45:8 # ^^^^^^^ reference [..] Integer# instance_helper # ^^^^^^^^^^^^^^^ reference [..] MyTest#instance_helper(). @@ -90,14 +111,18 @@ def instance_helper; end def self.random_method # ^^^^^^^^^^^^^ definition [..] ``#random_method(). +# enclosing_range 47:5-48:8 end describe Object do # ^^^^^^ reference [..] MyTest# # ^^^^^^ definition [..] MyTest#``# +# enclosing_range 50:5-55:8 it Object do # ^^^^^^ definition [..] MyTest#``#``(). +# enclosing_range 51:9-52:12 # ^^^^^^ definition [..] MyTest#``#``(). +# enclosing_range 53:9-54:12 # ^^^^^^ reference [..] Object# end it Object do @@ -107,6 +132,7 @@ def self.random_method def self.it(*args) # ^^ definition [..] ``#it(). +# enclosing_range 57:5-58:8 end it "ignores methods without a block" # ^^ reference [..] ``#it(). @@ -120,11 +146,14 @@ def self.it(*args) describe "a non-ideal situation" do # ^^^^^^^^^^^^^^^^^^^^^^^ reference [..] MyTest# # ^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``# +# enclosing_range 65:5-70:8 it "contains nested describes" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``#``(). +# enclosing_range 66:7-69:10 describe "nobody should write this but we should still parse it" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] MyTest#``# # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#``#``# +# enclosing_range 67:9-68:12 end end end @@ -132,12 +161,15 @@ def self.it(*args) def junk # ^^^^ definition [..] Object#junk(). +# enclosing_range 73:1-74:4 end module Mod # ^^^ definition [..] Mod# +# enclosing_range 77:1-80:4 class C # ^ definition [..] Mod#C# +# enclosing_range 78:3-79:6 end end diff --git a/test/scip/testdata/minitest_2.snapshot.rb b/test/scip/testdata/minitest_2.snapshot.rb index 6040bb350..51d379e1f 100644 --- a/test/scip/testdata/minitest_2.snapshot.rb +++ b/test/scip/testdata/minitest_2.snapshot.rb @@ -2,18 +2,23 @@ class Test # ^^^^ definition [..] Test# +# enclosing_range 3:1-8:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). def self.test_each(arg, &blk); end # ^^^^^^^^^ definition [..] ``#test_each(). +# enclosing_range 5:3-5:37 def self.it(name, &blk); end # ^^ definition [..] ``#it(). +# enclosing_range 6:3-6:31 def self.describe(name, &blk); end # ^^^^^^^^ definition [..] ``#describe(). +# enclosing_range 7:3-7:37 end class Foo < Test # ^^^ definition [..] Foo# +# enclosing_range 10:1-20:4 # ^^^^ reference [..] Test# # The unclosed `do` block here should be a recoverable parse error. test_each([[1, 2], [3,4]]) do |(a,b)| @@ -22,9 +27,11 @@ class Foo < Test it "it block 1" do # ^^^^^^^^^^^^ definition [..] Foo#``(). +# enclosing_range 15:3-16:6 end it "it block 2" do # ^^^^^^^^^^^^ definition [..] Foo#``(). +# enclosing_range 18:3-19:6 end end # error: unexpected token "end of file" diff --git a/test/scip/testdata/minitest_3.snapshot.rb b/test/scip/testdata/minitest_3.snapshot.rb index ae29d923e..e60840a54 100644 --- a/test/scip/testdata/minitest_3.snapshot.rb +++ b/test/scip/testdata/minitest_3.snapshot.rb @@ -6,26 +6,35 @@ class Test # ^^^^ definition [..] Test# +# enclosing_range 4:1-24:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). def self.test_each(iter, &blk); end # ^^^^^^^^^ definition [..] ``#test_each(). +# enclosing_range 7:3-7:38 def self.it(name, &blk); end # ^^ definition [..] ``#it(). +# enclosing_range 8:3-8:31 def self.describe(name, &blk); end # ^^^^^^^^ definition [..] ``#describe(). +# enclosing_range 9:3-9:37 test_each([[1,2], [3,4]]) do |(a,b)| # ^^^^^^^^^ reference [..] ``#test_each(). # ^ definition local 1$2288740619 +# enclosing_range 19:5-21:8 # ^ definition local 1$416088458 +# enclosing_range 14:7-16:10 # ^ definition local 2$2288740619 +# enclosing_range 19:5-21:8 # ^ definition local 2$416088458 +# enclosing_range 14:7-16:10 describe "d" do it "b" do # ^^^ definition [..] Test#``(). +# enclosing_range 14:7-16:10 T.reveal_type(a) # error: Revealed type: `Integer` # ^ reference [..] T# # ^^^^^^^^^^^ reference [..] ``#reveal_type(). @@ -35,6 +44,7 @@ def self.describe(name, &blk); end it "a" do # ^^^ definition [..] Test#``(). +# enclosing_range 19:5-21:8 T.reveal_type(a) # error: Revealed type: `Integer` # ^ reference [..] T# # ^^^^^^^^^^^ reference [..] ``#reveal_type(). diff --git a/test/scip/testdata/mixin.snapshot.rb b/test/scip/testdata/mixin.snapshot.rb index 4ee65c05d..9eef40eb6 100644 --- a/test/scip/testdata/mixin.snapshot.rb +++ b/test/scip/testdata/mixin.snapshot.rb @@ -2,30 +2,36 @@ module M # ^ definition [..] M# +# enclosing_range 3:1-5:4 def f; puts 'M.f'; end # ^ definition [..] M#f(). +# enclosing_range 4:3-4:25 end class C1 # ^^ definition [..] C1# +# enclosing_range 7:1-10:4 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] M# # ^ reference [..] M# def f; puts 'C1.f'; end # ^ definition [..] C1#f(). +# enclosing_range 9:3-9:26 # ^^^^ reference [..] Kernel#puts(). end # f refers to C1.f class C2 < C1 # ^^ definition [..] C2# +# enclosing_range 13:1-14:4 # ^^ reference [..] C1# end # f refers to C1.f class C3 < C1 # ^^ definition [..] C3# +# enclosing_range 17:1-19:4 # ^^ reference [..] C1# include M # ^^^^^^^ reference [..] Module#include(). @@ -35,13 +41,16 @@ class C3 < C1 class D1 # ^^ definition [..] D1# +# enclosing_range 21:1-23:4 def f; puts 'D1.f'; end # ^ definition [..] D1#f(). +# enclosing_range 22:3-22:26 # ^^^^ reference [..] Kernel#puts(). end class D2 # ^^ definition [..] D2# +# enclosing_range 25:1-27:4 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] M# @@ -74,27 +83,35 @@ class D2 module T0 # ^^ definition [..] T0# +# enclosing_range 38:1-48:4 module M # ^ definition [..] T0#M# +# enclosing_range 39:3-41:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T0#M#set_f_0(). +# enclosing_range 40:5-40:29 # ^^ definition [..] T0#M#`@f`. +# enclosing_range 40:5-40:29 # ^^^^^^ reference [..] T0#M#`@f`. end class C # ^ definition [..] T0#C# +# enclosing_range 43:3-47:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T0#M# # ^ reference [..] T0#M# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T0#C#set_f_1(). +# enclosing_range 45:5-45:29 # ^^ definition [..] T0#C#`@f`. +# enclosing_range 45:5-45:29 # relation reference=[..] T0#M#`@f`. # ^^^^^^ reference [..] T0#C#`@f`. def get_f; @f; end # ^^^^^ definition [..] T0#C#get_f(). +# enclosing_range 46:5-46:23 # ^^ reference [..] T0#C#`@f`. end end @@ -103,16 +120,21 @@ def get_f; @f; end module T1 # ^^ definition [..] T1# +# enclosing_range 52:1-66:4 module M0 # ^^ definition [..] T1#M0# +# enclosing_range 53:3-55:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T1#M0#set_f_0(). +# enclosing_range 54:5-54:29 # ^^ definition [..] T1#M0#`@f`. +# enclosing_range 54:5-54:29 # ^^^^^^ reference [..] T1#M0#`@f`. end module M1 # ^^ definition [..] T1#M1# +# enclosing_range 57:3-59:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T1#M0# @@ -121,17 +143,21 @@ module M1 class C # ^ definition [..] T1#C# +# enclosing_range 61:3-65:6 include M1 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T1#M1# # ^^ reference [..] T1#M1# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T1#C#set_f_1(). +# enclosing_range 63:5-63:29 # ^^ definition [..] T1#C#`@f`. +# enclosing_range 63:5-63:29 # relation reference=[..] T1#M0#`@f`. # ^^^^^^ reference [..] T1#C#`@f`. def get_f; @f; end # ^^^^^ definition [..] T1#C#get_f(). +# enclosing_range 64:5-64:23 # ^^ reference [..] T1#C#`@f`. end end @@ -140,22 +166,28 @@ def get_f; @f; end module T2 # ^^ definition [..] T2# +# enclosing_range 70:1-79:4 module M # ^ definition [..] T2#M# +# enclosing_range 71:3-73:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T2#M#set_f_0(). +# enclosing_range 72:5-72:29 # ^^ definition [..] T2#M#`@f`. +# enclosing_range 72:5-72:29 # ^^^^^^ reference [..] T2#M#`@f`. end class C # ^ definition [..] T2#C# +# enclosing_range 75:3-78:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T2#M# # ^ reference [..] T2#M# def get_f; @f; end # ^^^^^ definition [..] T2#C#get_f(). +# enclosing_range 77:5-77:23 # ^^ reference [..] T2#C#`@f`. end end @@ -164,16 +196,21 @@ def get_f; @f; end module T3 # ^^ definition [..] T3# +# enclosing_range 83:1-96:4 module M0 # ^^ definition [..] T3#M0# +# enclosing_range 84:3-86:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T3#M0#set_f_0(). +# enclosing_range 85:5-85:29 # ^^ definition [..] T3#M0#`@f`. +# enclosing_range 85:5-85:29 # ^^^^^^ reference [..] T3#M0#`@f`. end module M1 # ^^ definition [..] T3#M1# +# enclosing_range 88:3-90:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T3#M0# @@ -182,12 +219,14 @@ module M1 class C # ^ definition [..] T3#C# +# enclosing_range 92:3-95:6 include M1 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T3#M1# # ^^ reference [..] T3#M1# def get_f; @f; end # ^^^^^ definition [..] T3#C#get_f(). +# enclosing_range 94:5-94:23 # ^^ reference [..] T3#C#`@f`. end end @@ -196,24 +235,32 @@ def get_f; @f; end module T4 # ^^ definition [..] T4# +# enclosing_range 100:1-114:4 module M # ^ definition [..] T4#M# +# enclosing_range 101:3-103:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T4#M#set_f_0(). +# enclosing_range 102:5-102:29 # ^^ definition [..] T4#M#`@f`. +# enclosing_range 102:5-102:29 # ^^^^^^ reference [..] T4#M#`@f`. end class C0 # ^^ definition [..] T4#C0# +# enclosing_range 105:3-107:6 def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T4#C0#set_f_2(). +# enclosing_range 106:5-106:29 # ^^ definition [..] T4#C0#`@f`. +# enclosing_range 106:5-106:29 # ^^^^^^ reference [..] T4#C0#`@f`. end class C1 < C0 # ^^ definition [..] T4#C1# +# enclosing_range 109:3-113:6 # ^^ reference [..] T4#C0# include M # ^^^^^^^ reference [..] Module#include(). @@ -221,12 +268,15 @@ class C1 < C0 # ^ reference [..] T4#M# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T4#C1#set_f_1(). +# enclosing_range 111:5-111:29 # ^^ definition [..] T4#C1#`@f`. +# enclosing_range 111:5-111:29 # relation definition=[..] T4#C0#`@f`. reference=[..] T4#M#`@f`. # ^^^^^^ reference [..] T4#C1#`@f`. # relation definition=[..] T4#C0#`@f`. reference=[..] T4#M#`@f`. def get_f; @f; end # ^^^^^ definition [..] T4#C1#get_f(). +# enclosing_range 112:5-112:23 # ^^ reference [..] T4#C1#`@f`. # relation definition=[..] T4#C0#`@f`. reference=[..] T4#M#`@f`. end @@ -236,16 +286,21 @@ def get_f; @f; end module T5 # ^^ definition [..] T5# +# enclosing_range 118:1-136:4 module M0 # ^^ definition [..] T5#M0# +# enclosing_range 119:3-121:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T5#M0#set_f_0(). +# enclosing_range 120:5-120:29 # ^^ definition [..] T5#M0#`@f`. +# enclosing_range 120:5-120:29 # ^^^^^^ reference [..] T5#M0#`@f`. end module M1 # ^^ definition [..] T5#M1# +# enclosing_range 123:3-125:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T5#M0# @@ -254,14 +309,18 @@ module M1 class C0 # ^^ definition [..] T5#C0# +# enclosing_range 127:3-129:6 def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T5#C0#set_f_2(). +# enclosing_range 128:5-128:29 # ^^ definition [..] T5#C0#`@f`. +# enclosing_range 128:5-128:29 # ^^^^^^ reference [..] T5#C0#`@f`. end class C1 < C0 # ^^ definition [..] T5#C1# +# enclosing_range 131:3-135:6 # ^^ reference [..] T5#C0# include M # ^^^^^^^ reference [..] Module#include(). @@ -269,12 +328,15 @@ class C1 < C0 # ^ reference [..] M# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T5#C1#set_f_1(). +# enclosing_range 133:5-133:29 # ^^ definition [..] T5#C1#`@f`. +# enclosing_range 133:5-133:29 # relation definition=[..] T5#C0#`@f`. # ^^^^^^ reference [..] T5#C1#`@f`. # relation definition=[..] T5#C0#`@f`. def get_f; @f; end # ^^^^^ definition [..] T5#C1#get_f(). +# enclosing_range 134:5-134:23 # ^^ reference [..] T5#C1#`@f`. # relation definition=[..] T5#C0#`@f`. end @@ -284,27 +346,36 @@ def get_f; @f; end module T6 # ^^ definition [..] T6# +# enclosing_range 140:1-152:4 module M # ^ definition [..] T6#M# +# enclosing_range 141:3-143:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T6#M#set_f_0(). +# enclosing_range 142:5-142:29 # ^^ definition [..] T6#M#`@f`. +# enclosing_range 142:5-142:29 # ^^^^^^ reference [..] T6#M#`@f`. end class C0 # ^^ definition [..] T6#C0# +# enclosing_range 145:3-147:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T6#C0#set_f_1(). +# enclosing_range 146:5-146:29 # ^^ definition [..] T6#C0#`@f`. +# enclosing_range 146:5-146:29 # ^^^^^^ reference [..] T6#C0#`@f`. end class C1 < C0 # ^^ definition [..] T6#C1# +# enclosing_range 149:3-151:6 # ^^ reference [..] T6#C0# def get_f; @f; end # ^^^^^ definition [..] T6#C1#get_f(). +# enclosing_range 150:5-150:23 # ^^ reference [..] T6#C1#`@f`. # relation definition=[..] T6#C0#`@f`. end @@ -314,16 +385,21 @@ def get_f; @f; end module T7 # ^^ definition [..] T7# +# enclosing_range 156:1-172:4 module M0 # ^^ definition [..] T7#M0# +# enclosing_range 157:3-159:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T7#M0#set_f_0(). +# enclosing_range 158:5-158:29 # ^^ definition [..] T7#M0#`@f`. +# enclosing_range 158:5-158:29 # ^^^^^^ reference [..] T7#M0#`@f`. end module M1 # ^^ definition [..] T7#M1# +# enclosing_range 161:3-163:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T7#M0# @@ -332,17 +408,22 @@ module M1 class C0 # ^^ definition [..] T7#C0# +# enclosing_range 165:3-167:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T7#C0#set_f_1(). +# enclosing_range 166:5-166:29 # ^^ definition [..] T7#C0#`@f`. +# enclosing_range 166:5-166:29 # ^^^^^^ reference [..] T7#C0#`@f`. end class C1 < C0 # ^^ definition [..] T7#C1# +# enclosing_range 169:3-171:6 # ^^ reference [..] T7#C0# def get_f; @f; end # ^^^^^ definition [..] T7#C1#get_f(). +# enclosing_range 170:5-170:23 # ^^ reference [..] T7#C1#`@f`. # relation definition=[..] T7#C0#`@f`. end @@ -352,38 +433,49 @@ def get_f; @f; end module T8 # ^^ definition [..] T8# +# enclosing_range 176:1-190:4 module M # ^ definition [..] T8#M# +# enclosing_range 177:3-179:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T8#M#set_f_0(). +# enclosing_range 178:5-178:29 # ^^ definition [..] T8#M#`@f`. +# enclosing_range 178:5-178:29 # ^^^^^^ reference [..] T8#M#`@f`. end class C0 # ^^ definition [..] T8#C0# +# enclosing_range 181:3-184:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T8#M# # ^ reference [..] T8#M# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T8#C0#set_f_1(). +# enclosing_range 183:5-183:29 # ^^ definition [..] T8#C0#`@f`. +# enclosing_range 183:5-183:29 # relation reference=[..] T8#M#`@f`. # ^^^^^^ reference [..] T8#C0#`@f`. end class C1 < C0 # ^^ definition [..] T8#C1# +# enclosing_range 186:3-189:6 # ^^ reference [..] T8#C0# def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T8#C1#set_f_2(). +# enclosing_range 187:5-187:29 # ^^ definition [..] T8#C1#`@f`. +# enclosing_range 187:5-187:29 # relation definition=[..] T8#C0#`@f`. # ^^^^^^ reference [..] T8#C1#`@f`. # relation definition=[..] T8#C0#`@f`. def get_f; @f; end # ^^^^^ definition [..] T8#C1#get_f(). +# enclosing_range 188:5-188:23 # ^^ reference [..] T8#C1#`@f`. # relation definition=[..] T8#C0#`@f`. end @@ -393,32 +485,41 @@ def get_f; @f; end module T9 # ^^ definition [..] T9# +# enclosing_range 194:1-207:4 module M # ^ definition [..] T9#M# +# enclosing_range 195:3-197:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T9#M#set_f_0(). +# enclosing_range 196:5-196:29 # ^^ definition [..] T9#M#`@f`. +# enclosing_range 196:5-196:29 # ^^^^^^ reference [..] T9#M#`@f`. end class C0 # ^^ definition [..] T9#C0# +# enclosing_range 199:3-202:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T9#M# # ^ reference [..] T9#M# def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T9#C0#set_f_1(). +# enclosing_range 201:5-201:29 # ^^ definition [..] T9#C0#`@f`. +# enclosing_range 201:5-201:29 # relation reference=[..] T9#M#`@f`. # ^^^^^^ reference [..] T9#C0#`@f`. end class C1 < C0 # ^^ definition [..] T9#C1# +# enclosing_range 204:3-206:6 # ^^ reference [..] T9#C0# def get_f; @f; end # ^^^^^ definition [..] T9#C1#get_f(). +# enclosing_range 205:5-205:23 # ^^ reference [..] T9#C1#`@f`. # relation definition=[..] T9#C0#`@f`. end @@ -428,16 +529,21 @@ def get_f; @f; end module T10 # ^^^ definition [..] T10# +# enclosing_range 211:1-224:4 module M # ^ definition [..] T10#M# +# enclosing_range 212:3-214:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T10#M#set_f_0(). +# enclosing_range 213:5-213:29 # ^^ definition [..] T10#M#`@f`. +# enclosing_range 213:5-213:29 # ^^^^^^ reference [..] T10#M#`@f`. end class C0 # ^^ definition [..] T10#C0# +# enclosing_range 216:3-218:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T10#M# @@ -446,13 +552,17 @@ class C0 class C1 < C0 # ^^ definition [..] T10#C1# +# enclosing_range 220:3-223:6 # ^^ reference [..] T10#C0# def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T10#C1#set_f_2(). +# enclosing_range 221:5-221:29 # ^^ definition [..] T10#C1#`@f`. +# enclosing_range 221:5-221:29 # ^^^^^^ reference [..] T10#C1#`@f`. def get_f; @f; end # ^^^^^ definition [..] T10#C1#get_f(). +# enclosing_range 222:5-222:23 # ^^ reference [..] T10#C1#`@f`. end end @@ -461,16 +571,21 @@ def get_f; @f; end module T11 # ^^^ definition [..] T11# +# enclosing_range 228:1-240:4 module M # ^ definition [..] T11#M# +# enclosing_range 229:3-231:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T11#M#set_f_0(). +# enclosing_range 230:5-230:29 # ^^ definition [..] T11#M#`@f`. +# enclosing_range 230:5-230:29 # ^^^^^^ reference [..] T11#M#`@f`. end class C0 # ^^ definition [..] T11#C0# +# enclosing_range 233:3-235:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T11#M# @@ -479,9 +594,11 @@ class C0 class C1 < C0 # ^^ definition [..] T11#C1# +# enclosing_range 237:3-239:6 # ^^ reference [..] T11#C0# def get_f; @f; end # ^^^^^ definition [..] T11#C1#get_f(). +# enclosing_range 238:5-238:23 # ^^ reference [..] T11#C1#`@f`. end end @@ -490,24 +607,32 @@ def get_f; @f; end module T12 # ^^^ definition [..] T12# +# enclosing_range 244:1-264:4 module M0 # ^^ definition [..] T12#M0# +# enclosing_range 245:3-247:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T12#M0#set_f_0(). +# enclosing_range 246:5-246:29 # ^^ definition [..] T12#M0#`@f`. +# enclosing_range 246:5-246:29 # ^^^^^^ reference [..] T12#M0#`@f`. end module M1 # ^^ definition [..] T12#M1# +# enclosing_range 249:3-251:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T12#M1#set_f_1(). +# enclosing_range 250:5-250:29 # ^^ definition [..] T12#M1#`@f`. +# enclosing_range 250:5-250:29 # ^^^^^^ reference [..] T12#M1#`@f`. end module M2 # ^^ definition [..] T12#M2# +# enclosing_range 253:3-257:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T12#M0# @@ -518,24 +643,30 @@ module M2 # ^^ reference [..] T12#M1# def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T12#M2#set_f_2(). +# enclosing_range 256:5-256:29 # ^^ definition [..] T12#M2#`@f`. +# enclosing_range 256:5-256:29 # relation reference=[..] T12#M0#`@f`. reference=[..] T12#M1#`@f`. # ^^^^^^ reference [..] T12#M2#`@f`. end class C # ^ definition [..] T12#C# +# enclosing_range 259:3-263:6 include M2 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T12#M2# # ^^ reference [..] T12#M2# def set_f_3; @f = 3; end # ^^^^^^^ definition [..] T12#C#set_f_3(). +# enclosing_range 261:5-261:29 # ^^ definition [..] T12#C#`@f`. +# enclosing_range 261:5-261:29 # relation reference=[..] T12#M0#`@f`. reference=[..] T12#M1#`@f`. reference=[..] T12#M2#`@f`. # ^^^^^^ reference [..] T12#C#`@f`. def get_f; @f; end # ^^^^^ definition [..] T12#C#get_f(). +# enclosing_range 262:5-262:23 # ^^ reference [..] T12#C#`@f`. end end @@ -544,24 +675,32 @@ def get_f; @f; end module T13 # ^^^ definition [..] T13# +# enclosing_range 268:1-287:4 module M0 # ^^ definition [..] T13#M0# +# enclosing_range 269:3-271:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T13#M0#set_f_0(). +# enclosing_range 270:5-270:29 # ^^ definition [..] T13#M0#`@f`. +# enclosing_range 270:5-270:29 # ^^^^^^ reference [..] T13#M0#`@f`. end module M1 # ^^ definition [..] T13#M1# +# enclosing_range 273:3-275:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T13#M1#set_f_1(). +# enclosing_range 274:5-274:29 # ^^ definition [..] T13#M1#`@f`. +# enclosing_range 274:5-274:29 # ^^^^^^ reference [..] T13#M1#`@f`. end module M2 # ^^ definition [..] T13#M2# +# enclosing_range 277:3-281:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T13#M0# @@ -572,19 +711,23 @@ module M2 # ^^ reference [..] T13#M1# def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T13#M2#set_f_2(). +# enclosing_range 280:5-280:29 # ^^ definition [..] T13#M2#`@f`. +# enclosing_range 280:5-280:29 # relation reference=[..] T13#M0#`@f`. reference=[..] T13#M1#`@f`. # ^^^^^^ reference [..] T13#M2#`@f`. end class C # ^ definition [..] T13#C# +# enclosing_range 283:3-286:6 include M2 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T13#M2# # ^^ reference [..] T13#M2# def get_f; @f; end # ^^^^^ definition [..] T13#C#get_f(). +# enclosing_range 285:5-285:23 # ^^ reference [..] T13#C#`@f`. end end @@ -593,24 +736,32 @@ def get_f; @f; end module T14 # ^^^ definition [..] T14# +# enclosing_range 291:1-310:4 module M0 # ^^ definition [..] T14#M0# +# enclosing_range 292:3-294:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T14#M0#set_f_0(). +# enclosing_range 293:5-293:29 # ^^ definition [..] T14#M0#`@f`. +# enclosing_range 293:5-293:29 # ^^^^^^ reference [..] T14#M0#`@f`. end module M1 # ^^ definition [..] T14#M1# +# enclosing_range 296:3-298:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T14#M1#set_f_1(). +# enclosing_range 297:5-297:29 # ^^ definition [..] T14#M1#`@f`. +# enclosing_range 297:5-297:29 # ^^^^^^ reference [..] T14#M1#`@f`. end module M2 # ^^ definition [..] T14#M2# +# enclosing_range 300:3-303:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T14#M0# @@ -623,17 +774,21 @@ module M2 class C # ^ definition [..] T14#C# +# enclosing_range 305:3-309:6 include M2 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T14#M2# # ^^ reference [..] T14#M2# def set_f_3; @f = 3; end # ^^^^^^^ definition [..] T14#C#set_f_3(). +# enclosing_range 307:5-307:29 # ^^ definition [..] T14#C#`@f`. +# enclosing_range 307:5-307:29 # relation reference=[..] T14#M0#`@f`. reference=[..] T14#M1#`@f`. # ^^^^^^ reference [..] T14#C#`@f`. def get_f; @f; end # ^^^^^ definition [..] T14#C#get_f(). +# enclosing_range 308:5-308:23 # ^^ reference [..] T14#C#`@f`. end end @@ -642,24 +797,32 @@ def get_f; @f; end module T15 # ^^^ definition [..] T15# +# enclosing_range 314:1-332:4 module M0 # ^^ definition [..] T15#M0# +# enclosing_range 315:3-317:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T15#M0#set_f_0(). +# enclosing_range 316:5-316:29 # ^^ definition [..] T15#M0#`@f`. +# enclosing_range 316:5-316:29 # ^^^^^^ reference [..] T15#M0#`@f`. end module M1 # ^^ definition [..] T15#M1# +# enclosing_range 319:3-321:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T15#M1#set_f_1(). +# enclosing_range 320:5-320:29 # ^^ definition [..] T15#M1#`@f`. +# enclosing_range 320:5-320:29 # ^^^^^^ reference [..] T15#M1#`@f`. end module M2 # ^^ definition [..] T15#M2# +# enclosing_range 323:3-326:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T15#M0# @@ -672,12 +835,14 @@ module M2 class C # ^ definition [..] T15#C# +# enclosing_range 328:3-331:6 include M2 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T15#M2# # ^^ reference [..] T15#M2# def get_f; @f; end # ^^^^^ definition [..] T15#C#get_f(). +# enclosing_range 330:5-330:23 # ^^ reference [..] T15#C#`@f`. end end @@ -686,24 +851,32 @@ def get_f; @f; end module T16 # ^^^ definition [..] T16# +# enclosing_range 336:1-351:4 module M0 # ^^ definition [..] T16#M0# +# enclosing_range 337:3-339:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T16#M0#set_f_0(). +# enclosing_range 338:5-338:29 # ^^ definition [..] T16#M0#`@f`. +# enclosing_range 338:5-338:29 # ^^^^^^ reference [..] T16#M0#`@f`. end module M1 # ^^ definition [..] T16#M1# +# enclosing_range 341:3-343:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T16#M1#set_f_1(). +# enclosing_range 342:5-342:29 # ^^ definition [..] T16#M1#`@f`. +# enclosing_range 342:5-342:29 # ^^^^^^ reference [..] T16#M1#`@f`. end class C # ^ definition [..] T16#C# +# enclosing_range 345:3-350:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T16#M0# @@ -714,11 +887,14 @@ class C # ^^ reference [..] T16#M1# def set_f_2; @f = 2; end # ^^^^^^^ definition [..] T16#C#set_f_2(). +# enclosing_range 348:5-348:29 # ^^ definition [..] T16#C#`@f`. +# enclosing_range 348:5-348:29 # relation reference=[..] T16#M0#`@f`. reference=[..] T16#M1#`@f`. # ^^^^^^ reference [..] T16#C#`@f`. def get_f; @f; end # ^^^^^ definition [..] T16#C#get_f(). +# enclosing_range 349:5-349:23 # ^^ reference [..] T16#C#`@f`. end end @@ -727,24 +903,32 @@ def get_f; @f; end module T17 # ^^^ definition [..] T17# +# enclosing_range 355:1-369:4 module M0 # ^^ definition [..] T17#M0# +# enclosing_range 356:3-358:6 def set_f_0; @f = 0; end # ^^^^^^^ definition [..] T17#M0#set_f_0(). +# enclosing_range 357:5-357:29 # ^^ definition [..] T17#M0#`@f`. +# enclosing_range 357:5-357:29 # ^^^^^^ reference [..] T17#M0#`@f`. end module M1 # ^^ definition [..] T17#M1# +# enclosing_range 360:3-362:6 def set_f_1; @f = 1; end # ^^^^^^^ definition [..] T17#M1#set_f_1(). +# enclosing_range 361:5-361:29 # ^^ definition [..] T17#M1#`@f`. +# enclosing_range 361:5-361:29 # ^^^^^^ reference [..] T17#M1#`@f`. end class C # ^ definition [..] T17#C# +# enclosing_range 364:3-368:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] T17#M0# @@ -755,6 +939,7 @@ class C # ^^ reference [..] T17#M1# def get_f; @f; end # ^^^^^ definition [..] T17#C#get_f(). +# enclosing_range 367:5-367:23 # ^^ reference [..] T17#C#`@f`. end end @@ -767,22 +952,28 @@ def get_f; @f; end module W0 # ^^ definition [..] W0# +# enclosing_range 377:1-386:4 module M # ^ definition [..] W0#M# +# enclosing_range 378:3-380:6 def get_f; @f; end # ^^^^^ definition [..] W0#M#get_f(). +# enclosing_range 379:5-379:23 # ^^ reference [..] W0#M#`@f`. end class C # ^ definition [..] W0#C# +# enclosing_range 382:3-385:6 include M # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] W0#M# # ^ reference [..] W0#M# def set_f; @f = 0; end # ^^^^^ definition [..] W0#C#set_f(). +# enclosing_range 384:5-384:27 # ^^ definition [..] W0#C#`@f`. +# enclosing_range 384:5-384:27 # relation reference=[..] W0#M#`@f`. # ^^^^^^ reference [..] W0#C#`@f`. end @@ -792,15 +983,19 @@ def set_f; @f = 0; end module W1 # ^^ definition [..] W1# +# enclosing_range 390:1-403:4 module M0 # ^^ definition [..] W1#M0# +# enclosing_range 391:3-393:6 def get_f; @f; end # ^^^^^ definition [..] W1#M0#get_f(). +# enclosing_range 392:5-392:23 # ^^ reference [..] W1#M0#`@f`. end module M1 # ^^ definition [..] W1#M1# +# enclosing_range 395:3-397:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] W1#M0# @@ -809,13 +1004,16 @@ module M1 class C # ^ definition [..] W1#C# +# enclosing_range 399:3-402:6 include M1 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] W1#M1# # ^^ reference [..] W1#M1# def set_f; @f = 0; end # ^^^^^ definition [..] W1#C#set_f(). +# enclosing_range 401:5-401:27 # ^^ definition [..] W1#C#`@f`. +# enclosing_range 401:5-401:27 # relation reference=[..] W1#M0#`@f`. # ^^^^^^ reference [..] W1#C#`@f`. end @@ -825,23 +1023,30 @@ def set_f; @f = 0; end module W2 # ^^ definition [..] W2# +# enclosing_range 407:1-420:4 module M # ^ definition [..] W2#M# +# enclosing_range 408:3-410:6 def set_f; @f = 0; end # ^^^^^ definition [..] W2#M#set_f(). +# enclosing_range 409:5-409:27 # ^^ definition [..] W2#M#`@f`. +# enclosing_range 409:5-409:27 # ^^^^^^ reference [..] W2#M#`@f`. end class C0 # ^^ definition [..] W2#C0# +# enclosing_range 412:3-414:6 def get_f; @f; end # ^^^^^ definition [..] W2#C0#get_f(). +# enclosing_range 413:5-413:23 # ^^ reference [..] W2#C0#`@f`. end class C1 < C0 # ^^ definition [..] W2#C1# +# enclosing_range 416:3-419:6 # ^^ reference [..] W2#C0# include M # ^^^^^^^ reference [..] Module#include(). @@ -849,6 +1054,7 @@ class C1 < C0 # ^ reference [..] W2#M# def get_fp1; @f + 1; end # ^^^^^^^ definition [..] W2#C1#get_fp1(). +# enclosing_range 418:5-418:29 # ^^ reference [..] W2#C1#`@f`. # relation definition=[..] W2#C0#`@f`. reference=[..] W2#M#`@f`. end @@ -858,23 +1064,30 @@ def get_fp1; @f + 1; end module W3 # ^^ definition [..] W3# +# enclosing_range 424:1-437:4 module M # ^ definition [..] W3#M# +# enclosing_range 425:3-427:6 def get_f; @f; end # ^^^^^ definition [..] W3#M#get_f(). +# enclosing_range 426:5-426:23 # ^^ reference [..] W3#M#`@f`. end class C0 # ^^ definition [..] W3#C0# +# enclosing_range 429:3-431:6 def set_f; @f = 0; end # ^^^^^ definition [..] W3#C0#set_f(). +# enclosing_range 430:5-430:27 # ^^ definition [..] W3#C0#`@f`. +# enclosing_range 430:5-430:27 # ^^^^^^ reference [..] W3#C0#`@f`. end class C1 < C0 # ^^ definition [..] W3#C1# +# enclosing_range 433:3-436:6 # ^^ reference [..] W3#C0# include M # ^^^^^^^ reference [..] Module#include(). @@ -882,6 +1095,7 @@ class C1 < C0 # ^ reference [..] W3#M# def get_fp1; @f + 1; end # ^^^^^^^ definition [..] W3#C1#get_fp1(). +# enclosing_range 435:5-435:29 # ^^ reference [..] W3#C1#`@f`. # relation definition=[..] W3#C0#`@f`. reference=[..] W3#M#`@f`. end @@ -891,34 +1105,42 @@ def get_fp1; @f + 1; end module W4 # ^^ definition [..] W4# +# enclosing_range 441:1-455:4 module M0 # ^^ definition [..] W4#M0# +# enclosing_range 442:3-444:6 def get_f; @f; end # ^^^^^ definition [..] W4#M0#get_f(). +# enclosing_range 443:5-443:23 # ^^ reference [..] W4#M0#`@f`. end module M1 # ^^ definition [..] W4#M1# +# enclosing_range 446:3-449:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] W4#M0# # ^^ reference [..] W4#M0# def set_f; @f = 0; end # ^^^^^ definition [..] W4#M1#set_f(). +# enclosing_range 448:5-448:27 # ^^ definition [..] W4#M1#`@f`. +# enclosing_range 448:5-448:27 # relation reference=[..] W4#M0#`@f`. # ^^^^^^ reference [..] W4#M1#`@f`. end class C # ^ definition [..] W4#C# +# enclosing_range 451:3-454:6 include M1 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] W4#M1# # ^^ reference [..] W4#M1# def get_fp1; @f + 1; end # ^^^^^^^ definition [..] W4#C#get_fp1(). +# enclosing_range 453:5-453:29 # ^^ reference [..] W4#C#`@f`. end end @@ -927,22 +1149,28 @@ def get_fp1; @f + 1; end module W5 # ^^ definition [..] W5# +# enclosing_range 459:1-473:4 module M0 # ^^ definition [..] W5#M0# +# enclosing_range 460:3-462:6 def get_f; @f; end # ^^^^^ definition [..] W5#M0#get_f(). +# enclosing_range 461:5-461:23 # ^^ reference [..] W5#M0#`@f`. end module M1 # ^^ definition [..] W5#M1# +# enclosing_range 464:3-466:6 def set_f; @f + 1; end # ^^^^^ definition [..] W5#M1#set_f(). +# enclosing_range 465:5-465:27 # ^^ reference [..] W5#M1#`@f`. end class C # ^ definition [..] W5#C# +# enclosing_range 468:3-472:6 include M0 # ^^^^^^^ reference [..] Module#include(). # ^^ reference [..] W5#M0# @@ -953,6 +1181,7 @@ class C # ^^ reference [..] W5#M1# def get_fp1; @f + 1; end # ^^^^^^^ definition [..] W5#C#get_fp1(). +# enclosing_range 471:5-471:29 # ^^ reference [..] W5#C#`@f`. end end diff --git a/test/scip/testdata/module_function.snapshot.rb b/test/scip/testdata/module_function.snapshot.rb index 2379b31e5..b508fcfa1 100644 --- a/test/scip/testdata/module_function.snapshot.rb +++ b/test/scip/testdata/module_function.snapshot.rb @@ -2,13 +2,16 @@ module M # ^ definition [..] M# +# enclosing_range 3:1-10:4 sig { returns(T::Boolean) } # ^^^^^^^ reference [..] T#Boolean. def b # ^ definition [..] M#b(). +# enclosing_range 5:3-7:6 true end module_function :b # ^^ definition [..] ``#b(). +# enclosing_range 9:3-9:21 end diff --git a/test/scip/testdata/multifile/basic/def_class1.snapshot.rb b/test/scip/testdata/multifile/basic/def_class1.snapshot.rb index 16c892df6..fa2cedc0f 100644 --- a/test/scip/testdata/multifile/basic/def_class1.snapshot.rb +++ b/test/scip/testdata/multifile/basic/def_class1.snapshot.rb @@ -2,6 +2,7 @@ class C1 # ^^ definition [..] C1# +# enclosing_range 3:1-10:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). @@ -9,6 +10,7 @@ class C1 # ^^^^^^^ reference [..] T#Boolean. def m1 # ^^ definition [..] C1#m1(). +# enclosing_range 7:3-9:6 true end end diff --git a/test/scip/testdata/multifile/basic/use_class1.snapshot.rb b/test/scip/testdata/multifile/basic/use_class1.snapshot.rb index bb390c6f6..40a9bdea0 100644 --- a/test/scip/testdata/multifile/basic/use_class1.snapshot.rb +++ b/test/scip/testdata/multifile/basic/use_class1.snapshot.rb @@ -6,6 +6,7 @@ b = C1.new.m1 #^ definition local 2$119448696 +#enclosing_range 4:1-6:14 #documentation #| ```ruby #| b (T::Boolean) diff --git a/test/scip/testdata/multifile/gem-map/current.snapshot.rb b/test/scip/testdata/multifile/gem-map/current.snapshot.rb index 364a9650b..545d06610 100644 --- a/test/scip/testdata/multifile/gem-map/current.snapshot.rb +++ b/test/scip/testdata/multifile/gem-map/current.snapshot.rb @@ -9,6 +9,7 @@ def h() # ^ definition my_current_gem 2 Object#h(). +# enclosing_range 8:1-11:4 f() # ^ reference my_downstream_gem 1 Object#f(). g() diff --git a/test/scip/testdata/multifile/gem-map/downstream.snapshot.rb b/test/scip/testdata/multifile/gem-map/downstream.snapshot.rb index 303ffee6c..d9ac03b82 100644 --- a/test/scip/testdata/multifile/gem-map/downstream.snapshot.rb +++ b/test/scip/testdata/multifile/gem-map/downstream.snapshot.rb @@ -5,6 +5,7 @@ def f() # ^ definition my_downstream_gem 1 Object#f(). +# enclosing_range 5:1-7:4 g() # ^ reference my_upstream_gem 1 Object#g(). end diff --git a/test/scip/testdata/multifile/gem-map/upstream.snapshot.rb b/test/scip/testdata/multifile/gem-map/upstream.snapshot.rb index bbd3ebc72..025f350b2 100644 --- a/test/scip/testdata/multifile/gem-map/upstream.snapshot.rb +++ b/test/scip/testdata/multifile/gem-map/upstream.snapshot.rb @@ -2,6 +2,7 @@ def g() # ^ definition my_upstream_gem 1 Object#g(). +# enclosing_range 3:1-5:4 puts 'Hello' # ^^^^ reference [..] Kernel#puts(). end diff --git a/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rb b/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rb index 465299164..9444a8c14 100644 --- a/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rb +++ b/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rb @@ -2,8 +2,10 @@ module CurrentGem # ^^^^^^^^^^ definition currentgem 77 CurrentGem# +# enclosing_range 3:1-7:4 def gem_fun # ^^^^^^^ definition currentgem 77 CurrentGem#gem_fun(). +# enclosing_range 4:3-6:6 puts 'Hello World' end end diff --git a/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rbi index 59cca356c..4ad882dc4 100644 --- a/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/current_gem.snapshot.rbi @@ -2,6 +2,8 @@ module CurrentGem # ^^^^^^^^^^ definition currentgem 77 CurrentGem# +# enclosing_range 3:1-5:4 def gem_fun; end # ^^^^^^^ definition currentgem 77 CurrentGem#gem_fun(). +# enclosing_range 4:3-4:19 end diff --git a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/annotations/annotgem.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/annotations/annotgem.snapshot.rbi index d9a52306a..fb0e7312b 100644 --- a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/annotations/annotgem.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/annotations/annotgem.snapshot.rbi @@ -2,6 +2,8 @@ module AnnotGem # ^^^^^^^^ definition annotgem latest AnnotGem# +# enclosing_range 3:1-5:4 def annot_fun; end # ^^^^^^^^^ definition annotgem latest AnnotGem#annot_fun(). +# enclosing_range 4:3-4:21 end diff --git a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/dsl/railsgem.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/dsl/railsgem.snapshot.rbi index 0e760635a..f21cc6291 100644 --- a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/dsl/railsgem.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/dsl/railsgem.snapshot.rbi @@ -2,6 +2,8 @@ module DSLGem # ^^^^^^ definition railsgem latest DSLGem# +# enclosing_range 3:1-5:4 def create; end # ^^^^^^ definition railsgem latest DSLGem#create(). +# enclosing_range 4:3-4:18 end diff --git a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/gems/extgem@99.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/gems/extgem@99.snapshot.rbi index e91677376..bf31056c9 100644 --- a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/gems/extgem@99.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/gems/extgem@99.snapshot.rbi @@ -2,6 +2,8 @@ module ExternalGem # ^^^^^^^^^^^ definition extgem 99 ExternalGem# +# enclosing_range 3:1-5:4 def ext_fun; end # ^^^^^^^ definition extgem 99 ExternalGem#ext_fun(). +# enclosing_range 4:3-4:19 end diff --git a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/hidden-definitions/hidden.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/hidden-definitions/hidden.snapshot.rbi index e88989fa7..bb820c0b6 100644 --- a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/hidden-definitions/hidden.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/hidden-definitions/hidden.snapshot.rbi @@ -2,6 +2,8 @@ module Hidden # ^^^^^^ definition currentgem 77 Hidden# +# enclosing_range 3:1-5:4 def hidden_fun; end # ^^^^^^^^^^ definition currentgem 77 Hidden#hidden_fun(). +# enclosing_range 4:3-4:22 end diff --git a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/todo.snapshot.rbi b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/todo.snapshot.rbi index 0b9070ad3..bc71566c9 100644 --- a/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/todo.snapshot.rbi +++ b/test/scip/testdata/multifile/infer-gem-map/sorbet/rbi/todo.snapshot.rbi @@ -2,7 +2,9 @@ module TODO # ^^^^ definition currentgem 77 TODO# +# enclosing_range 3:1-5:4 TODO_CONSTANT = 1 # ^^^^^^^^^^^^^ definition currentgem 77 TODO#TODO_CONSTANT. +# enclosing_range 3:1-3:12 # ^^^^^^^^^^^^^^^^^ reference currentgem 77 TODO#TODO_CONSTANT. end diff --git a/test/scip/testdata/multifile/typed-false-mix/def_untyped.snapshot.rb b/test/scip/testdata/multifile/typed-false-mix/def_untyped.snapshot.rb index 774540908..df59ed151 100644 --- a/test/scip/testdata/multifile/typed-false-mix/def_untyped.snapshot.rb +++ b/test/scip/testdata/multifile/typed-false-mix/def_untyped.snapshot.rb @@ -2,4 +2,5 @@ class C # ^ definition [..] C# +# enclosing_range 3:1-4:4 end diff --git a/test/scip/testdata/multifile/typed-false-mix/use_untyped.snapshot.rb b/test/scip/testdata/multifile/typed-false-mix/use_untyped.snapshot.rb index 8f20caae1..ce1e2224b 100644 --- a/test/scip/testdata/multifile/typed-false-mix/use_untyped.snapshot.rb +++ b/test/scip/testdata/multifile/typed-false-mix/use_untyped.snapshot.rb @@ -5,8 +5,10 @@ module N # ^ definition [..] N# +# enclosing_range 5:1-8:4 class D < C # ^ definition [..] N#D# +# enclosing_range 6:3-7:6 # ^ reference [..] C# end end diff --git a/test/scip/testdata/non_existent.snapshot.rb b/test/scip/testdata/non_existent.snapshot.rb index 4afe92e57..bddda870d 100644 --- a/test/scip/testdata/non_existent.snapshot.rb +++ b/test/scip/testdata/non_existent.snapshot.rb @@ -2,9 +2,11 @@ class D # ^ definition [..] D# +# enclosing_range 3:1-4:4 end class C < ::D # ^ definition [..] C# +# enclosing_range 6:1-7:4 # ^ reference [..] D# end diff --git a/test/scip/testdata/opus.snapshot.rb b/test/scip/testdata/opus.snapshot.rb index 701607717..beb900ca2 100644 --- a/test/scip/testdata/opus.snapshot.rb +++ b/test/scip/testdata/opus.snapshot.rb @@ -3,17 +3,20 @@ class Opus::Base # ^^^^ reference [..] Opus# # ^^^^ definition [..] Opus#Base# +# enclosing_range 3:1-4:4 end class Opus::Derived < Opus::Base # ^^^^ reference [..] Opus# # ^^^^^^^ definition [..] Opus#Derived# +# enclosing_range 6:1-7:4 # ^^^^ reference [..] Opus# # ^^^^ reference [..] Opus#Base# end TYPES = T.let({ derived: -> { Opus::Derived } }, T::Hash[Symbol, T.proc.returns(T.class_of(Opus::Base))]) #^^^^^ definition [..] TYPES. +#enclosing_range 3:1-17:4 # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). # ^^^^ reference [..] Opus# @@ -28,12 +31,15 @@ class Opus::Derived < Opus::Base # ^^^^ reference [..] Opus# # ^^^^ reference [..] Opus#Base# # ^^^^^^^ definition local 4$119448696 +# enclosing_range 3:1-17:4 # ^^^^^^^^ reference [..] TYPES. module ABC # ^^^ definition [..] ABC# +# enclosing_range 11:1-13:4 TYPES_IN_MODULE = T.let({ derived: -> { Opus::Derived } }, T::Hash[Symbol, T.proc.returns(T.class_of(Opus::Base))]) # ^^^^^^^^^^^^^^^ definition [..] ABC#TYPES_IN_MODULE. +# enclosing_range 11:1-11:11 # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). # ^^^^ reference [..] Opus# @@ -42,13 +48,16 @@ module ABC # ^^^^ reference [..] Opus# # ^^^^ reference [..] Opus#Base# # ^^^^^^^ definition local 4$119448696 +# enclosing_range 11:1-11:11 # ^^^^^^^^ reference [..] ABC#TYPES_IN_MODULE. end class Other # ^^^^^ definition [..] Other# +# enclosing_range 15:1-17:4 TYPES_IN_CLASS = T.let({ derived: -> { Opus::Derived } }, T::Hash[Symbol, T.proc.returns(T.class_of(Opus::Base))]) # ^^^^^^^^^^^^^^ definition [..] Other#TYPES_IN_CLASS. +# enclosing_range 15:1-15:12 # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). # ^^^^ reference [..] Opus# @@ -57,5 +66,6 @@ class Other # ^^^^ reference [..] Opus# # ^^^^ reference [..] Opus#Base# # ^^^^^^^ definition local 4$119448696 +# enclosing_range 15:1-15:12 # ^^^^^^^^ reference [..] Other#TYPES_IN_CLASS. end diff --git a/test/scip/testdata/prop.snapshot.rb b/test/scip/testdata/prop.snapshot.rb index 1b7e7c432..e5a2369db 100644 --- a/test/scip/testdata/prop.snapshot.rb +++ b/test/scip/testdata/prop.snapshot.rb @@ -2,6 +2,7 @@ class SomeODM # ^^^^^^^ definition [..] SomeODM# +# enclosing_range 3:1-13:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). include T::Props @@ -11,17 +12,21 @@ class SomeODM prop :foo, String # ^^^ definition [..] SomeODM#`foo=`(). +# enclosing_range 7:5-7:22 # ^^^ definition [..] SomeODM#foo(). +# enclosing_range 7:5-7:22 # ^^^^^^ reference [..] String# sig {returns(T.nilable(String))} # ^^^^^^ reference [..] String# def foo2; T.cast(T.unsafe(nil), T.nilable(String)); end # ^^^^ definition [..] SomeODM#foo2(). +# enclosing_range 10:5-10:60 # ^ reference [..] T# # ^^^^^^ reference [..] ``#unsafe(). # ^ reference [..] T# # ^^^^^^^^^^^^^^^^^ definition local 1$1867563647 +# enclosing_range 10:5-10:60 # ^^^^^^^ reference [..] ``#nilable(). # ^^^^^^ reference [..] String# sig {params(arg0: String).returns(String)} @@ -29,61 +34,83 @@ def foo2; T.cast(T.unsafe(nil), T.nilable(String)); end # ^^^^^^ reference [..] String# def foo2=(arg0); T.cast(nil, String); end # ^^^^^ definition [..] SomeODM#`foo2=`(). +# enclosing_range 12:5-12:46 # ^^^^^^ definition local 1$2116144614 +# enclosing_range 12:5-12:46 # ^^^^^^ reference [..] String# end class ForeignClass # ^^^^^^^^^^^^ definition [..] ForeignClass# +# enclosing_range 15:1-16:4 end class AdvancedODM # ^^^^^^^^^^^ definition [..] AdvancedODM# +# enclosing_range 18:1-41:4 include T::Props # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T# # ^^^^^ reference [..] T#Props# prop :default, String, default: "" # ^^^^^^^ definition [..] AdvancedODM#`default=`(). +# enclosing_range 20:5-20:39 # ^^^^^^^ definition [..] AdvancedODM#default(). +# enclosing_range 20:5-20:39 # ^^^^^^ reference [..] String# prop :t_nilable, T.nilable(String) # ^^^^^^^^^ definition [..] AdvancedODM#`t_nilable=`(). +# enclosing_range 21:5-21:39 # ^^^^^^^^^ definition [..] AdvancedODM#t_nilable(). +# enclosing_range 21:5-21:39 # ^^^^^^ reference [..] String# prop :array, Array # ^^^^^ definition [..] AdvancedODM#`array=`(). +# enclosing_range 23:5-23:23 # ^^^^^ definition [..] AdvancedODM#array(). +# enclosing_range 23:5-23:23 # ^^^^^ reference [..] Array# prop :t_array, T::Array[String] # ^^^^^^^ definition [..] AdvancedODM#`t_array=`(). +# enclosing_range 24:5-24:36 # ^^^^^^^ definition [..] AdvancedODM#t_array(). +# enclosing_range 24:5-24:36 # ^^^^^^ reference [..] String# prop :hash_of, T::Hash[Symbol, String] # ^^^^^^^ definition [..] AdvancedODM#`hash_of=`(). +# enclosing_range 25:5-25:43 # ^^^^^^^ definition [..] AdvancedODM#hash_of(). +# enclosing_range 25:5-25:43 # ^^^^^^ reference [..] Symbol# # ^^^^^^ reference [..] String# prop :const_explicit, String, immutable: true # ^^^^^^^^^^^^^^ definition [..] AdvancedODM#const_explicit(). +# enclosing_range 27:5-27:50 # ^^^^^^ reference [..] String# const :const, String # ^^^^^ definition [..] AdvancedODM#const(). +# enclosing_range 28:5-28:25 # ^^^^^^ reference [..] String# prop :enum_prop, String, enum: ["hello", "goodbye"] # ^^^^^^^^^ definition [..] AdvancedODM#`enum_prop=`(). +# enclosing_range 30:5-30:56 # ^^^^^^^^^ definition [..] AdvancedODM#enum_prop(). +# enclosing_range 30:5-30:56 # ^^^^^^ reference [..] String# prop :foreign_lazy, String, foreign: -> {ForeignClass} # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] T#Boolean. # ^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_lazy=`(). +# enclosing_range 32:5-32:59 # ^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_lazy_!`(). +# enclosing_range 32:5-32:59 # ^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_lazy(). +# enclosing_range 32:5-32:59 # ^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_lazy_(). +# enclosing_range 32:5-32:59 # ^^^^^^ reference [..] String# # ^^ reference [..] Kernel# # ^^ reference [..] Kernel#lambda(). @@ -91,85 +118,115 @@ class AdvancedODM prop :foreign_proc, String, foreign: proc {ForeignClass} # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] T#Boolean. # ^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_proc=`(). +# enclosing_range 33:5-33:61 # ^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_proc_!`(). +# enclosing_range 33:5-33:61 # ^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_proc(). +# enclosing_range 33:5-33:61 # ^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_proc_(). +# enclosing_range 33:5-33:61 # ^^^^^^ reference [..] String# # ^^^^ reference [..] Kernel#proc(). # ^^^^^^^^^^^^ reference [..] ForeignClass# prop :foreign_invalid, String, foreign: proc { :not_a_type } # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] T#Boolean. # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_invalid=`(). +# enclosing_range 34:5-34:65 # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#`foreign_invalid_!`(). +# enclosing_range 34:5-34:65 # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_invalid(). +# enclosing_range 34:5-34:65 # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#foreign_invalid_(). +# enclosing_range 34:5-34:65 # ^^^^^^ reference [..] String# # ^^^^ reference [..] Kernel#proc(). prop :ifunset, String, ifunset: '' # ^^^^^^^ definition [..] AdvancedODM#`ifunset=`(). +# enclosing_range 36:5-36:39 # ^^^^^^^ definition [..] AdvancedODM#ifunset(). +# enclosing_range 36:5-36:39 # ^^^^^^ reference [..] String# prop :ifunset_nilable, T.nilable(String), ifunset: '' # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#`ifunset_nilable=`(). +# enclosing_range 37:5-37:58 # ^^^^^^^^^^^^^^^ definition [..] AdvancedODM#ifunset_nilable(). +# enclosing_range 37:5-37:58 # ^^^^^^ reference [..] String# prop :empty_hash_rules, String, {} # ^^^^^^^^^^^^^^^^ definition [..] AdvancedODM#`empty_hash_rules=`(). +# enclosing_range 39:5-39:39 # ^^^^^^^^^^^^^^^^ definition [..] AdvancedODM#empty_hash_rules(). +# enclosing_range 39:5-39:39 # ^^^^^^ reference [..] String# prop :hash_rules, String, { enum: ["hello", "goodbye" ] } # ^^^^^^^^^^ definition [..] AdvancedODM#`hash_rules=`(). +# enclosing_range 40:5-40:62 # ^^^^^^^^^^ definition [..] AdvancedODM#hash_rules(). +# enclosing_range 40:5-40:62 # ^^^^^^ reference [..] String# end class PropHelpers # ^^^^^^^^^^^ definition [..] PropHelpers# +# enclosing_range 43:1-49:4 include T::Props # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T# # ^^^^^ reference [..] T#Props# def self.token_prop(opts={}); end # ^^^^^^^^^^ definition [..] ``#token_prop(). +# enclosing_range 45:3-45:36 def self.created_prop(opts={}); end # ^^^^^^^^^^^^ definition [..] ``#created_prop(). +# enclosing_range 46:3-46:38 token_prop # ^^^^^ definition [..] PropHelpers#`token=`(). +# enclosing_range 47:3-47:13 # ^^^^^ definition [..] PropHelpers#token(). +# enclosing_range 47:3-47:13 # ^^^^^^^^^^ reference [..] ``#token_prop(). # ^^^^^^^^^^ reference [..] String# created_prop # ^^^^^^^ definition [..] PropHelpers#`created=`(). +# enclosing_range 48:3-48:15 # ^^^^^^^ definition [..] PropHelpers#created(). +# enclosing_range 48:3-48:15 # ^^^^^^^^^^^^ reference [..] ``#created_prop(). # ^^^^^^^^^^^^ reference [..] Float# end class PropHelpers2 # ^^^^^^^^^^^^ definition [..] PropHelpers2# +# enclosing_range 51:1-57:4 include T::Props # ^^^^^^^ reference [..] Module#include(). # ^ reference [..] T# # ^^^^^ reference [..] T#Props# def self.timestamped_token_prop(opts={}); end # ^^^^^^^^^^^^^^^^^^^^^^ definition [..] ``#timestamped_token_prop(). +# enclosing_range 53:3-53:48 def self.created_prop(opts={}); end # ^^^^^^^^^^^^ definition [..] ``#created_prop(). +# enclosing_range 54:3-54:38 timestamped_token_prop # ^^^^^^^^^^^^^^^^^^^^^^ reference [..] ``#timestamped_token_prop(). # ^^^^^^^^^^^^^^^^^^^^^^ reference [..] String# # ^^^^^ definition [..] PropHelpers2#`token=`(). +# enclosing_range 55:3-55:25 # ^^^^^ definition [..] PropHelpers2#token(). +# enclosing_range 55:3-55:25 created_prop(immutable: true) # ^^^^^^^^^^^^ reference [..] ``#created_prop(). # ^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] PropHelpers2#created(). +# enclosing_range 56:3-56:32 # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference [..] Float# end def main # ^^^^ definition [..] Object#main(). +# enclosing_range 59:1-105:4 SomeODM.new.foo # ^^^^^^^ reference [..] SomeODM# # ^^^ reference [..] Class#new(). diff --git a/test/scip/testdata/rescue.snapshot.rb b/test/scip/testdata/rescue.snapshot.rb index 31ee8b619..7130741f0 100644 --- a/test/scip/testdata/rescue.snapshot.rb +++ b/test/scip/testdata/rescue.snapshot.rb @@ -2,12 +2,15 @@ class MyError < StandardError # ^^^^^^^ definition [..] MyError# +# enclosing_range 3:1-4:4 # ^^^^^^^^^^^^^ reference [..] StandardError# end def handle(e) # ^^^^^^ definition [..] Object#handle(). +# enclosing_range 6:1-8:4 # ^ definition local 1$780127187 +# enclosing_range 6:1-8:4 puts e.inspect.to_s # ^^^^ reference [..] Kernel#puts(). # ^ reference local 1$780127187 @@ -17,18 +20,21 @@ def handle(e) def f # ^ definition [..] Object#f(). +# enclosing_range 10:1-18:4 begin raise 'This exception will be rescued!' # ^^^^^ reference [..] Kernel#raise(). rescue MyError => e1 # ^^^^^^^ reference [..] MyError# # ^^ definition local 2$3809224601 +# enclosing_range 10:1-18:4 handle(e1) # ^^^^^^ reference [..] Object#handle(). # ^^ reference local 2$3809224601 rescue StandardError => e2 # ^^^^^^^^^^^^^ reference [..] StandardError# # ^^ definition local 4$3809224601 +# enclosing_range 10:1-18:4 handle(e2) # ^^^^^^ reference [..] Object#handle(). # ^^ reference local 4$3809224601 diff --git a/test/scip/testdata/singleton.snapshot.rb b/test/scip/testdata/singleton.snapshot.rb index 818fec3a9..6e4a3d34d 100644 --- a/test/scip/testdata/singleton.snapshot.rb +++ b/test/scip/testdata/singleton.snapshot.rb @@ -2,6 +2,7 @@ class A # ^ definition [..] A# +# enclosing_range 3:1-5:4 include Singleton # ^^^^^^^ reference [..] Module#include(). # ^^^^^^^^^ reference [..] Singleton# @@ -11,10 +12,12 @@ class A # Singleton supports inheritance, turning the sub-class into a singleton as well. class B < A; end # ^ definition [..] B# +# enclosing_range 8:1-8:17 # ^ reference [..] A# class C # ^ definition [..] C# +# enclosing_range 10:1-14:4 include Singleton # ^^^^^^^ reference [..] Module#include(). # ^^^^^^^^^ reference [..] Singleton# @@ -26,6 +29,7 @@ class C def f # ^ definition [..] Object#f(). +# enclosing_range 16:1-18:4 return [A.instance, B.instance, C.instance] # ^ reference [..] A# # ^^^^^^^^ reference [..] Singleton#SingletonClassMethods#instance(). diff --git a/test/scip/testdata/struct.snapshot.rb b/test/scip/testdata/struct.snapshot.rb index cea90ceb5..713a7720d 100644 --- a/test/scip/testdata/struct.snapshot.rb +++ b/test/scip/testdata/struct.snapshot.rb @@ -3,29 +3,38 @@ # From Sorbet docs https://sorbet.org/docs/tstruct class S < T::Struct # ^ definition [..] S# +# enclosing_range 4:1-8:4 # ^ definition [..] S#initialize(). +# enclosing_range 4:1-8:4 # ^ reference [..] T# # ^^^^^^ reference [..] T#Struct# prop :prop_i, Integer # ^^^^^^ definition [..] S#`prop_i=`(). +# enclosing_range 5:3-5:24 # ^^^^^^ definition [..] S#prop_i(). +# enclosing_range 5:3-5:24 # ^^^^^^^ reference [..] Integer# const :const_s, T.nilable(String) # ^^^^^^^ definition [..] S#const_s(). +# enclosing_range 6:3-6:36 # ^^^^^^ reference [..] String# const :const_f, Float, default: 0.5 # ^^^^^^^ definition [..] S#const_f(). +# enclosing_range 7:3-7:38 # ^^^^^ reference [..] Float# end def f # ^ definition [..] Object#f(). +# enclosing_range 10:1-15:4 s = S.new(prop_i: 3) # ^ definition local 1$3809224601 +# enclosing_range 10:1-15:4 # ^ reference [..] S# # ^^^ reference [..] Class#new(). _ = s.prop_i.to_s + s.const_s + s.const_f.to_s + s.serialize.to_s # ^ definition local 3$3809224601 +# enclosing_range 10:1-15:4 # ^ reference local 1$3809224601 # ^^^^^^ reference [..] S#prop_i(). # ^^^^ reference [..] Integer#to_s(). @@ -49,15 +58,22 @@ def f POINT = Struct.new(:x, :y) do #^^^^^ reference [..] POINT# #^^^^^ definition [..] POINT# +#enclosing_range 17:1-21:4 #^^^^^ definition [..] POINT# +#enclosing_range 17:1-21:4 # ^ definition [..] POINT#`x=`(). +# enclosing_range 17:21-17:22 # ^ definition [..] POINT#x(). +# enclosing_range 17:21-17:22 # ^ reference [..] BasicObject# # ^ definition [..] POINT#`y=`(). +# enclosing_range 17:25-17:26 # ^ definition [..] POINT#y(). +# enclosing_range 17:25-17:26 # ^ reference [..] BasicObject# def array # ^^^^^ definition [..] POINT#array(). +# enclosing_range 18:3-20:6 [x, y] # ^ reference [..] POINT#x(). # ^ reference [..] POINT#y(). @@ -66,16 +82,20 @@ def array def g # ^ definition [..] Object#g(). +# enclosing_range 23:1-28:4 p = POINT.new(0, 1) # ^ definition local 1$3792446982 +# enclosing_range 23:1-28:4 # ^^^^^ reference [..] POINT# # ^^^ reference [..] Class#new(). a = p.array # ^ definition local 3$3792446982 +# enclosing_range 23:1-28:4 # ^ reference local 1$3792446982 # ^^^^^ reference [..] POINT#array(). px = p.x # ^^ definition local 4$3792446982 +# enclosing_range 23:1-28:4 # ^ reference local 1$3792446982 # ^ reference [..] POINT#x(). return diff --git a/test/scip/testdata/test_case.snapshot.rb b/test/scip/testdata/test_case.snapshot.rb index 8c5637d1c..d97b18f06 100644 --- a/test/scip/testdata/test_case.snapshot.rb +++ b/test/scip/testdata/test_case.snapshot.rb @@ -3,10 +3,12 @@ class ActiveSupport::TestCase # ^^^^^^^^^^^^^ reference [..] ActiveSupport# # ^^^^^^^^ definition [..] ActiveSupport#TestCase# +# enclosing_range 3:1-4:4 end class MyTest < ActiveSupport::TestCase # ^^^^^^ definition [..] MyTest# +# enclosing_range 6:1-29:4 # ^^^^^^^^^^^^^ reference [..] ActiveSupport# # ^^^^^^^^ reference [..] ActiveSupport#TestCase# extend T::Sig @@ -16,7 +18,9 @@ class MyTest < ActiveSupport::TestCase # ^^^^^^^ reference [..] T#Boolean. def assert(test) # ^^^^^^ definition [..] MyTest#assert(). +# enclosing_range 10:3-12:6 # ^^^^ definition local 1$2774883451 +# enclosing_range 10:3-12:6 test ? true : false end @@ -24,29 +28,36 @@ def assert(test) sig { params(args: T.untyped, block: T.nilable(T.proc.void)).void } def self.test(*args, &block) # ^^^^ definition [..] ``#test(). +# enclosing_range 16:3-17:6 end setup do # ^^^^^ definition [..] MyTest#``(). +# enclosing_range 19:3-21:6 @a = T.let(1, Integer) # ^^ definition [..] MyTest#`@a`. +# enclosing_range 19:3-21:6 # ^^^^^^^^^^^^^^^^^^^^^^ reference [..] MyTest#`@a`. # ^^^^^^^ definition local 1$2938098190 +# enclosing_range 19:3-21:6 # ^^^^^^^ reference [..] Integer# end test "valid method call" do # ^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#test_valid_method_call(). +# enclosing_range 23:3-24:6 end test "block is evaluated in the context of an instance" do # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] MyTest#test_block_is_evaluated_in_the_context_of_an_instance(). +# enclosing_range 26:3-28:6 assert true end end class NoMatchTest < ActiveSupport::TestCase # ^^^^^^^^^^^ definition [..] NoMatchTest# +# enclosing_range 31:1-39:4 # ^^^^^^^^^^^^^ reference [..] ActiveSupport# # ^^^^^^^^ reference [..] ActiveSupport#TestCase# extend T::Sig @@ -55,47 +66,59 @@ class NoMatchTest < ActiveSupport::TestCase sig { params(block: T.proc.void).void } def self.setup(&block); end # ^^^^^ definition [..] ``#setup(). +# enclosing_range 35:3-35:30 sig { params(block: T.proc.void).void } def self.teardown(&block); end # ^^^^^^^^ definition [..] ``#teardown(). +# enclosing_range 38:3-38:33 end class NoParentClass # ^^^^^^^^^^^^^ definition [..] NoParentClass# +# enclosing_range 41:1-64:4 extend T::Sig # ^^^^^^ reference [..] Kernel#extend(). sig { params(block: T.proc.void).void } def self.setup(&block); end # ^^^^^ definition [..] ``#setup(). +# enclosing_range 45:3-45:30 sig { params(block: T.proc.void).void } def self.teardown(&block); end # ^^^^^^^^ definition [..] ``#teardown(). +# enclosing_range 48:3-48:33 sig { params(a: T.untyped, b: T.untyped).void } def assert_equal(a, b); end # ^^^^^^^^^^^^ definition [..] NoParentClass#assert_equal(). +# enclosing_range 51:3-51:30 setup do # ^^^^^ definition [..] NoParentClass#``(). +# enclosing_range 53:3-55:6 @a = T.let(1, Integer) # ^^ definition [..] NoParentClass#`@a`. +# enclosing_range 53:3-55:6 # ^^^^^^^^^^^^^^^^^^^^^^ reference [..] NoParentClass#`@a`. # ^^^^^^^ definition local 1$2938098190 +# enclosing_range 53:3-55:6 # ^^^^^^^ reference [..] Integer# end test "it works" do # ^^^^^^^^^^ definition [..] NoParentClass#test_it_works(). +# enclosing_range 57:3-59:6 assert_equal 1, @a end teardown do # ^^^^^^^^ definition [..] NoParentClass#teardown(). +# enclosing_range 61:3-63:6 @a = 5 # ^^ definition [..] NoParentClass#`@a`. +# enclosing_range 61:3-63:6 # ^^^^^^ reference [..] NoParentClass#`@a`. end end diff --git a/test/scip/testdata/type_change.snapshot.rb b/test/scip/testdata/type_change.snapshot.rb index 5e5067bc0..6e3924724 100644 --- a/test/scip/testdata/type_change.snapshot.rb +++ b/test/scip/testdata/type_change.snapshot.rb @@ -3,12 +3,14 @@ def assign_different_branches(b) # ^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] Object#assign_different_branches(). +# enclosing_range 4:1-11:4 # documentation # | ```ruby # | sig { params(b: T.untyped).returns(T.untyped) } # | def assign_different_branches(b) # | ``` # ^ definition local 1$3317016627 +# enclosing_range 4:1-11:4 # documentation # | ```ruby # | b (T.untyped) @@ -16,6 +18,7 @@ def assign_different_branches(b) if b x = 1 # ^ definition local 2$3317016627 +# enclosing_range 4:1-11:4 # documentation # | ```ruby # | x (Integer(1)) @@ -23,6 +26,7 @@ def assign_different_branches(b) else x = nil # ^ definition local 2$3317016627 +# enclosing_range 4:1-11:4 # documentation # | ```ruby # | x (Integer(1)) @@ -33,18 +37,21 @@ def assign_different_branches(b) def change_different_branches(b) # ^^^^^^^^^^^^^^^^^^^^^^^^^ definition [..] Object#change_different_branches(). +# enclosing_range 13:1-21:4 # documentation # | ```ruby # | sig { params(b: T.untyped).returns(T.untyped) } # | def change_different_branches(b) # | ``` # ^ definition local 1$2122680152 +# enclosing_range 13:1-21:4 # documentation # | ```ruby # | b (T.untyped) # | ``` x = 'foo' # ^ definition local 2$2122680152 +# enclosing_range 13:1-21:4 # documentation # | ```ruby # | x (String("foo")) @@ -69,24 +76,28 @@ def change_different_branches(b) def loop_type_change(bs) # ^^^^^^^^^^^^^^^^ definition [..] Object#loop_type_change(). +# enclosing_range 23:1-34:4 # documentation # | ```ruby # | sig { params(bs: T.untyped).returns(T.untyped) } # | def loop_type_change(bs) # | ``` # ^^ definition local 1$4057334513 +# enclosing_range 23:1-34:4 # documentation # | ```ruby # | bs (T.untyped) # | ``` x = nil # ^ definition local 2$4057334513 +# enclosing_range 23:1-34:4 # documentation # | ```ruby # | x (NilClass) # | ``` for b in bs # ^ definition local 3$4057334513 +# enclosing_range 23:1-34:4 # documentation # | ```ruby # | b (T.untyped) @@ -126,12 +137,14 @@ def loop_type_change(bs) class C # ^ definition [..] C# +# enclosing_range 36:1-53:4 # documentation # | ```ruby # | class C # | ``` @k = nil # ^^ definition [..] ``#`@k`. +# enclosing_range 36:1-36:8 # documentation # | ```ruby # | @k (T.untyped) @@ -139,22 +152,27 @@ class C def change_type(b) # ^^^^^^^^^^^ definition [..] C#change_type(). +# enclosing_range 39:3-52:6 # documentation # | ```ruby # | sig { params(b: T.untyped).returns(T.untyped) } # | def change_type(b) # | ``` # ^ definition local 1$2066187318 +# enclosing_range 39:3-52:6 # documentation # | ```ruby # | b (T.untyped) # | ``` @f = nil # ^^ definition [..] C#`@f`. +# enclosing_range 39:3-52:6 @@g = nil # ^^^ definition [..] ``#`@@g`. +# enclosing_range 39:3-52:6 @k = nil # ^^ definition [..] C#`@k`. +# enclosing_range 39:3-52:6 if b @f = 1 # ^^ reference (write) [..] C#`@f`. @@ -209,6 +227,7 @@ def change_type(b) class D < C # ^ definition [..] D# +# enclosing_range 55:1-67:4 # documentation # | ```ruby # | class D < C @@ -216,12 +235,14 @@ class D < C # ^ reference [..] C# def change_type(b) # ^^^^^^^^^^^ definition [..] D#change_type(). +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | sig { params(b: T.untyped).returns(T.untyped) } # | def change_type(b) # | ``` # ^ definition local 1$2066187318 +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | b (T.untyped) @@ -231,6 +252,7 @@ def change_type(b) # ^ reference local 1$2066187318 @f = 1 # ^^ definition [..] D#`@f`. +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | @f (T.untyped) @@ -238,6 +260,7 @@ def change_type(b) # relation definition=[..] C#`@f`. @@g = 1 # ^^^ definition [..] ``#`@@g`. +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | @@g (T.untyped) @@ -245,6 +268,7 @@ def change_type(b) # relation definition=[..] ``#`@@g`. @k = 1 # ^^ definition [..] D#`@k`. +# enclosing_range 56:3-66:6 # relation definition=[..] C#`@k`. # ^^^^^^ reference [..] D#`@k`. # override_documentation @@ -255,6 +279,7 @@ def change_type(b) else @f = 'f' # ^^ definition [..] D#`@f`. +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | @f (T.untyped) @@ -262,6 +287,7 @@ def change_type(b) # relation definition=[..] C#`@f`. @@g = 'g' # ^^^ definition [..] ``#`@@g`. +# enclosing_range 56:3-66:6 # documentation # | ```ruby # | @@g (T.untyped) @@ -269,6 +295,7 @@ def change_type(b) # relation definition=[..] ``#`@@g`. @k = 'k' # ^^ definition [..] D#`@k`. +# enclosing_range 56:3-66:6 # relation definition=[..] C#`@k`. # ^^^^^^^^ reference [..] D#`@k`. # override_documentation diff --git a/test/scip/testdata/type_docs.snapshot.rb b/test/scip/testdata/type_docs.snapshot.rb index c67392425..3f14d93f5 100644 --- a/test/scip/testdata/type_docs.snapshot.rb +++ b/test/scip/testdata/type_docs.snapshot.rb @@ -3,6 +3,7 @@ module M # ^ definition [..] M# +# enclosing_range 4:1-13:4 # documentation # | ```ruby # | module M @@ -15,23 +16,27 @@ module M # ^^^^^^ reference [..] String# def js_add(x, y) # ^^^^^^ definition [..] M#js_add(). +# enclosing_range 8:3-12:6 # documentation # | ```ruby # | sig { params(x: Integer, y: String).returns(String) } # | def js_add(x, y) # | ``` # ^ definition local 1$1239553962 +# enclosing_range 8:3-12:6 # documentation # | ```ruby # | x (Integer) # | ``` # ^ definition local 2$1239553962 +# enclosing_range 8:3-12:6 # documentation # | ```ruby # | y (String) # | ``` xs = x.to_s # ^^ definition local 3$1239553962 +# enclosing_range 8:3-12:6 # documentation # | ```ruby # | xs (String) @@ -40,6 +45,7 @@ def js_add(x, y) # ^^^^ reference [..] Integer#to_s(). ret = xs + y # ^^^ definition local 4$1239553962 +# enclosing_range 8:3-12:6 # documentation # | ```ruby # | ret (String) diff --git a/test/scip/testdata/typed_false.snapshot.rb b/test/scip/testdata/typed_false.snapshot.rb index f7884ca89..3bc2e1794 100644 --- a/test/scip/testdata/typed_false.snapshot.rb +++ b/test/scip/testdata/typed_false.snapshot.rb @@ -2,16 +2,21 @@ class C # ^ definition [..] C# +# enclosing_range 3:1-11:4 def f # ^ definition [..] C#f(). +# enclosing_range 4:3-6:6 @f = 0 # ^^ definition [..] C#`@f`. +# enclosing_range 4:3-6:6 # ^^^^^^ reference [..] C#`@f`. end def g(x) # ^ definition [..] C#g(). +# enclosing_range 8:3-10:6 # ^ definition local 1$3792446982 +# enclosing_range 8:3-10:6 x + @f + f # ^ reference local 1$3792446982 # ^^ reference [..] C#`@f`. diff --git a/test/scip_test_runner.cc b/test/scip_test_runner.cc index 5e07681a9..4fa38980b 100644 --- a/test/scip_test_runner.cc +++ b/test/scip_test_runner.cc @@ -385,6 +385,11 @@ void formatSnapshot(const scip::Document &document, FormatOptions options, std:: << string(isDefinition ? "definition" : "reference") << ' ' << symbolRole << formatSymbol(occ.symbol()) << '\n'; + if (occ.enclosing_range_size() > 0) { + auto encRange = SCIPRange(occ.enclosing_range()); + out << lineStart << "enclosing_range " << encRange.toString() << '\n'; + } + auto printDocs = [&](auto docs, string header) -> void { if (!options.showDocs) return;