Skip to content

Commit e04dd39

Browse files
Amith Bhat Nekkarefacebook-github-bot
authored andcommitted
Recreate Glass integration for go-to-def and find-ref
Summary: recreate Reviewed By: CatherineGasnier Differential Revision: D78538987 fbshipit-source-id: e148941f7eceadc28ce1663154447487e713aa8e
1 parent f9ea5e4 commit e04dd39

9 files changed

Lines changed: 82 additions & 7 deletions

File tree

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ SCHEMAS= \
160160
code \
161161
code_anglelang \
162162
code_buck \
163+
code_chef \
163164
code_csharp \
164165
code_cxx \
165166
code_dataswarm \
@@ -175,6 +176,7 @@ SCHEMAS= \
175176
codemarkup \
176177
codemarkup_anglelang \
177178
codemarkup_buck \
179+
codemarkup_chef \
178180
codemarkup_csharp \
179181
codemarkup_cxx \
180182
codemarkup_dataswarm \

glean.cabal.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,8 +711,10 @@ library schema
711711
Glean.Schema.Anglelang
712712
Glean.Schema.Buck
713713
Glean.Schema.Builtin
714+
Glean.Schema.Chef
714715
Glean.Schema.Code
715716
Glean.Schema.CodeAnglelang
717+
Glean.Schema.CodeChef
716718
Glean.Schema.CodeCsharp
717719
Glean.Schema.CodeCxx
718720
Glean.Schema.CodeDataswarm
@@ -726,6 +728,7 @@ library schema
726728
Glean.Schema.Codemarkup
727729
Glean.Schema.CodemarkupAnglelang
728730
Glean.Schema.CodemarkupBuck
731+
Glean.Schema.CodemarkupChef
729732
Glean.Schema.CodemarkupCsharp
730733
Glean.Schema.CodemarkupCxx
731734
Glean.Schema.CodemarkupDataswarm
@@ -774,6 +777,7 @@ library schema
774777
Glean.Schema.Builtin.Types
775778
Glean.Schema.CodeAnglelang.Types
776779
Glean.Schema.CodeBuck.Types
780+
Glean.Schema.CodeChef.Types
777781
Glean.Schema.CodeCsharp.Types
778782
Glean.Schema.CodeCxx.Types
779783
Glean.Schema.CodeDataswarm.Types
@@ -787,6 +791,7 @@ library schema
787791
Glean.Schema.CodeLsif.Types
788792
Glean.Schema.CodemarkupAnglelang.Types
789793
Glean.Schema.CodemarkupBuck.Types
794+
lean.Schema.CodemarkupChef.Types
790795
Glean.Schema.CodemarkupCsharp.Types
791796
Glean.Schema.CodemarkupCxx.Types
792797
Glean.Schema.CodemarkupDataswarm.Types
@@ -807,6 +812,7 @@ library schema
807812
Glean.Schema.CodeScip.Types
808813
Glean.Schema.CodeFbthrift.Types
809814
Glean.Schema.Code.Types
815+
Glean.Schema.Chef.Types
810816
Glean.Schema.Csharp.Types
811817
Glean.Schema.Cxx1.Types
812818
Glean.Schema.Dataswarm.Types

glean/glass/Glean/Glass/SymbolId.hs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ shortCodeTable :: [(Language,Text)]
180180
shortCodeTable =
181181
[ (Language_Angle , "angle")
182182
, (Language_Buck , "buck")
183+
, (Language_Chef, "chef")
183184
, (Language_CSharp, "cs")
184185
, (Language_Cpp, "cpp")
185186
, (Language_Dataswarm, "dataswarm")
@@ -222,6 +223,7 @@ entityLanguage :: Code.Entity -> Language
222223
entityLanguage e = case e of
223224
Code.Entity_angle{} -> Language_Angle
224225
Code.Entity_buck{} -> Language_Buck
226+
Code.Entity_chef{} -> Language_Chef
225227
Code.Entity_csharp{} -> Language_CSharp
226228
Code.Entity_cxx{} -> Language_Cpp
227229
Code.Entity_erlang{} -> Language_Erlang
@@ -256,6 +258,7 @@ languageToCodeLang :: Language -> Maybe Code.Language
256258
languageToCodeLang l = case l of
257259
Language_Angle -> Just Code.Language_Angle
258260
Language_Buck -> Just Code.Language_Buck
261+
Language_Chef -> Just Code.Language_Chef
259262
Language_CSharp -> Just Code.Language_CSharp
260263
Language_Cpp -> Just Code.Language_Cpp
261264
Language_Dataswarm -> Just Code.Language_Dataswarm

glean/glass/if/glass.thrift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@ enum Language {
562562
Yaml = 19,
563563
Swift = 20,
564564
Angle = 21,
565+
Chef = 22,
565566
}
566567

567568
// Kinds of definitions. E.g. for jump-to-declaration or jump-to-definition

glean/schema/source/code.angle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ schema code.24 {
44
import src
55
import code.anglelang
66
import code.buck
7+
import code.chef
78
import code.csharp
89
import code.cxx
910
import code.dataswarm
@@ -40,6 +41,7 @@ type Entity =
4041
graphql : code.graphql.Entity |
4142
dataswarm: code.dataswarm.Entity |
4243
angle: code.anglelang.Entity |
44+
chef: code.chef.Entity |
4345
}
4446

4547
type SymbolId =
@@ -56,7 +58,7 @@ type Language =
5658
enum {
5759
Cpp | PreProcessor | Java | Haskell | Python | Hack | JavaScript | Rust |
5860
Thrift | Buck | Erlang | FSharp | Go | Kotlin | OCaml | Scala | Swift |
59-
TypeScript | CSharp | GraphQL | Dataswarm | Yaml | Angle |
61+
TypeScript | CSharp | GraphQL | Dataswarm | Yaml | Angle | Chef |
6062
}
6163

6264
# entity tag to language id
@@ -82,7 +84,8 @@ predicate EntityLanguage:
8284
( { dataswarm = _ } = Entity; Dataswarm = Language ) |
8385
( { angle = _ } = Entity; Angle = Language ) |
8486
( { lsif = LSIF } = Entity; EntityLanguageLSIF { LSIF, Language } ) |
85-
( { scip = SCIP } = Entity; EntityLanguageSCIP { SCIP, Language } );
87+
( { scip = SCIP } = Entity; EntityLanguageSCIP { SCIP, Language } ) |
88+
( { chef = _ } = Entity; Chef = Language );
8689

8790
# (private) helper for the LSIF subset
8891
predicate EntityLanguageLSIF:
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright (c) Meta Platforms, Inc. and affiliates.
2+
3+
# For Glass integration
4+
schema code.chef.1 {
5+
import chef
6+
7+
type Entity =
8+
{
9+
symbol : chef.Symbol
10+
}
11+
}

glean/schema/source/codemarkup.angle

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ schema codemarkup.30 {
44
import src
55
import code.24
66
import codemarkup.buck
7+
import codemarkup.chef
78
import codemarkup.csharp
89
import codemarkup.cxx
910
import codemarkup.dataswarm
@@ -90,7 +91,7 @@ predicate EntityInfo:
9091
(codemarkup.lsif.EntityInfo { E, Info }; { lsif = E } = Entity) |
9192
(codemarkup.scip.EntityInfo { E, Info }; { scip = E } = Entity);
9293

93-
# Source code digests produced by unspecified hash function
94+
# Source code digests produced by unspecified hash function
9495
predicate FileEntityDigest:
9596
{ file: src.File
9697
, entity: code.Entity,
@@ -166,7 +167,9 @@ predicate ResolveLocation:
166167
(codemarkup.graphql.GraphQLResolveLocation { Location, E };
167168
{ graphql = E } = Entity) |
168169
(codemarkup.anglelang.AngleResolveLocation { Location, E };
169-
{ angle = E } = Entity);
170+
{ angle = E } = Entity) |
171+
(codemarkup.chef.ChefResolveLocation { Location, E };
172+
{ chef = E } = Entity);
170173

171174
predicate EntityLocation:
172175
{
@@ -329,8 +332,10 @@ predicate FileEntityXRefLocations:
329332
{ graphql = E } = Entity) |
330333
(codemarkup.dataswarm.DataswarmFileEntityXRefLocations { File, XRef, E };
331334
{ dataswarm = E } = Entity) |
332-
(codemarkup.anglelang.AngleFileEntityXRefLocations { File, XRef, E };
333-
{ angle = E } = Entity);
335+
(codemarkup.anglelang.AngleFileEntityXRefLocations { File, XRef, E };
336+
{ angle = E } = Entity) |
337+
(codemarkup.chef.ChefFileEntityXRefLocations { File, XRef, E };
338+
{ chef = E } = Entity);
334339

335340
# Xrefs without the target location. This can be useful in cases
336341
# where we don't have a target location, but we don't need it. This
@@ -420,6 +425,8 @@ predicate EntityReferences:
420425
{ flow = E } = Entity) |
421426
(codemarkup.python.PythonEntityUses { E, File, Span };
422427
{ python = E } = Entity) |
428+
(codemarkup.chef.ChefEntityUses { E, File, Span };
429+
{ chef = E } = Entity) |
423430
(codemarkup.cxx.CxxEntityUses { E, File, Span };
424431
{ cxx = E } = Entity) |
425432
(codemarkup.haskell.HaskellEntityUses { E, File, Span };
@@ -948,7 +955,7 @@ predicate IndexedFile: src.File
948955
# You should not use this, instead use codemarkup.IndexedFile
949956
predicate EntityDataAvailable: src.File
950957
File where
951-
src.File _ = File; # bind File as demanded by the schema consistency check
958+
src.File _ = File; # bind File as demanded by the schema consistency check
952959
# double negation is used to check for existence
953960
# (even if the Angle compiler could notice and optimize)
954961
!(!(codemarkup.FileEntityLocations { file = File } |
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
schema codemarkup.chef.1 {
2+
import src
3+
import chef
4+
import code
5+
import code.chef
6+
import codemarkup.types
7+
8+
9+
# Entity -> usage
10+
predicate ChefEntityUses:
11+
{
12+
target: code.chef.Entity,
13+
file: src.File,
14+
range: src.ByteSpan,
15+
}
16+
{{ symbol = Symbol }, File, Span } where
17+
chef.ReferencedAt { Symbol, { File, Span } }
18+
19+
predicate ChefResolveLocation:
20+
{
21+
location: codemarkup.types.Location,
22+
entity: code.chef.Entity,
23+
}
24+
{ { EntityName, File, {span = Span}, nothing }, { symbol = Symbol } } where
25+
chef.DefinedAt { Symbol,{File, Span} };
26+
Symbol.identifier = chef.Name EntityName
27+
28+
predicate ChefFileEntityXRefLocations:
29+
{
30+
file: src.File, # file where the reference is located
31+
xref: codemarkup.types.XRefLocation, # XRefs from source to target declaration or definition
32+
entity: code.chef.Entity, # actual entity that is being referenced
33+
} { File, {Location, {span = Span}}, { symbol = Symbol } } where
34+
chef.ReferencedAt { Symbol, { File, Span } };
35+
Symbol.identifier = chef.Name EntityName;
36+
chef.DefinedAt { Symbol, {TargetFile,TargetSpan} };
37+
Location = codemarkup.types.Location { EntityName, TargetFile, { span = TargetSpan }, nothing }
38+
39+
40+
}

glean/schema/source/github/schema.angle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ schema all.1 :
66
code,
77
code.anglelang,
88
code.buck,
9+
code.chef,
910
code.csharp,
1011
code.cxx,
1112
code.erlang,
@@ -20,6 +21,7 @@ schema all.1 :
2021
codemarkup,
2122
codemarkup.anglelang,
2223
codemarkup.buck,
24+
codemarkup.chef,
2325
codemarkup.csharp,
2426
codemarkup.cxx,
2527
codemarkup.erlang,

0 commit comments

Comments
 (0)