@@ -34,17 +34,17 @@ use crate::{
3434 InFiled , InferGuard , LuaMemberKey , VariadicType ,
3535} ;
3636
37- use super :: { member:: infer_raw_member_type, CacheEntry , CacheKey , LuaInferCache } ;
37+ use super :: { member:: infer_raw_member_type, CacheEntry , LuaInferCache } ;
3838
3939pub type InferResult = Result < LuaType , InferFailReason > ;
4040pub use infer_call:: InferCallFuncResult ;
4141
4242pub fn infer_expr ( db : & DbIndex , cache : & mut LuaInferCache , expr : LuaExpr ) -> InferResult {
4343 let syntax_id = expr. get_syntax_id ( ) ;
44- let key = CacheKey :: Expr ( syntax_id) ;
45- match cache. get ( & key) {
44+ let key = syntax_id;
45+ match cache. expr_cache . get ( & key) {
4646 Some ( cache) => match cache {
47- CacheEntry :: TypeCache ( ty) => return Ok ( ty. clone ( ) ) ,
47+ CacheEntry :: Cache ( ty) => return Ok ( ty. clone ( ) ) ,
4848 _ => return Err ( InferFailReason :: RecursiveInfer ) ,
4949 } ,
5050 None => { }
@@ -57,14 +57,13 @@ pub fn infer_expr(db: &DbIndex, cache: &mut LuaInferCache, expr: LuaExpr) -> Inf
5757 . get_type_index ( )
5858 . get_type_cache ( & in_filed_syntax_id. into ( ) )
5959 {
60- cache. add_cache (
61- & key,
62- CacheEntry :: TypeCache ( bind_type_cache. as_type ( ) . clone ( ) ) ,
63- ) ;
60+ cache
61+ . expr_cache
62+ . insert ( key, CacheEntry :: Cache ( bind_type_cache. as_type ( ) . clone ( ) ) ) ;
6463 return Ok ( bind_type_cache. as_type ( ) . clone ( ) ) ;
6564 }
6665
67- cache. ready_cache ( & key) ;
66+ cache. expr_cache . insert ( key, CacheEntry :: Ready ) ;
6867 let result_type = match expr {
6968 LuaExpr :: CallExpr ( call_expr) => infer_call_expr ( db, cache, call_expr) ,
7069 LuaExpr :: TableExpr ( table_expr) => infer_table_expr ( db, cache, table_expr) ,
@@ -82,21 +81,29 @@ pub fn infer_expr(db: &DbIndex, cache: &mut LuaInferCache, expr: LuaExpr) -> Inf
8281 } ;
8382
8483 match & result_type {
85- Ok ( result_type) => cache. add_cache ( & key, CacheEntry :: TypeCache ( result_type. clone ( ) ) ) ,
84+ Ok ( result_type) => {
85+ cache
86+ . expr_cache
87+ . insert ( key, CacheEntry :: Cache ( result_type. clone ( ) ) ) ;
88+ }
8689 Err ( InferFailReason :: None ) | Err ( InferFailReason :: RecursiveInfer ) => {
87- cache. add_cache ( & key, CacheEntry :: TypeCache ( LuaType :: Unknown ) ) ;
90+ cache
91+ . expr_cache
92+ . insert ( key, CacheEntry :: Cache ( LuaType :: Unknown ) ) ;
8893 return Ok ( LuaType :: Unknown ) ;
8994 }
9095 Err ( InferFailReason :: FieldNotFound ) => {
9196 if cache. get_config ( ) . analysis_phase . is_force ( ) {
92- cache. add_cache ( & key, CacheEntry :: TypeCache ( LuaType :: Nil ) ) ;
97+ cache
98+ . expr_cache
99+ . insert ( key, CacheEntry :: Cache ( LuaType :: Nil ) ) ;
93100 return Ok ( LuaType :: Nil ) ;
94101 } else {
95- cache. ready_cache ( & key) ;
102+ cache. expr_cache . insert ( key, CacheEntry :: Ready ) ;
96103 }
97104 }
98105 _ => {
99- cache. remove ( & key) ;
106+ cache. expr_cache . remove ( & key) ;
100107 }
101108 }
102109
0 commit comments