[hir] Add name field to Hook
Sathya Gunasekaran committed
Feb 14, 2023 at 23:07 UTC
1dfd51cdb074a141cdc2f82a312fd122db8ad44f
1 file changed
+12
-1
compiler/forget/src/Inference/InferReferenceEffects.ts
+12
-1
@@ -815,6 +815,7 @@ const HOOKS: Map<string, Hook> = new Map([
815
"useState",
816
{
817
kind: "State",
818
+ name: "useState",
819
effectKind: Effect.Freeze,
820
valueKind: ValueKind.Frozen,
821
},
@@ -823,6 +824,7 @@ const HOOKS: Map<string, Hook> = new Map([
824
"useRef",
825
{
826
kind: "Ref",
827
+ name: "useRef",
828
effectKind: Effect.Capture,
829
valueKind: ValueKind.Mutable,
830
},
@@ -831,6 +833,7 @@ const HOOKS: Map<string, Hook> = new Map([
833
"useFreeze",
834
{
835
kind: "Ref",
836
+ name: "useFreeze",
837
effectKind: Effect.Freeze,
838
valueKind: ValueKind.Frozen,
839
},
@@ -839,6 +842,7 @@ const HOOKS: Map<string, Hook> = new Map([
842
"useMemo",
843
{
844
kind: "Memo",
845
+ name: "useMemo",
846
effectKind: Effect.Freeze,
847
valueKind: ValueKind.Frozen,
848
},
@@ -847,6 +851,7 @@ const HOOKS: Map<string, Hook> = new Map([
851
"useCallback",
852
{
853
kind: "Memo",
854
+ name: "useCallback",
855
effectKind: Effect.Freeze,
856
valueKind: ValueKind.Frozen,
857
},
@@ -854,7 +859,12 @@ const HOOKS: Map<string, Hook> = new Map([
859
]);
860
861
type HookKind = "State" | "Ref" | "Custom" | "Memo";
857
-type Hook = { kind: HookKind; effectKind: Effect; valueKind: ValueKind };
862
+type Hook = {
863
+ kind: HookKind;
864
+ name: string;
865
+ effectKind: Effect;
866
+ valueKind: ValueKind;
867
+};
868
869
export function parseHookCall(place: Place): Hook | null {
870
const name = place.identifier.name;
@@ -867,6 +877,7 @@ export function parseHookCall(place: Place): Hook | null {
877
}
878
return {
879
kind: "Custom",
880
+ name: place.identifier.name ?? "",
881
effectKind: Effect.Mutate,
882
valueKind: ValueKind.Mutable,
883
};