diff --git a/scip_indexer/SCIPIndexer.cc b/scip_indexer/SCIPIndexer.cc index e1c4acbca7..7fa037ea34 100644 --- a/scip_indexer/SCIPIndexer.cc +++ b/scip_indexer/SCIPIndexer.cc @@ -912,9 +912,17 @@ class CFGTraversal final { isMethodFileStaticInit || method == gs.lookupStaticInitForClass(namedSym.asSymbolRef().asClassOrModuleRef().data(gs)->owner, /*allowMissing*/ true); - ENFORCE(check); - auto status = this->scipState.saveDefinition(gs, file, namedSym, arg.loc); - ENFORCE(status.ok()); + absl::Status status; + string kind; + if (check) { + status = this->scipState.saveDefinition(gs, file, namedSym, arg.loc); + kind = "definition"; + } else { + status = this->scipState.saveReference(gs, file, namedSym, arg.loc, 0); + kind = "reference"; + } + ENFORCE(status.ok(), "failed to save {} for {}\ncontext:\ninstruction: {}\nlocation: {}\n", kind, + namedSym.showRaw(gs), binding.value.showRaw(gs, cfg), core::Loc(file, arg.loc).showRaw(gs)); return true; }; diff --git a/test/scip/testdata/multifile/typed-false-mix/def_untyped.rb b/test/scip/testdata/multifile/typed-false-mix/def_untyped.rb new file mode 100644 index 0000000000..7d4744202b --- /dev/null +++ b/test/scip/testdata/multifile/typed-false-mix/def_untyped.rb @@ -0,0 +1,4 @@ +# typed: false + +class C +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 new file mode 100644 index 0000000000..7745409085 --- /dev/null +++ b/test/scip/testdata/multifile/typed-false-mix/def_untyped.snapshot.rb @@ -0,0 +1,5 @@ + # typed: false + + class C +# ^ definition [..] C# + end diff --git a/test/scip/testdata/multifile/typed-false-mix/use_untyped.rb b/test/scip/testdata/multifile/typed-false-mix/use_untyped.rb new file mode 100644 index 0000000000..4266300759 --- /dev/null +++ b/test/scip/testdata/multifile/typed-false-mix/use_untyped.rb @@ -0,0 +1,8 @@ +# typed: true + +require 'def_untyped' + +module N + class D < C + end +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 new file mode 100644 index 0000000000..a1e2e79eaa --- /dev/null +++ b/test/scip/testdata/multifile/typed-false-mix/use_untyped.snapshot.rb @@ -0,0 +1,11 @@ + # typed: true + + require 'def_untyped' + + module N +# ^ definition [..] N# + class D < C +# ^ definition [..] N#D# +# ^ reference [..] C# + end + end